dein.nvimを使ったLanguageClient-neovimのインストールでハマった

neovimでLSPを使いたい!!ということで導入してみようとしたところ、LSPサーバーのクライアントインストールでハマったので記事を書きます。

LanguageClient-neovim

今回導入するプラグインはLanguageClient-neovim 以前まで補完で利用していたdeopleteと自動で連携してくれるのが便利。

とりあえずインストール

とりあえずドキュメントに従ってtomlファイルにプラグインの設定を記述

[[plugins]]
repo = 'autozimu/LanguageClient-neovim'
rev = 'next'
build = 'bash install.sh'
hook_add = '''
source ~/.config/nvim/plugins/LanguageClient-neovim.rc.vim
'''

nguageClient-neovim.rc.vimの内容はこんな感じ

set hidden

let g:LanguageClient_serverCommands = {
\ 'python': ['pyls'],
\ }

augroup LanguageClient_config
autocmd!
autocmd User LanguageClientStarted setlocal signcolumn=yes
autocmd User LanguageClientStopped setlocal signcolumn=auto
augroup END

let g:LanguageClient_autoStart = 1
nnoremap <Leader>lh :call LanguageClient_textDocument_hover()<CR>
nnoremap <Leader>ld :call LanguageClient_textDocument_definition()<CR>
nnoremap <Leader>lr :call LanguageClient_textDocument_rename()<CR>
nnoremap <Leader>lf :call LanguageClient_textDocument_formatting()<CR>

うまくインストールできていない

:CheckHealthをしてみたところ

health#LanguageClient#check
========================================================================
- ERROR: binary is missing or not executable. Try reinstall it with install.sh or install.ps1: /Users/masa/.cache/dein/repos/github.com/autozimu/LanguageClient-neovim_next/bin/languageclient
- OK:
- OK: Floating window is supported and will be used for hover

どうやらバイナリファイルが見つからないらしい。 dein.nvimを使ってプラグイン管理をしているのですが、どうやらうまくbuildしてくれていないっぽい。 :LanguageClientStartをやってみてもうまくいかないし、どうにも行かないので直接dein.nvimがインストールしている本体を見に行ってみる。

$ cd ~/.cache/dein/repos/github.com/autozimu/LanguageClient-neovim_next/
(LanguageClient-neovim_next)$ ls
Cargo.lock INSTALL.md Makefile TODO.md bin ci install.ps1 min-vimrc.vim rplugin tests
Cargo.toml LICENSE.txt README.md autoload build.rs doc install.sh plugin src
(LanguageClient-neovim_next)$ ls bin/
(LanguageClient-neovim_next)$

dein.nvimによるcloneはうまく行っているみたい。 revオプションでnextブランチの内容も引っ張ってこれているのにbuildオプションだけうまく動いていないのは謎。 直接binフォルダーを見てみたらバイナリファイルを探してみたところやはり作られていない。

対処法

もうよくわからないので直接install.shを動かしてしまう。

(LanguageClient-neovim_next)$ bash install.sh
Downloading bin/languageclient...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 632 0 632 0 0 1560 0 --:--:-- --:--:-- --:--:-- 1564
100 5428k 100 5428k 0 0 2437k 0 0:00:02 0:00:02 --:--:-- 3725k
(LanguageClient-neovim_next)$ ls bin/
languageclient

とりあえずバイナリファイルはできた。

これでneovimを起動して:CheckHealthしてみる。

health#LanguageClient#check
========================================================================
- OK: binary found: /Users/masa/.cache/dein/repos/github.com/autozimu/LanguageClient-neovim_next/bin/languageclient
- OK: languageclient 0.1.146 ec4af74cc389f802c3c43a660c963049848a8a93
- OK: Floating window is supported and will be used for hover

いけた!

補完もいい感じ。

とりあえずこれで進めるけど、どうしてdein.nvimのbuildオプションがうまく動かなかったんだろう。

About the author

日本の大学を休学してスノーボードするためにノルウェーで1年間生活。腰椎分離症になってしまったため、現在は様子を見ながらニセコで滑っています。プロでもなんでもないですが、行けるとこまで行ってやろうと毎日滑ってます