more neovim and lsp things
change
commit c4007cb1f29d942f49596985fe0ba720e3524114
author Alpha Chen <alpha@kejadlen.dev>
date
parent d284c2ba
diff --git a/.config/nvim/fnl/ftplugin/fennel.fnl b/.config/nvim/fnl/ftplugin/fennel.fnl
deleted file mode 100644
index a7be0234..00000000
--- a/.config/nvim/fnl/ftplugin/fennel.fnl
+++ /dev/null
@@ -1,22 +0,0 @@
-(set vim.bo.formatprg "fnlfmt /dev/stdin")
-
-;; https://github.com/rktjmp/hotpot.nvim/discussions/93#discussioncomment-4362209
-(vim.cmd "iabbrev <buffer> <expr> lambda v:lua.iab_lambda()")
-
-;; fnlfmt: skip
-(fn _G.iab_lambda []
-  (let [line (vim.fn.getline :.)
-        col (vim.fn.col :.)
-        ;; a b c \lambda
-        ;;       ^ check here (may not exist)
-        ;; but dont do anything if that under runs the first character
-        offset (- col (length :lambda) 1)]
-    (match [(< 0 offset) (string.sub line offset offset)]
-      ;; replace term codes so the expr actually runs backspace, not inserts the string
-      [true :\] (vim.api.nvim_replace_termcodes :<bs>λ true false true)
-      [false _] :lambda)))
-
-; (let [{: nvim_create_autocmd : nvim_command} vim.api]
-;   (nvim_create_autocmd :BufWritePre
-;                        {:callback #(nvim_command "normal migggqG`i")}))
-
diff --git a/.config/nvim/fnl/ftplugin/rust.fnl b/.config/nvim/fnl/ftplugin/rust.fnl
deleted file mode 100644
index 45e071a2..00000000
--- a/.config/nvim/fnl/ftplugin/rust.fnl
+++ /dev/null
@@ -1,2 +0,0 @@
-(set vim.g.ale_fixers ["rustfmt"])
-(set vim.g.ale_rust_cargo_use_clippy (vim.fn.executable "cargo-clippy"))
diff --git a/.config/nvim/fnl/init.fnl b/.config/nvim/fnl/init.fnl
index d4aafa11..f159542f 100644
--- a/.config/nvim/fnl/init.fnl
+++ b/.config/nvim/fnl/init.fnl
@@ -47,7 +47,7 @@
 ;; highlight
 (set vim.o.hlsearch true)
 (vim.keymap.set :n :<leader>/ ":nohlsearch<cr>")
-(let [{: nvim_command : nvim_create_autocmd : nvim_create_augroup} vim.api
+(let [{: nvim_create_autocmd : nvim_create_augroup} vim.api
       au-group (nvim_create_augroup :nvim-hl-on-yank {})
       cb #(vim.highlight.on_yank {:higroup :Search :timeout 100})]
   (nvim_create_autocmd :TextYankPost {:callback cb :group au-group}))
@@ -93,14 +93,6 @@
 (set vim.g.do_filetype_lua true)
 (vim.filetype.add {:extension {:ua :uiua}})
 
-;;; ftplugins in fennel
-
-;; https://github.com/rktjmp/hotpot.nvim/discussions/41#discussioncomment-3050564
-(let [{: nvim_create_autocmd : nvim_create_augroup} vim.api
-      au-group (nvim_create_augroup :hotpot-ft {})
-      cb #(pcall require (.. :ftplugin. (vim.fn.expand :<amatch>)))]
-  (nvim_create_autocmd :FileType {:callback cb :group au-group}))
-
 (require :fzf)
 (require :lsp)
 
diff --git a/.config/nvim/fnl/lsp.fnl b/.config/nvim/fnl/lsp.fnl
index 2e3e8fbb..37872340 100644
--- a/.config/nvim/fnl/lsp.fnl
+++ b/.config/nvim/fnl/lsp.fnl
@@ -6,7 +6,7 @@
 ;; $ rake init:local-nvim[DIR]
 
 (local lspconfig (require :lspconfig))
-(local {: iter : lsp} vim)
+(local {:api {:nvim_create_autocmd nvim-create-autocmd} : iter : lsp} vim)
 
 ; (lsp.set_log_level :debug)
 
@@ -17,20 +17,35 @@
         (lsp.with hover {:border :rounded})))
 
 ;; set up key mappings
-(let [{: nvim_create_autocmd} vim.api
+(let [{: keymap} vim
       opts {:noremap true :silent true}
       callback (fn []
-                 (vim.keymap.set :n :<leader>e vim.diagnostic.open_float opts)
-                 (vim.keymap.set :n :<leader>q vim.diagnostic.setloclist opts)
+                 (keymap.set :n :<leader>e vim.diagnostic.open_float opts)
+                 (keymap.set :n :<leader>q vim.diagnostic.setloclist opts)
                  ;; for back-compat - remove once muscle memory has been remapped gd to CTRL+]
-                 (vim.keymap.set :n :gd lsp.buf.definition opts)
+                 (keymap.set :n :gd lsp.buf.definition opts)
                  ;; switch out formatting a single line for formatting the whole file instead
-                 (vim.keymap.set :n :gqq #(lsp.buf.format {:async true}) opts))]
-  (nvim_create_autocmd :LspAttach {: callback}))
+                 (keymap.set :n :gqq #(lsp.buf.format {:async true}) opts))]
+  (nvim-create-autocmd :LspAttach {: callback}))
 
-(lspconfig.pyright.setup {})
+;;; basic lsps
+
+(lspconfig.ansiblels.setup {})
+(lspconfig.fennel_ls.setup {:settings {:fennel-ls {:extra-globals "hs spoon vim"}}})
+(lspconfig.ruff.setup {})
 (lspconfig.terraformls.setup {})
-(lspconfig.yamlls.setup {:settings {:yaml {:schemas {"https://json.schemastore.org/github-workflow.json" :/.github/workflows/*}}}})
+
+;;; pyright
+
+(lspconfig.pyright.setup {:autostart false})
+(nvim-create-autocmd :FileType
+                     {:pattern :python
+                      :callback #(if (= (vim.fn.executable :pyright) 1)
+                                     (vim.cmd :LspStart))})
+
+(let [{: setup} lspconfig.yamlls
+      schemas {"https://json.schemastore.org/github-workflow.json" :/.github/workflows/*}]
+  (setup {:settings {:yaml {: schemas}}}))
 
 ;;; efm-langserver
 
@@ -44,35 +59,22 @@
                                "$(realpath --relative-to . ${INPUT})"
                                :2>&1])
                         (: :join " ")) ["%f:%l: %m"])]
+      js []
       yaml [(fmt "yamlfmt -in")]]
   (lspconfig.efm.setup {:init_options {:documentFormatting true
                                        :hover true
                                        :documentSymbol true
                                        :codeAction true
                                        :completion true}
-                        :settings {:languages {: fennel : yaml}}
+                        :settings {:languages {: fennel
+                                               : js
+                                               :typescript js
+                                               :typescriptreact js
+                                               : yaml}
+                                   ;; since otherwise eslint goes haywire
+                                   :lintDebounce 1000000000}
                         :filetypes [:fennel :yaml]}))
 
-;                    :settings {:languages {: fennel
-;                                           : js
-;                                           :typescript js
-;                                           :typescriptreact js
-;                                           :vue [(fmt "prettier --stdin-filepath ${INPUT}")]
-;                                           :yaml [(fmt "yamlfmt -in")]}
-;                               :lintDebounce 1000000000}
-;                    :filetypes [:fennel
-;                                :javascript
-;                                :typescript
-;                                :typescriptreact
-;                                :vue
-;                                :yaml]}))
-
-; (fn on-attach [_client bufnr])
-
-;   (let [bufopts {:noremap true :silent true :buffer bufnr}]
-;     (vim.keymap.set :n :gd lsp.buf.definition bufopts) ; here for back-compat - remove once muscle memory has been remapped to CTRL+]
-;     (vim.keymap.set :n :gqq #(lsp.buf.format {:async true}) bufopts)))
-
 ; (fn on-attach-do [...]
 ;   (let [fns [...]] ; https://benaiah.me/posts/everything-you-didnt-want-to-know-about-lua-multivals/
 ;     (fn [client bufnr]
@@ -94,13 +96,6 @@
 ;   (let [{: setup} (. lspconfig lsp)]
 ;     (setup (or config {:on_attach on-attach}))))
 ;
-; ;; efm-langserver things
-; (local fmt #{:formatCommand $1 :formatStdin true})
-; (local lint #{:lintCommand $1 :lintFormats $2 :lintStdin true})
-;
-; (local fennel-lint
-;        "fennel --globals vim,hs,spoon --raw-errors $(realpath --relative-to . ${INPUT}) 2>&1")
-;
 ; (local eslint
 ;        {:lintCommand "eslint -f visualstudio --stdin --stdin-filename ${INPUT}"
 ;         :lintIgnoreExitCode true
@@ -109,40 +104,8 @@
 ;
 ; (local eslintd-fmt
 ;        (fmt "eslint_d --stdin --fix-to-stdout --stdin-filename=${INPUT}"))
-;
-; ;; setup efm
-; (let [fennel [(fmt "fnlfmt /dev/stdin") (lint fennel-lint ["%f:%l: %m"])]
-;       js [eslint eslintd-fmt]]
-;   (setup-lsp :efm {:on_attach (on-attach-do enable-fmt)
-;                    :init_options {:documentFormatting true
-;                                   :hover true
-;                                   :documentSymbol true
-;                                   :codeAction true
-;                                   :completion true}
-;                    :settings {:languages {: fennel
-;                                           : js
-;                                           :typescript js
-;                                           :typescriptreact js
-;                                           :vue [(fmt "prettier --stdin-filepath ${INPUT}")]
-;                                           :yaml [(fmt "yamlfmt -in")]}
-;                               :lintDebounce 1000000000}
-;                    :filetypes [:fennel
-;                                :javascript
-;                                :typescript
-;                                :typescriptreact
-;                                :vue
-;                                :yaml]}))
-;
-; (setup-lsp :ansiblels)
-; (setup-lsp :elmls)
-; (setup-lsp :fennel_ls {:settings {:fennel-ls {:extra-globals "hs spoon vim"}}})
-;
-; (setup-lsp :pyright
-;            {:on_attach on-attach
-;             :settings {:python {:analysis {:autoImportCompletions true}}}})
-;
+
 ; (setup-lsp :ruby_lsp)
-; (setup-lsp :ruff {:on_attach (on-attach-do enable-fmt)})
 ;
 ; (setup-lsp :rust_analyzer
 ;            {:on_attach on-attach
@@ -175,4 +138,4 @@
 ;   (let []
 ;     (setup-lsp :ruby_ls {:on_attach (on-attach-do request-diagnostics)})))
 
-{: setup-lsp}
+; {: setup-lsp}