🦀
vimでrlsが動かない時
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_uriをCargo.tomlがあるディレクトリーに設定できたら勝ちということです。
解決方法
vimのg:lsp_settings_root_markersという変数を設定するのが1番簡単だと思います。お使いの.vimrcに以下を追加します。
let g:lsp_settings_root_markers = [
\ 'Cargo.toml',
\ '.git/',
\]
開いているファイルの親ディレクトリーを辿っていって、この変数の要素とマッチするファイルを見つけたらそこをroot_uriにするって感じだと思います。
Rust用のCargo.tomlと、他でも使う.git/とかを書いておけば問題ないと思います。
Discussion