From e7638bd348c09c27f7fbcba758a6cd8aeca4ce37 Mon Sep 17 00:00:00 2001 From: Jakub Dundalek Date: Wed, 13 Mar 2024 12:06:56 +0100 Subject: [PATCH] fix rust_analyzer --- lua/lazy-lsp/overrides.lua | 12 ++++++++++++ lua/lazy-lsp/servers.lua | 6 +++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lua/lazy-lsp/overrides.lua b/lua/lazy-lsp/overrides.lua index 176b6ba..ca6b9b2 100644 --- a/lua/lazy-lsp/overrides.lua +++ b/lua/lazy-lsp/overrides.lua @@ -30,4 +30,16 @@ return { perlnavigator = { cmd = { "perlnavigator", "--stdio" }, }, + rust_analyzer = { + root_dir = function(fname) + -- Default lspconfig root_dir detection uses cargo to try to detect workspace directory. + -- It fails if cargo is not available, fallback to a simpler detection. + if not vim.fn.executable("cargo") then + return util.root_pattern("Cargo.toml")(fname) + or util.root_pattern("rust-project.json")(fname) + or util.find_git_ancestor(fname) + end + return lspconfig.jdtls.document_config.default_config.root_dir(fname) + end + }, } diff --git a/lua/lazy-lsp/servers.lua b/lua/lazy-lsp/servers.lua index f004fc1..7f3d825 100644 --- a/lua/lazy-lsp/servers.lua +++ b/lua/lazy-lsp/servers.lua @@ -231,7 +231,11 @@ return { ruby_ls = "rubyPackages.ruby-lsp", ruff_lsp = "ruff-lsp", rune_languageserver = "rune-languageserver", - rust_analyzer = "rust-analyzer", + rust_analyzer = { + "rust-analyzer", + "cargo", + "rustfmt" + }, salt_ls = "", scheme_langserver = "", scry = "scry",