Skip to content

Latest commit

 

History

History
113 lines (88 loc) · 3.95 KB

README.md

File metadata and controls

113 lines (88 loc) · 3.95 KB

nvim-nim

Nim support for vim and advanced support for neovim. Still in heavy development.

About this fork

This fork is mainly for backing up my temporary fixes (a.k.a. dirty fixes) to some bugs that I discovered which cannot be fixed properly somehow at the time. Or some modifications that suit my need only, which does no apply to general audience.

This fork is NOT intended to be merged upstream.

Modifications of this fork

  • improved nimsuggest highlighting
    • do not highlight operators for avoiding ugliness
    • re-calculate identifier length to dirty fix nim-lang/nimsuggest#24
    • enable nimsuggest highlighting by default
  • modified hi links for syntax highlighting
    • hi link nimPragma Title
    • hi link nimPragmas Macro
  • use the indent file from zah/nim.vim

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)