nvim-nim
Nim support for vim and advanced support for neovim. Still in heavy development.
Features
- Asynchronous
- Up to date syntax highlighting
- Normal vim highlight
- More intelligent highlight with nimsuggest (experimental)
- Semantic highlighting for specified nim symbol kinds (experimental)
- Indentation
- Error checking
- Using
:make
- Neomake
- Using
- Project navigation with nimsuggest
- Jump to definition
- Get symbol information (type, module, file, signature, etc...)
- Find usages (file and/or project)
- Autocompletion
- Nimsuggest omnicompletion (still sync, deoplete/ycm incoming...)
- Autocomplete module names (experimental)
- IDE like stuff
- Jump to documentation in web
- Refactoring
- Rename symbol in file or project
- Outline listing all symbols in the module (like tagbar)
- Jump to outline symbol with unite (experimental)
- REPL (experimental)
- Open repl
- Send current buffer
- Send selection
Installation
This plugin doesn't work if zah's nim plugin is installed.
Dependencies
-
Linux (OS X and Windows untested at the moment)
-
Nim (0.13.0)
-
Nimsuggest (0.13.0)
-
- NOTE: Vim is not currently supporting async features
-
Optional: vim-operator-user for defining routine text object
-
Optional: unite-outline for jumping to symbols inside module
-
Optional: YouCompleteMe for jumping to symbols inside module
-
Optional: Neomake for compilation errors
Configuration
Easiest way to install this plugin is with a plugin manager:
Plug 'baabelfish/nvim-nim'
NeoBundle 'baabelfish/nvim-nim'
git clone https://github.com/baabelfish/nvim-nim ~/.vim/bundle/nvim-nim
Screenshots
Syntax highlighting
Autocompletion
Symbol information and module outline
Symbol usage listing
Caveats (Will be fixed asap)
- No support for main/project file yet
- Launching new nimsuggest for every completion
- Using stdio to communicate with nimsuggest
- Docstring is still missing
- Completion is a bit wonky with plain vim. Works well with YouCompleteMe
Planned features
- Debugger support
- Async autocomplete with deoplete (maybe a seperate plugin)