diff --git a/.config/nvim/fnl/init.fnl b/.config/nvim/fnl/init.fnl index 5414d39..66b0895 100644 --- a/.config/nvim/fnl/init.fnl +++ b/.config/nvim/fnl/init.fnl @@ -1,43 +1,35 @@ (vim.cmd "colorscheme paramount") (set vim.opt.list true) -(set vim.opt.listchars {:tab "\\u21e5 " - :trail "\\u2423" - :extends "\\u21c9" + +;; fnlfmt: skip +(set vim.opt.listchars {:tab "\\u21e5 " + :trail "\\u2423" + :extends "\\u21c9" :precedes "\\u21c7" - :nbsp "\\u00b7"}) + :nbsp "\\u00b7"}) (set vim.opt.number true) (set vim.g.mapleader " ") -; (let [{: keymap} vim -; nnoremap #(keymap.set :n $1 $2 {:noremap true}) -; inoremap #(keymap.set :i $1 $2 {:noremap true})] - -; ; clear hl -; (nnoremap :/ ":nohlsearch") - -; ; quick save -; (nnoremap "\\\\" ":write") -; (inoremap "\\\\" ":write") +;; move the cursor to the first non-blank character with H +(vim.keymap.set :n :H "^" {:noremap true}) -; ; fzf -; (nnoremap :b ":Buffers") -; (nnoremap :f ":Files") -; (nnoremap :t ":Tags")) +;; quick save (vim.keymap.set :n "\\\\" ":write" {:noremap true}) (vim.keymap.set :i "\\\\" ":write" {:noremap true}) +;; clear highlight (vim.keymap.set :n :/ ":nohlsearch" {:noremap true}) -;; restore cursor location -;; +;;; restore cursor location + ;; https://github.com/vim/vim/blob/master/runtime/defaults.vim#L108 (let [{: nvim_command : nvim_create_autocmd : nvim_create_augroup} vim.api au-group (nvim_create_augroup :nvim-startup {}) cb (fn [] - (when (and (>= (vim.fn.line "'\"") 1) + (when (and (< 0 (vim.fn.line "'\"")) (<= (vim.fn.line "'\"") (vim.fn.line "$")) (not (string.find vim.bo.filetype :commit))) (nvim_command "normal! g`\"")))] @@ -49,62 +41,74 @@ (nvim_command "filetype plugin indent on") (nvim_create_autocmd :BufReadPost {:callback cb :group au-group})) -;; ftplugins in fennel -;; +;;; 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 :)))] (nvim_create_autocmd :FileType {:callback cb :group au-group})) -;; ale - -(set vim.g.ale_fix_on_save 1) -(set vim.g.ale_floating_preview 1) - -;; fzf - -(when (vim.fn.executable :fzf) - (when (vim.fn.isdirectory :/opt/homebrew/opt/fzf/plugin) - (vim.opt.rtp:append :/opt/homebrew/opt/fzf)) - (vim.keymap.set :n :b ":Buffers" {:noremap true}) - (vim.keymap.set :n :f ":Files" {:noremap true}) - (vim.keymap.set :n :t ":Tags" {:noremap true}) - - ; https://coreyja.com/vim-spelling-suggestions-fzf/ - (let [{: nvim_command : nvim_create_user_command} vim.api - {: expand : spellsuggest} vim.fn - fzf-run (. vim.fn "fzf#run") - sink #(nvim_command (.. "normal! \"_ciw" $1)) - fzf-spell #(fzf-run {:source (spellsuggest (expand :)) - : sink - :window {:width 0.9 :height 0.6}})] - (nvim_create_user_command :FzfSpell fzf-spell {}) - (vim.keymap.set :n :z= ":FzfSpell"))) - -;; lspconfig -; (let [opts {:noremap true :silent true}] -; (vim.keymap.set :n :e vim.diagnostic.open_float opts) -; (vim.keymap.set :n "[d" vim.diagnostic.goto_prev opts) -; (vim.keymap.set :n "]d" vim.diagnostic.goto_next opts) -; (vim.keymap.set :n :q vim.diagnostic.setloclist opts)) - -; (fn on_attach [client bufnr] -; (vim.api.nvim_buf_set_option bufnr :omnifunc "v:lua.vim.lsp.omnifunc") -; (let [bufopts {:noremap true :silent true :buffer bufnr}] -; (vim.keymap.set :n :gD vim.lsp.buf.declaration bufopts) -; (vim.keymap.set :n :gd vim.lsp.buf.definition bufopts) -; (vim.keymap.set :n :K vim.lsp.buf.hover bufopts) -; (vim.keymap.set :n :gi vim.lsp.buf.implementation bufopts) -; (vim.keymap.set :n : vim.lsp.buf.signature_help bufopts) -; (vim.keymap.set :n :wa vim.lsp.buf.add_workspace_folder bufopts) -; (vim.keymap.set :n :wr vim.lsp.buf.remove_workspace_folder bufopts) -; (vim.keymap.set :n :wl -; (fn [] -; (print (vim.inspect (vim.lsp.buf.list_workspace_folders)))) -; bufopts) -; (vim.keymap.set :n :D vim.lsp.buf.type_definition bufopts) -; (vim.keymap.set :n :rn vim.lsp.buf.rename bufopts) -; (vim.keymap.set :n :ca vim.lsp.buf.code_action bufopts) -; (vim.keymap.set :n :gr vim.lsp.buf.references bufopts) -; (vim.keymap.set :n :f vim.lsp.buf.formatting bufopts))) +;; (require :ale) +(require :fzf) + +;;; lint + +(let [lint (require :lint) + {: linters :linters_by_ft linters-by-ft :try_lint try-lint} lint + {:fennel fennel-linter} linters + {: nvim_create_autocmd} vim.api] + (tset linters-by-ft :fennel [:fennel]) + (tset fennel-linter :globals [:vim]) ; hack + (nvim_create_autocmd :BufWritePost {:callback #(try-lint)})) + +;;; lspconfig + +;; (vim.lsp.set_log_level :debug) + +(let [opts {:noremap true :silent true}] + (vim.keymap.set :n :e vim.diagnostic.open_float opts) + (vim.keymap.set :n "[d" vim.diagnostic.goto_prev opts) + (vim.keymap.set :n "]d" vim.diagnostic.goto_next opts) + (vim.keymap.set :n :q vim.diagnostic.setloclist opts)) + +(fn on_attach [client bufnr] + (vim.api.nvim_buf_set_option bufnr :omnifunc "v:lua.vim.lsp.omnifunc") + (let [bufopts {:noremap true :silent true :buffer bufnr}] + (vim.keymap.set :n :gD vim.lsp.buf.declaration bufopts) + (vim.keymap.set :n :gd vim.lsp.buf.definition bufopts) + (vim.keymap.set :n :K vim.lsp.buf.hover bufopts) + (vim.keymap.set :n :gi vim.lsp.buf.implementation bufopts) + (vim.keymap.set :n : vim.lsp.buf.signature_help bufopts) + (vim.keymap.set :n :wa vim.lsp.buf.add_workspace_folder bufopts) + (vim.keymap.set :n :wr vim.lsp.buf.remove_workspace_folder bufopts) + (vim.keymap.set :n :wl + (fn [] + (print (vim.inspect (vim.lsp.buf.list_workspace_folders)))) + bufopts) + (vim.keymap.set :n :D vim.lsp.buf.type_definition bufopts) + (vim.keymap.set :n :rn vim.lsp.buf.rename bufopts) + (vim.keymap.set :n :ca vim.lsp.buf.code_action bufopts) + (vim.keymap.set :n :gr vim.lsp.buf.references bufopts) + (vim.keymap.set :n :f vim.lsp.buf.formatting bufopts))) + +(let [{: rust_analyzer} (require :lspconfig)] + ((. rust_analyzer :setup) {: on_attach + :settings {:rust-analyzer {:checkOnSave {:command :clippy}}}})) + +;;; netrw + +(set vim.g.netrw_fastbrowse 0) + +; https://github.com/tpope/vim-vinegar/issues/13 +(set vim.g.netrw_home "~/.nvim_tmp") + +;;; generate help files + +; Load all plugins now. +; Plugins need to be added to runtimepath before helptags can be generated. +(vim.api.nvim_command :packloadall) + +; Load all of the helptags now, after plugins have been loaded. +; All messages and errors will be ignored. +(vim.api.nvim_command "silent! helptags ALL") diff --git a/.gitmodules b/.gitmodules index a982a64..86a9c19 100644 --- a/.gitmodules +++ b/.gitmodules @@ -165,9 +165,6 @@ [submodule ".local/share/nvim/site/pack/kejadlen/start/surround"] path = .local/share/nvim/site/pack/kejadlen/start/surround url = https://github.com/tpope/vim-surround.git -[submodule ".local/share/nvim/site/pack/kejadlen/start/ale"] - path = .local/share/nvim/site/pack/kejadlen/start/ale - url = https://github.com/dense-analysis/ale.git [submodule ".local/share/nvim/site/pack/kejadlen/start/fzf"] path = .local/share/nvim/site/pack/kejadlen/start/fzf url = https://github.com/junegunn/fzf.vim.git @@ -177,3 +174,6 @@ [submodule ".local/share/nvim/site/pack/kejadlen/start/tabular"] path = .local/share/nvim/site/pack/kejadlen/start/tabular url = https://github.com/godlygeek/tabular.git +[submodule ".local/share/nvim/site/pack/kejadlen/start/lint"] + path = .local/share/nvim/site/pack/kejadlen/start/lint + url = https://github.com/mfussenegger/nvim-lint.git diff --git a/.local/share/nvim/site/pack/kejadlen/start/ale b/.local/share/nvim/site/pack/kejadlen/start/ale deleted file mode 160000 index 39d1a10..0000000 --- a/.local/share/nvim/site/pack/kejadlen/start/ale +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 39d1a1058908396be61579a13e75a272cc527c57 diff --git a/.local/share/nvim/site/pack/kejadlen/start/lint b/.local/share/nvim/site/pack/kejadlen/start/lint new file mode 160000 index 0000000..5249977 --- /dev/null +++ b/.local/share/nvim/site/pack/kejadlen/start/lint @@ -0,0 +1 @@ +Subproject commit 5249977a585c3c17d94afdc8f0255a689d3a0057