iizukak の雑記

忘れる前に書いとこう

Nim 言語 + Neovim 設定備忘録

会社で Nim を使っている人がいて、これはかっこ良い言語だなぁと思ったので手元のエディタで書けるように設定をしました。結果、成功したような失敗したような…。最後に書いたような Language Server がクラッシュするような問題がありますが、自動補完や定義元ジャンプは効いている状態になりました。

環境

  • macOS Catalina: 10.15.7
  • Nim: 1.4.6
  • Neovim: v0.4.4

Nim 自体のインストール

Nim のインストールは choosenim というツールを使って行います。choosenim を使うと、複数のバージョンの Nim をソースコードからビルドしてインストールし、切り替えて使うことができます。僕の手元では、

$ curl https://nim-lang.org/choosenim/init.sh -sSf | sh

を実行して choosenim をインストールしました。

~/.zshrc に以下を追記しました。

export PATH=/Users/username/.nimble/bin:$PATH

Nim のバージョンを確認。

$ source ~/.zshrc
$ choosenim show
  Selected: 1.4.6
   Channel: stable
      Path: /Users/username/.choosenim/toolchains/nim-1.4.6
$ which nim
/Users/username/.nimble/bin/nim

Language Server

Nim のパッケージマネージャ nimble を使ってインストールします。

$ nimble install nimlsp
$ nimble list -i
ast_pattern_matching  [1.0.0]
jsonschema  [0.2.1]
nimlsp  [0.3.2]

これだけですが、 minlsp は Homebrew からインストールした Nim だと以下のエラーメッセージでインストールに失敗しました。Nim のソースコードが必要なのだと思われます。なので、Nim のインストールは choosenim を使いました。

Error: cannot open file: /usr/local/Cellar/nim/1.4.6/nim/nimsuggest/nimsuggest.nim

coc.nvim

僕は自動補完などに coc.nvim を使っています。coc.nvim から nimlsp を使うために、以下の設定を :CocCoinfig で書きました。

     "nim": {
       "command": "nimlsp",
       "filetypes": ["nim"]
     }

ここまでくると、自動補完が効くようになりますが、Syntax Highlight はまだ効きません。というのも、nimlsp はまだ Syntax Highlight に対応していないからです。

Syntax Highlight

alaviss/nim.nvim を使います。インストールは Vim のパッケージマネージャによってそれぞれですが、僕は dein を使っているので、 init.vim に、

call dein#add('alaviss/nim.nvim')

を追記しました。

quickrun

vim-quickrun は特に設定なく動作しました。デフォルトで Nim に対応している模様。

問題

下手にコードを書くとコンパイルエラーになるのですが、コンパイルエラーすると Language Server がクラッシュするようです。例えば、

const x = readLine(stdin)

はコンパイルエラーになりますが、これを入力して保存すると、

[coc.nvim] The "languageserver.nim" server crashed 5 times in the last 3 minutes. The server will not be restarted.

というエラーが出ます。エラーを修正して CocRestart すると直りますが…うーむ。