/nvim-nim

Vim support for nim.

Primary LanguageVim scriptMIT LicenseMIT

nvim-nim Build Status

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
  • 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)

  • Neovim (1.2) or Vim (7.4)

    • 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:

vim-plug

Plug 'baabelfish/nvim-nim'

neobundle

NeoBundle 'baabelfish/nvim-nim'

pathogen

git clone https://github.com/baabelfish/nvim-nim ~/.vim/bundle/nvim-nim

Screenshots

Syntax highlighting

Syntax highlighting

Autocompletion

Autocomplete

Symbol information and module outline

Definition

Symbol usage listing

Usages

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)