diff options
Diffstat (limited to '')
| -rw-r--r-- | dot_config/nvim/fnl/plugins/lsp.fnl (renamed from dot_config/nvim/fnl/plugins/lsp/attach.fnl) | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/dot_config/nvim/fnl/plugins/lsp/attach.fnl b/dot_config/nvim/fnl/plugins/lsp.fnl index ed2eb2d..963c1b7 100644 --- a/dot_config/nvim/fnl/plugins/lsp/attach.fnl +++ b/dot_config/nvim/fnl/plugins/lsp.fnl @@ -1,13 +1,31 @@ (import-macros {:mixed-table · : recc} :toast.macros) (local {: assoc : map} (require :toast.core)) (local {: insert} (require :toast.table)) +(local {: executable?} (require :toast.nvim)) -(fn [c b] +(fn gopts [plist] + {:clangd {} + :clojure_lsp {:root_dir (plist :project.clj :deps.edn :bb.edn :build.boot :shadow-cljs.edn :.git)} + :denols {:autostart false + :root_dir (plist :deno.json :deno.jsonc)} + :gopls {} + :ltex {} + :lua_ls {} + :pyright {} + :ruff {:cmd [:ruff :server :--preview]} + :texlab {:filetypes [:tex :plaintex :bib :latex]} + :tsserver {:autostart false + :root_dir (plist :tsconfig.json :package.json)} + :zls {}}) + +; default on-attach +(fn attach [c b] (let [lsp vim.lsp lbf lsp.buf - ll [(· "" & :group :+lsp) + ll [;groups + (· "" & :group :+lsp) (· :w & :group :+workspace) - + ; actions (· :D lbf.declaration & :desc "goto declaration") (· :d lbf.definition & :desc "goto definition") (· :k lbf.hover & :desc "hover") @@ -16,12 +34,7 @@ (· :t lbf.type_definition & :desc "goto type definition") (· :r lbf.rename & :desc "rename") (· :c lbf.code_action & :desc "code action") - (· :R lbf.reference & :desc "list references") - - (· :wa lbf.add_workspace_folder & :desc "add folder") - (· :wr lbf.remove_workspace_folder & :desc "remove folder") - (· :wl #(vim.print (lbf.list_workspace_folders))) & - :desc "list folders"] + (· :R lbf.reference & :desc "list references")] ll (map #(assoc $ 1 (.. :<localleader><localleader> (. $ 1))) ll)] (vim.api.nvim_buf_set_option b :omnifunc :v:lua.vim.lsp.omnifunc) (recc :which-key :add @@ -29,3 +42,13 @@ (· :<leader>F #(vim.lsp.buf.format {:async true}) & :desc "run format")) & :buffer b)))) + +[(· :neovim/nvim-lspconfig & + :config (fn [_ opts] + (each [k v (pairs opts)] + (let [s (. (require :lspconfig) k) + c (or v.cmd s.document_config.default_config.cmd) + att (or v.on_attach attach)] + (when (executable? (. c 1)) + (s.setup (assoc v :on_attach att)))))) + :opts #(gopts (partial recc :lspconfig.util :root_pattern)))] |
