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オプションがうまく動かなかったんだろう。