Rustを書く際にIntellij IDEA使ってるけど、Jetbrainsは自前で補完とか作ってるので rlsを試してみたくてneovimにLSPのクライアントをインストールしようと思ったらハマったのでメモ
インストールまではできてる!って人は原因と解決法まで読み飛ばして欲しい
使ったもの
インストール手順
neovim, dein.vimについては他にいっぱいあるので省略するとして、LanguageClient-neovimのインストールから
(neovim, dein.vimは動作することを前提に書いていきます)
インストールについても基本的には書いてあるインストールをdein.tomlに書くだけ
# Rustで使う前提なので記事とは関係ないけど [[plugins]] repo = 'rust-lang/rust.vim' on_ft = 'rust' [[plugins]] repo = 'autozimu/LanguageClient-neovim' rev = 'next' build = 'bash install.sh'
番外: RustのLSPインストール
nightly使ってる記事が多いけど、どっかのタイミングからstableで使えるようになったらしい
必要なものをrustup
を使ってインストールしておく
rustup component add rls-preview rust-analysis rust-src
起動の設定とか
LanguageClient-neovimのReadmeを参考に設定した
イマイチ設定周りわかってないので、とりあえずrlsの起動引数だけ変更して*1ほとんどそのままinit.vim
に書いた
ちゃんとやるならdein.vimのhook_source
に書いたりするほうがいいのかも
" Required for operations modifying multiple buffers like rename. set hidden let g:LanguageClient_serverCommands = { \ 'rust': ['rustup', 'run', 'stable', 'rls'], \ 'javascript': ['javascript-typescript-stdio'], \ } nnoremap <silent> K :call LanguageClient_textDocument_hover()<CR> nnoremap <silent> gd :call LanguageClient_textDocument_definition()<CR> nnoremap <silent> <F2> :call LanguageClient_textDocument_rename()<CR>
LanguageClient-neovim/INSTALL.md at next · autozimu/LanguageClient-neovim · GitHub
以上の設定で動くはずだった
動くはずだったんですよ書いてること見てる限りだと
いざ適当にcargo new --bin hoge
みたいなのしてnvim src/main.rs
するとなんかエラー出てる
LanguageClient: Not executable! 続けるにはENTERを押すかコマンドを入力してください
起動に失敗してるので:LanguageClientStart
とかできない
原因と解決法
dein.vimでインストールしたLanguageClient-neovimのディレクトリに行ってbin
ディレクトリの中を見てみると
bash install.sh
でビルドしたlanguageclient
という実行ファイルに 実行権限がついてない
.rw-rw-r-- 8.0M yuzu 17 1月 20:16 languageclient
試しに実行権限与えてみたらちゃんと動作した
chown u+x languageclient
まとめ
なんかみんな動いてるっぽいし自分だけなのかと思ったけど
buildしてるのcargoだし普通に実行権限ついてないのがおかしい気がしてきた
(適当にプロジェクト作ってビルドしたら実行権限ついてるし)
とりあえず2日くらい消費してしまったけど動いてよかった
*1:nightlyだった部分をstableに