fix LSPs, add c# support
This commit is contained in:
+24
-8
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user