From 3c661562f42ad87e1aefaad163c2df6d14ab5a32 Mon Sep 17 00:00:00 2001 From: Mora Unie Youer Date: Sun, 30 Mar 2025 13:58:24 +0300 Subject: feat: add `rust-analyzer` as Rust LSP --- flake.nix | 8 ++++++++ lsp/rust-analyzer.lua | 26 ++++++++++++++++++++++++++ lua/config/lsp.lua | 1 + lua/config/plugins/formatting.lua | 1 + 4 files changed, 36 insertions(+) create mode 100644 lsp/rust-analyzer.lua diff --git a/flake.nix b/flake.nix index a919ace..207a8a1 100644 --- a/flake.nix +++ b/flake.nix @@ -129,11 +129,19 @@ lua-language-server stylua ]; + nix = [ nix-doc nixd nixfmt-rfc-style ]; + + rust = [ + # NOTE: required to find project root + # NOTE: for now unused, so commented out + # cargo + rust-analyzer + ]; }; }; diff --git a/lsp/rust-analyzer.lua b/lsp/rust-analyzer.lua new file mode 100644 index 0000000..51f5037 --- /dev/null +++ b/lsp/rust-analyzer.lua @@ -0,0 +1,26 @@ +return { + cmd = { "rust-analyzer" }, + root_markers = { "Cargo.toml" }, + filetypes = { "rust" }, + + settings = { + ["rust-analyzer"] = { + checkOnSave = { command = "clippy" }, + + diagnostics = { + enable = true, + experimental = { enable = true }, + }, + + inlayHints = { + enable = true, + bindingModeHints = { enable = false }, + closingBraceHints = { minLines = 10 }, + closureReturnTypeHints = { enable = "with_block" }, + discriminantHints = { enable = "fieldless" }, + lifetimeElisionHints = { enable = "skip_trivial" }, + typeHints = { hideClosureInitialization = false }, + }, + }, + }, +} diff --git a/lua/config/lsp.lua b/lua/config/lsp.lua index 37e3b6f..6d4a680 100644 --- a/lua/config/lsp.lua +++ b/lua/config/lsp.lua @@ -1,2 +1,3 @@ vim.lsp.enable("lua-language-server") vim.lsp.enable("nixd") +vim.lsp.enable("rust-analyzer") diff --git a/lua/config/plugins/formatting.lua b/lua/config/plugins/formatting.lua index 8a4c6ab..9563905 100644 --- a/lua/config/plugins/formatting.lua +++ b/lua/config/plugins/formatting.lua @@ -9,6 +9,7 @@ return { formatters_by_ft = { lua = { "stylua" }, nix = { "nixfmt" }, + rust = { "rustfmt", lsp_format = "fallback" }, }, }) -- cgit v1.2.3-70-g09d2