🦀
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