🦀

vimでrlsが動かない時

2020/10/23に公開

vim-lspとvim-lsp-settingsを使ってRustを書いているとたまにrlsが動いてくれない時があります。
例えば、Cargo.tomlよりも上のディレクトリーでgit管理している時とか。
↓こんな感じで

project/
| - .git/
| - somefiles/
| - rust-project/
  | - Cargo.toml
  | - src/

原因

vim-lsp-settings内のroot_uriという設定が.gitのあるディレクトリーを指しているのが原因です。
root_uriの指すディレクトリー直下Cargo.tomlが無いと怒られてしまうみたいです。
つまり、root_uriCargo.tomlがあるディレクトリーに設定できたら勝ちということです。

解決方法

vimのg:lsp_settings_root_markersという変数を設定するのが1番簡単だと思います。お使いの.vimrcに以下を追加します。

let g:lsp_settings_root_markers = [
\	'Cargo.toml',
\	'.git/',
\]

開いているファイルの親ディレクトリーを辿っていって、この変数の要素とマッチするファイルを見つけたらそこをroot_uriにするって感じだと思います。
Rust用のCargo.tomlと、他でも使う.git/とかを書いておけば問題ないと思います。

参考

mattn/vim-lsp-settings#Configurations

Discussion