summaryrefslogtreecommitdiff
path: root/dot_config/nvim/fnl/plugins/lsp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--dot_config/nvim/fnl/plugins/lsp/capabilities.fnl1
-rw-r--r--dot_config/nvim/fnl/plugins/lsp/init.fnl33
2 files changed, 34 insertions, 0 deletions
diff --git a/dot_config/nvim/fnl/plugins/lsp/capabilities.fnl b/dot_config/nvim/fnl/plugins/lsp/capabilities.fnl
new file mode 100644
index 0000000..607602c
--- /dev/null
+++ b/dot_config/nvim/fnl/plugins/lsp/capabilities.fnl
@@ -0,0 +1 @@
+nil
diff --git a/dot_config/nvim/fnl/plugins/lsp/init.fnl b/dot_config/nvim/fnl/plugins/lsp/init.fnl
new file mode 100644
index 0000000..10685d2
--- /dev/null
+++ b/dot_config/nvim/fnl/plugins/lsp/init.fnl
@@ -0,0 +1,33 @@
+(import-macros {: tbl : recc} :toast.macros)
+
+(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 {}
+ :texlab {:filetypes [:tex :plaintex :bib :latex]}
+ :tsserver {:autostart false
+ :root_dir (plist :tsconfig.json :package.json)}
+ :zls {}})
+
+(local attach (require :plugins.lsp.attach))
+(local caps (require :plugins.lsp.capabilities))
+
+[(tbl :neovim/nvim-lspconfig &
+ :config (fn [_ opts]
+ (each [k v (pairs opts)]
+ (set v.on_attach (or attach v.on_attach))
+ (when (= :table (type caps))
+ (set v.capabilities (or v.capabilities caps)))
+ (let [s (. (require :lspconfig) k)
+ c (or v.cmd s.document_config.default_config.cmd)]
+ (when (not= 0 (vim.fn.executable (. c 1)))
+ (s.setup v)))))
+ :opts (fn []
+ (let [plist (fn [...]
+ (local p (recc :lspconfig.util :root_pattern ...))
+ #(p $))]
+ (gopts plist))))]