diff options
| author | Michael Lingelbach <m.j.lbach@gmail.com> | 2021-01-11 00:40:06 -0800 |
|---|---|---|
| committer | Michael Lingelbach <m.j.lbach@gmail.com> | 2021-01-11 01:00:55 -0800 |
| commit | 0f90e9fbd3f2546f90e9b515fd44522e59916849 (patch) | |
| tree | 3efa383d1a8f7e11cbcf33dffb07f2350481e3f4 /lua | |
| parent | Merge pull request #655 from ckipp01/metals (diff) | |
| download | nvim-lspconfig-0f90e9fbd3f2546f90e9b515fd44522e59916849.tar nvim-lspconfig-0f90e9fbd3f2546f90e9b515fd44522e59916849.tar.gz nvim-lspconfig-0f90e9fbd3f2546f90e9b515fd44522e59916849.tar.bz2 nvim-lspconfig-0f90e9fbd3f2546f90e9b515fd44522e59916849.tar.lz nvim-lspconfig-0f90e9fbd3f2546f90e9b515fd44522e59916849.tar.xz nvim-lspconfig-0f90e9fbd3f2546f90e9b515fd44522e59916849.tar.zst nvim-lspconfig-0f90e9fbd3f2546f90e9b515fd44522e59916849.zip | |
rust_analyzer: read project root from cargo
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/lspconfig/rust_analyzer.lua | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lua/lspconfig/rust_analyzer.lua b/lua/lspconfig/rust_analyzer.lua index 1ff1370a..6ba704b3 100644 --- a/lua/lspconfig/rust_analyzer.lua +++ b/lua/lspconfig/rust_analyzer.lua @@ -6,9 +6,15 @@ configs.rust_analyzer = { cmd = {"rust-analyzer"}; filetypes = {"rust"}; root_dir = function(fname) - return util.find_git_ancestor(fname) or - util.root_pattern("rust-project.json")(fname) or - util.root_pattern("Cargo.toml")(fname) + local cargo_metadata = vim.fn.system("cargo metadata --format-version 1") + local cargo_root = nil + if vim.v.shell_handler == 0 then + cargo_root = vim.fn.json_decode(cargo_metadata)["workspace_root"] + end + return cargo_root or + util.find_git_ancestor(fname) or + util.root_pattern("rust-project.json")(fname) or + util.root_pattern("Cargo.toml")(fname) end; settings = { ["rust-analyzer"] = {} |
