|
|
|
@ -1,6 +1,8 @@
|
|
|
|
|
(vim.cmd "colorscheme paramount")
|
|
|
|
|
|
|
|
|
|
(set vim.opt.list true)
|
|
|
|
|
|
|
|
|
|
;; fnlfmt: skip
|
|
|
|
|
(set vim.opt.listchars {:tab "\\u21e5 "
|
|
|
|
|
:trail "\\u2423"
|
|
|
|
|
:extends "\\u21c9"
|
|
|
|
@ -11,33 +13,23 @@
|
|
|
|
|
|
|
|
|
|
(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 :<leader>/ ":nohlsearch<cr>")
|
|
|
|
|
;; move the cursor to the first non-blank character with H
|
|
|
|
|
(vim.keymap.set :n :H "^" {:noremap true})
|
|
|
|
|
|
|
|
|
|
;; quick save
|
|
|
|
|
; (nnoremap "\\\\" ":write<cr>")
|
|
|
|
|
; (inoremap "\\\\" "<esc>:write<cr>")
|
|
|
|
|
|
|
|
|
|
; ; fzf
|
|
|
|
|
; (nnoremap :<leader>b ":Buffers<cr>")
|
|
|
|
|
; (nnoremap :<leader>f ":Files<cr>")
|
|
|
|
|
; (nnoremap :<leader>t ":Tags<cr>"))
|
|
|
|
|
(vim.keymap.set :n "\\\\" ":write<cr>" {:noremap true})
|
|
|
|
|
(vim.keymap.set :i "\\\\" "<esc>:write<cr>" {:noremap true})
|
|
|
|
|
|
|
|
|
|
;; clear highlight
|
|
|
|
|
(vim.keymap.set :n :<leader>/ ":nohlsearch<cr>" {: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 :<amatch>)))]
|
|
|
|
|
(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 :<leader>b ":Buffers<cr>" {:noremap true})
|
|
|
|
|
(vim.keymap.set :n :<leader>f ":Files<cr>" {:noremap true})
|
|
|
|
|
(vim.keymap.set :n :<leader>t ":Tags<cr>" {: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 :<cword>))
|
|
|
|
|
: sink
|
|
|
|
|
:window {:width 0.9 :height 0.6}})]
|
|
|
|
|
(nvim_create_user_command :FzfSpell fzf-spell {})
|
|
|
|
|
(vim.keymap.set :n :z= ":FzfSpell<cr>")))
|
|
|
|
|
|
|
|
|
|
;; lspconfig
|
|
|
|
|
; (let [opts {:noremap true :silent true}]
|
|
|
|
|
; (vim.keymap.set :n :<leader>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 :<leader>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 :<C-k> vim.lsp.buf.signature_help bufopts)
|
|
|
|
|
; (vim.keymap.set :n :<leader>wa vim.lsp.buf.add_workspace_folder bufopts)
|
|
|
|
|
; (vim.keymap.set :n :<leader>wr vim.lsp.buf.remove_workspace_folder bufopts)
|
|
|
|
|
; (vim.keymap.set :n :<leader>wl
|
|
|
|
|
; (fn []
|
|
|
|
|
; (print (vim.inspect (vim.lsp.buf.list_workspace_folders))))
|
|
|
|
|
; bufopts)
|
|
|
|
|
; (vim.keymap.set :n :<leader>D vim.lsp.buf.type_definition bufopts)
|
|
|
|
|
; (vim.keymap.set :n :<leader>rn vim.lsp.buf.rename bufopts)
|
|
|
|
|
; (vim.keymap.set :n :<leader>ca vim.lsp.buf.code_action bufopts)
|
|
|
|
|
; (vim.keymap.set :n :gr vim.lsp.buf.references bufopts)
|
|
|
|
|
; (vim.keymap.set :n :<leader>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 :<leader>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 :<leader>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 :<C-k> vim.lsp.buf.signature_help bufopts)
|
|
|
|
|
(vim.keymap.set :n :<leader>wa vim.lsp.buf.add_workspace_folder bufopts)
|
|
|
|
|
(vim.keymap.set :n :<leader>wr vim.lsp.buf.remove_workspace_folder bufopts)
|
|
|
|
|
(vim.keymap.set :n :<leader>wl
|
|
|
|
|
(fn []
|
|
|
|
|
(print (vim.inspect (vim.lsp.buf.list_workspace_folders))))
|
|
|
|
|
bufopts)
|
|
|
|
|
(vim.keymap.set :n :<leader>D vim.lsp.buf.type_definition bufopts)
|
|
|
|
|
(vim.keymap.set :n :<leader>rn vim.lsp.buf.rename bufopts)
|
|
|
|
|
(vim.keymap.set :n :<leader>ca vim.lsp.buf.code_action bufopts)
|
|
|
|
|
(vim.keymap.set :n :gr vim.lsp.buf.references bufopts)
|
|
|
|
|
(vim.keymap.set :n :<leader>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")
|
|
|
|
|