more neovim and lsp things
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}