fix LSPs, add c# support

This commit is contained in:
2026-05-07 21:07:39 -04:00
parent fa689ac580
commit 170c4bc3b4
5 changed files with 62 additions and 29 deletions
+24 -8
View File
@@ -80,15 +80,31 @@
:settings {:Lua {:runtime {:version :LuaJIT}
:workspace {:library (vim.api.nvim_get_runtime_file "" true)}}}})
(vim.lsp.config :fennel_language_server
{:cmd [:fennel-language-server]
(vim.lsp.config :fennel_ls
{:cmd [:fennel-ls]
:filetypes [:fennel]
:root_markers [:.nfnl.fnl :fnl :.git]
:settings {:fennel {:workspace {:library (vim.api.nvim_get_runtime_file "" true)}
:diagnostics {:globals [:vim]}}}})
;; Enable the configured LSP servers
(vim.lsp.enable [:clojure_lsp :lua_ls :fennel_language_server])
;; rust-analyzer: prefer nightly toolchain (version-matched to proc-macro server),
;; then PATH, then Mason
(local rust-analyzer-bin
(let [nightly-ra (.. (vim.fn.expand "~") "/.rustup/toolchains/nightly-aarch64-apple-darwin/bin/rust-analyzer")]
(if (= (vim.fn.executable nightly-ra) 1)
nightly-ra
(= (vim.fn.executable "rust-analyzer") 1)
"rust-analyzer"
(.. (vim.fn.stdpath "data") "/mason/bin/rust-analyzer"))))
(vim.lsp.config :rust_analyzer
{:cmd [rust-analyzer-bin]
:filetypes [:rust]
:root_markers [:Cargo.toml :Cargo.lock :.git]
:settings {:rust-analyzer {:checkOnSave {:command "clippy"}}}})
;; Enable the configured LSP servers (roslyn handled by roslyn.nvim plugin)
(vim.lsp.enable [:clojure_lsp :lua_ls :fennel_ls :rust_analyzer])
;; LSP keymaps (set on attach)
(autocmd "LspAttach"
@@ -107,8 +123,8 @@
opts)
(keymap :n "<leader>rn" vim.lsp.buf.rename opts)
(keymap :n "<leader>ca" vim.lsp.buf.code_action opts)
(keymap :n "[d" (fn [] (vim.diagnostic.jump {:count -1})) opts)
(keymap :n "]d" (fn [] (vim.diagnostic.jump {:count 1})) opts)
(keymap :n "[d" (fn [] (vim.diagnostic.jump {:count -1 :float true})) opts)
(keymap :n "]d" (fn [] (vim.diagnostic.jump {:count 1 :float true})) opts)
(keymap :n "<leader>e" vim.diagnostic.open_float opts)
(keymap :n "<leader>F" vim.lsp.buf.format opts))})
@@ -123,9 +139,9 @@
(fn [opts]
(if (and opts.args (> (length opts.args) 0))
(vim.lsp.enable opts.args)
(vim.lsp.enable [:clojure_lsp :lua_ls :fennel_language_server])))
(vim.lsp.enable [:clojure_lsp :lua_ls :fennel_ls :rust_analyzer])))
{:nargs "?"
:complete (fn [] [:clojure_lsp :lua_ls :fennel_language_server])
:complete (fn [] [:clojure_lsp :lua_ls :fennel_ls :rust_analyzer])
:desc "Start LSP server"})
(usercmd "LspStop"