diff options
29 files changed, 20 insertions, 2177 deletions
@@ -78,6 +78,7 @@ }; }; + # fixes hotpot cannot be found error after updates home.activation = { clearHotpotCache = home-manager.lib.hm.dag.entryAfter ["writeBoundary"] '' HOTPOT_CACHE="${config.xdg.cacheHome}/nvim/hotpot" @@ -86,12 +87,19 @@ fi ''; }; + + xdg.configFile.nvim = { + source = config.lib.file.mkOutOfStoreSymlink ./neovim; + recursive = true; + }; + programs.neovim = { enable = true; package = pkgs.neovim-unwrapped; viAlias = true; vimAlias = true; extraPackages = with pkgs; [ + bashInteractive fennel sumneko-lua-language-server pyright @@ -101,23 +109,24 @@ statix fnlfmt ]; - extraConfig = " -lua <<LUA -Flake = { - lua_language_server = [[${pkgs.sumneko-lua-language-server}]], - bash = [[${pkgs.bashInteractive}/bin/bash]] -} -vim.opt.runtimepath:append({ [[~/dotnix/neovim]], [[~/dotnix/neovim/lua]], [[~/dotnix/neovim/fnl]]}) -package.path = [[/home/mike/dotnix/?/init.lua;]] .. [[/home/mike/dotnix/?/?;]] .. [[/home/mike/.cache/nvim/hotpot/hotpot.nvim/lua/?/init.lua;]] .. package.path -require'neovim' -LUA - "; +# extraConfig = " +# lua <<LUA +# Flake = { +# lua_language_server = [[${pkgs.sumneko-lua-language-server}]], +# bash = [[${pkgs.bashInteractive}/bin/bash]] +# } +# vim.opt.runtimepath:append({ [[~/dotnix/neovim]], [[~/dotnix/neovim/lua]], [[~/dotnix/neovim/fnl]], [[~/dotnix/neovim/after]]}) +# package.path = [[/home/mike/dotnix/?/init.lua;]] .. [[/home/mike/dotnix/?/?;]] .. [[/home/mike/.cache/nvim/hotpot/hotpot.nvim/lua/?/init.lua;]] .. package.path +# require'neovim' +# LUA +# "; plugins = with pkgs.vimPlugins; [ # highlighting (nvim-treesitter.withPlugins (plugins: pkgs.tree-sitter.allGrammars)) nvim-ts-rainbow playground gruvbox-material + vim-just # external vim-dirvish diff --git a/neovim/README.md b/neovim/README.md deleted file mode 100644 index 3a441bd..0000000 --- a/neovim/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# mike_neovim -installs my neovim config on mac or linux diff --git a/neovim/autoload/buffers.vim b/neovim/autoload/buffers.vim deleted file mode 100644 index 3fc7818..0000000 --- a/neovim/autoload/buffers.vim +++ /dev/null @@ -1,98 +0,0 @@ -" all taken from: https://github.com/Furkanzmc/dotfiles/tree/master/vim/autoload/buffers.vim -" Buffer related code from https://stackoverflow.com/a/4867969 -function! s:get_buflist() - return filter(range(1, bufnr('$')), 'buflisted(v:val)') -endfunction - -function! s:matching_buffers(pattern) - return filter(s:get_buflist(), 'bufname(v:val) =~ a:pattern') -endfunction - -function! s:cmd_line(mode, str) - call feedkeys(a:mode . a:str) -endfunction - -function! buffers#wipe_matching(pattern, bang) - if a:pattern == "*" - let l:matchList = s:get_buflist() - else - let l:matchList = s:matching_buffers(a:pattern) - endif - - let l:count = len(l:matchList) - if l:count < 1 - echohl WarningMsg - echo '[vimrc] No buffers found matching pattern "' . a:pattern . '"' - echohl Normal - return - endif - - if l:count == 1 - let l:suffix = '' - else - let l:suffix = 's' - endif - - if a:bang == "!" - exec 'bw! ' . join(l:matchList, ' ') - else - exec 'bw ' . join(l:matchList, ' ') - endif - - echohl IncSearch - echo '[vimrc] Wiped ' . l:count . ' buffer' . l:suffix . '.' - echohl Normal -endfunction - -function! buffers#wipe_nonexisting_files() - let l:matchList = filter(s:get_buflist(), - \ '!file_readable(bufname(v:val)) && !has_key(getbufinfo(v:val)[0].variables, "terminal_job_id") && getbufvar(v:val, "&buftype") != "nofile" && getbufvar(v:val, "&filetype") != "qf"') - - let l:count = len(l:matchList) - if l:count < 1 - return - endif - - if l:count == 1 - let l:suffix = '' - else - let l:suffix = 's' - endif - - exec 'bw! ' . join(l:matchList, ' ') - - echohl IncSearch - echo '[vimrc] Wiped ' . l:count . ' buffer' . l:suffix . '.' - echohl Normal -endfunction - -" Code taken from here: https://stackoverflow.com/a/6271254 -function! buffers#get_visual_selection() - let [l:line_start, l:column_start] = getpos("'<")[1:2] - let [l:line_end, l:column_end] = getpos("'>")[1:2] - let l:lines = getline(l:line_start, l:line_end) - if len(l:lines) == 0 - return l:lines - endif - - let l:lines[-1] = l:lines[-1][: l:column_end - (&selection == 'inclusive' ? 1 : 2)] - let l:lines[0] = l:lines[0][l:column_start - 1:] - return l:lines -endfunction - -function! buffers#visual_selection(direction, extra_filter) range - let l:saved_reg = @" - execute "normal! vgvy" - - let l:pattern = escape(@", "\\/.*'$^~[]") - let l:pattern = substitute(l:pattern, "\n$", "", "") - - if a:direction == 'search' - call s:cmd_line('/', l:pattern) - elseif a:direction == 'replace' - call s:cmd_line(':', "%s" . '/'. l:pattern . '/') - endif - - let @/ = l:pattern - let @" = l:saved_reg -endfunction diff --git a/neovim/autoload/reloadpackage.vim b/neovim/autoload/reloadpackage.vim deleted file mode 100644 index f8a76a2..0000000 --- a/neovim/autoload/reloadpackage.vim +++ /dev/null @@ -1,3 +0,0 @@ -function reloadpackage#complete(arg_lead, cmd_line, cursor_pos) - return luaeval("require('vimrc').reload_package_complete('" . a:arg_lead . "', '" . a:cmd_line . "', '" . a:cursor_pos . "')") -endfunction diff --git a/neovim/fnl/conf/events.fnl b/neovim/fnl/conf/events.fnl deleted file mode 100644 index 082a274..0000000 --- a/neovim/fnl/conf/events.fnl +++ /dev/null @@ -1,13 +0,0 @@ -;; vim.cmd([[augroup vimrc_plugin_buffers]]) -;; vim.cmd([[au!]]) -;; vim.cmd( -;; [[autocmd BufWritePre *.md,*.hcl,*.tf,*.py,*.cpp,*.qml,*.js,*.txt,*.json,*.html,*.lua,*.yaml,*.yml,*.bash,*.sh,*.go :lua require"vimrc.buffers".clean_trailing_spaces()]]) -;; -;; vim.cmd( -;; [[autocmd BufReadPost * lua require"vimrc.buffers".setup_white_space_highlight(vim.fn.bufnr())]]) -;; -;; vim.cmd( -;; [[autocmd BufReadPre *.tf,*.hcl packadd vim-terraform]]) -;; -;; vim.cmd([[augroup END]]) - diff --git a/neovim/fnl/conf/init.fnl b/neovim/fnl/conf/init.fnl deleted file mode 100644 index 388139f..0000000 --- a/neovim/fnl/conf/init.fnl +++ /dev/null @@ -1,8 +0,0 @@ -(vim.cmd "colorscheme gruvbox-material") -(vim.cmd "filetype plugin on") -(vim.cmd "filetype indent on") -(vim.cmd "highlight WinSeparator guibg=None") - -(require :conf.lsp) -(require :conf.pkgs) -(require :conf.settings) diff --git a/neovim/fnl/conf/log.fnl b/neovim/fnl/conf/log.fnl deleted file mode 100644 index cf859f2..0000000 --- a/neovim/fnl/conf/log.fnl +++ /dev/null @@ -1,39 +0,0 @@ -(import-macros {: P} :conf.macros) - -(local scratches {}) -(fn scratch-buffer [name ft] - (fn setopt [buf opt value] - (vim.api.nvim_buf_set_option buf opt value) - buf) - - (fn track [buf] - (tset scratches name buf) - buf) - - (track (-> (vim.api.nvim_create_buf true false) - (setopt :filetype ft) - (setopt :buftype :nofile) - (setopt :bufhidden :hide) - (setopt :swapfile false)))) - -(let [log (fn [...] - (P [...]))] - (vim.api.nvim_create_user_command :Scratch - (fn [c] - (let [name c.args] - (fn exists? [buf] - (not= buf nil)) - - (fn get [] - (. scratches c.args)) - - (fn goto [buf] - (vim.api.nvim_set_current_buf buf)) - - (let [buf (get) - current (vim.api.nvim_get_current_buf)] - (if (exists? buf) (goto buf) - (goto (scratch-buffer name - (vim.api.nvim_buf_get_option current - :filetype))))))) - {:complete log :nargs 1})) diff --git a/neovim/fnl/conf/lsp.fnl b/neovim/fnl/conf/lsp.fnl deleted file mode 100644 index 9b945e1..0000000 --- a/neovim/fnl/conf/lsp.fnl +++ /dev/null @@ -1,41 +0,0 @@ -(fn map-to-capabilities [{: client : buf}] - (fn bo [name value] - (vim.api.nvim_buf_set_option buf name value)) - - (fn bm [mode key cb] - (vim.keymap.set mode key cb {:silent true :noremap true :buffer buf})) - - (fn lspdo [action] - (. vim.lsp action)) - - (fn use [cpb] - (match cpb - :completion (bo :omnifunc "v:lua.vim.lsp.omnifunc") - :rename (bm :n :<leader>gr (lspdo :rename)) - :signature_help (bm :n :<leader>gs (lspdo :signature_help)) - :goto_definition (bm :n :<leader>gd (lspdo :definition)) - :declaration (bm :n :<leader>gD (lspdo :declaration)) - :implementation (bm :n :<leader>gi (lspdo :implementation)) - :find_references (bm :n :<leader>gi (lspdo :references)) - :document_symbol (bm :n :<leader>gds (lspdo :workspace_symbol)) - :code_action (bm :n :<leader>ga (lspdo :code_action)) - :document_range_formatting (bm :v :<leader>gq (lspdo :range_formatting)) - :hover (bo :keywordprg ":LspHover") - :documentFormattingProvider ((fn [] - (bo :formatexpr "v:lua.vim.lsp.format()") - (bm :n :<leader>gq - #(vim.lsp.buf.format {:async true})))))) - - (each [cpb enabled? (pairs client.server_capabilities)] - (if enabled? - (use cpb)))) - -(fn attach [client buf] - (fn P [p] - (print (vim.inspect p)) - p) - - (-> {: client : buf} - (map-to-capabilities))) - -{: attach} diff --git a/neovim/fnl/conf/macros.fnl b/neovim/fnl/conf/macros.fnl deleted file mode 100644 index 04a7251..0000000 --- a/neovim/fnl/conf/macros.fnl +++ /dev/null @@ -1,48 +0,0 @@ -(fn by-two [l] - (fn iter [t i] - (let [k (. l (- i 1)) - v (. l i)] - (when (and (not= k nil) (not= v nil)) - (values (+ i 2) [k v])))) - - (values iter l 2)) - -(fn decode-opt-value [v] - (fn symbol-luatype [s] - (let [t (tostring s)] - (match t - :on true - :off false - _ t))) - - (if (sym? v) (symbol-luatype v) v)) - -(fn opt-template [o] - (fn remove/append [target value mode] - `(let [target# (. vim :opt ,target) - value# ,value] - ,(match mode - :append `(target#:append value#) - :remove `(target#:remove value#)))) - - (fn [v] - (match (string.sub o 1 1) - "-" (remove/append (string.sub o 2) v :remove) - "+" (remove/append (string.sub o 2) v :append) - _ `(tset (. vim :opt) ,o ,v)))) - -(fn settings [...] - `,(icollect [_ [o v] (by-two [...])] - ((opt-template (tostring o)) (decode-opt-value v)))) - -(fn globals [...] - (local globa (icollect [_ [k v] (by-two [...])] - [(tostring k) v])) - `(let [l# ,globa] - (each [a# b# (ipairs l#)] - (tset (. vim :g) (. b# 1) (. b# 2))))) - -(fn P [...] - `(print (vim.inspect [...]))) - -{: P : settings : globals} diff --git a/neovim/fnl/conf/pkgs.fnl b/neovim/fnl/conf/pkgs.fnl deleted file mode 100644 index e97c038..0000000 --- a/neovim/fnl/conf/pkgs.fnl +++ /dev/null @@ -1,6 +0,0 @@ -(require :conf.pkgs.cmp) - -;; seems broken: (require :conf.pkgs.neotest) - -(require :conf.pkgs.null-ls) -(require :conf.pkgs.treesitter) diff --git a/neovim/fnl/conf/pkgs/cmp.fnl b/neovim/fnl/conf/pkgs/cmp.fnl deleted file mode 100644 index db3cbf9..0000000 --- a/neovim/fnl/conf/pkgs/cmp.fnl +++ /dev/null @@ -1,14 +0,0 @@ -(let [cmp (require :cmp) - luasnip (require :luasnip) - snip (fn [args] - (luasnip.lsp_expand (. args :body)))] - (cmp.setup {:snippet {:expand snip} - :completion {:autocomplete false} - :mapping (cmp.mapping.preset.insert {:<C-b> (cmp.mapping.scroll_docs -4) - :<C-f> (cmp.mapping.scroll_docs 4) - :<C-A> (cmp.mapping.complete) - :<C-e> (cmp.mapping.confirm {:select true})}) - :sources (cmp.config.sources [{:name :conjure} - {:name :nvim_lsp} - {:name :path} - {:name :luasnip}])})) diff --git a/neovim/fnl/conf/pkgs/neotest.fnl b/neovim/fnl/conf/pkgs/neotest.fnl deleted file mode 100644 index 251cdcb..0000000 --- a/neovim/fnl/conf/pkgs/neotest.fnl +++ /dev/null @@ -1,4 +0,0 @@ -(let [nt (require :neotest) - python (require :neotest-python)] - (nt.setup {:adapters [(python {:dap {:justMyCode false}})]})) - diff --git a/neovim/fnl/conf/pkgs/null-ls.fnl b/neovim/fnl/conf/pkgs/null-ls.fnl deleted file mode 100644 index 45a507d..0000000 --- a/neovim/fnl/conf/pkgs/null-ls.fnl +++ /dev/null @@ -1,17 +0,0 @@ -(fn reload [mod] - (fn loaded? [mod] - (not= (. package.loaded mod) nil)) - - (fn unload [mod] - (tset package.loaded mod nil)) - - (if (loaded? mod) (unload mod)) - (require mod)) - -(let [null-ls (require :null-ls)] - (null-ls.setup {:update_on_insert false - :on_attach (. (reload :conf.lsp) :attach) - :sources [null-ls.builtins.formatting.black - null-ls.builtins.formatting.raco_fmt - null-ls.builtins.formatting.alejandra - null-ls.builtins.formatting.fnlfmt]})) diff --git a/neovim/fnl/conf/pkgs/treesitter.fnl b/neovim/fnl/conf/pkgs/treesitter.fnl deleted file mode 100644 index a35b7c8..0000000 --- a/neovim/fnl/conf/pkgs/treesitter.fnl +++ /dev/null @@ -1,3 +0,0 @@ -(let [ts (require :nvim-treesitter.configs)] - (ts.setup - {:highlight {:enable true}})) diff --git a/neovim/fnl/conf/settings.fnl b/neovim/fnl/conf/settings.fnl deleted file mode 100644 index 36e336c..0000000 --- a/neovim/fnl/conf/settings.fnl +++ /dev/null @@ -1,62 +0,0 @@ -(import-macros {: settings : globals} :conf.macros) - -(globals - loaded_2html_plugin true - loaded_fzf false - loaded_man false - loaded_gzip false - loaded_health false - loaded_matchit false - loaded_matchparen false - loaded_netrwPlugin false - loaded_rplugin false - loaded_shada false - loaded_spellfile false - loaded_tarPlugin false - loaded_tohtml false - loaded_tutor false - loaded_zipPlugin false - - mapleader " " - maplocalleader " " - dirvish_mode ":sort | sort ,^.*[^/]$, r") - -(settings - +shortmess "c" - +diffopt vertical - +isfname "@-@" - wmw 10 - inccommand split - signcolumn yes - smd off - scrolloff 8 - termguicolors on - incsearch on - undofile on - undodir (.. (os.getenv :HOME) :/.local/share/nvim/undo) - backup off - swapfile off - wrap off - splitbelow on - magic on - showbreak "" - listchars { :tab " " :eol ""} - list on - autoindent on - smartindent on - expandtab on - tabstop 4 - softtabstop 4 - shiftwidth 4 - hidden on - number on - relativenumber on - exrc on - secure on - completeopt "menuone,noselect" - complete ".,w,k,kspell,b" - foldopen "block,hor,jump,mark,percent,quickfix,search,tag" - laststatus 3 - winbar "%=%m %f" - hlsearch off - clipboard "") diff --git a/neovim/init.fnl b/neovim/init.fnl deleted file mode 100644 index f4a3373..0000000 --- a/neovim/init.fnl +++ /dev/null @@ -1,27 +0,0 @@ -;; Ahead of time compiles this file to ./init.lua -(fn build-init [] - (let [{: build} (require :hotpot.api.make) - allowed-globals (icollect [n _ (pairs _G)] n) - opts {:verbosity 0 - :compiler {:modules {:allowedGlobals allowed-globals}}}] - (build "/home/mike/dotnix/neovim/init.fnl" opts ".+" #(values $1)) - (build))) - -;; Call hotpot.setup and compile again after fs event -(let [hotpot (require :hotpot) - setup hotpot.setup - build hotpot.api.make.build - uv vim.loop] - - (setup {:provide_require_fennel true - :compiler {:modules {:correlate true} - :macros {:env :_COMPILER - :compilerEnv _G - :allowedGlobals false}}}) - - (let [handle (uv.new_fs_event) - path (vim.fn.expand "/home/mike/dotnix/neovim/init.fnl")] - (uv.fs_event_start handle path {} #(vim.schedule build-init)) - (vim.api.nvim_create_autocmd :VimLeavePre {:callback #(uv.close handle)}))) - -(require :conf) diff --git a/neovim/lua/setups.lua b/neovim/lua/setups.lua deleted file mode 100644 index 48e775d..0000000 --- a/neovim/lua/setups.lua +++ /dev/null @@ -1,177 +0,0 @@ --- {{{ git -vim.cmd([[command! -bang Gap :G commit -am 'fixmeuplater' | G push]]) --- }}} - --- completion {{{ -vim.api.nvim_set_keymap('n', ']p', ':tabn<cr>', { silent = true, noremap = true}) -vim.api.nvim_set_keymap('n', '[p', ':tabp<cr>', { silent = true, noremap = true}) - -require'vimrc.snippets'.setup() - --- }}} - --- buffers {{{ -vim.opt.switchbuf = "useopen,usetab" -vim.opt.stal = 2 - -vim.api.nvim_set_keymap( - "n", - "<leader>;", - "<C-^>", - { silent = true, noremap = true } -) - --- taken from: https://github.com/Furkanzmc/dotfiles/blob/master/vim/init.lua --- searching and replacing in buffers -vim.api.nvim_set_keymap( - "v", - "<leader>s", - ":call buffers#visual_selection('search', '')<CR>", - { silent = true, noremap = true } -) -vim.api.nvim_set_keymap( - "v", - "<leader>r", - ":call buffers#visual_selection('replace', '')<CR>", - { silent = true, noremap = true } -) -vim.cmd([[command! -nargs=1 -complete=file E execute('silent! !mkdir -p "$(dirname "<args>")"') <Bar> e <args>]]) --- wiping buffers and wiping nofile-buffers -vim.cmd([[command! -nargs=1 -bang Bdeletes :call buffers#wipe_matching('<args>', <q-bang>)]]) -vim.cmd([[command! Bdnonexisting :call buffers#wipe_nonexisting_files()]]) - -vim.cmd([[command! CleanTrailingWhiteSpace :lua require"vimrc.buffers".clean_trailing_spaces()]]) - -vim.cmd([[augroup vimrc_plugin_buffers]]) -vim.cmd([[au!]]) -vim.cmd( - [[autocmd BufWritePre *.md,*.hcl,*.tf,*.py,*.cpp,*.qml,*.js,*.txt,*.json,*.html,*.lua,*.yaml,*.yml,*.bash,*.sh,*.go :lua require"vimrc.buffers".clean_trailing_spaces()]] -) -vim.cmd( - [[autocmd BufReadPost * lua require"vimrc.buffers".setup_white_space_highlight(vim.fn.bufnr())]] -) -vim.cmd( - [[autocmd BufReadPre *.tf,*.hcl packadd vim-terraform]] -) -vim.cmd([[augroup END]]) - --- }}} - --- quickfix {{{ -vim.api.nvim_set_keymap( - "n", - "<C-q>o", - ":copen<cr>", - { silent = true, noremap = true } -) -vim.api.nvim_set_keymap( - "n", - "<C-q>z", - ":cclose<cr>", - { silent = true, noremap = true } -) - -vim.api.nvim_set_keymap( - "n", - "<C-q>lo", - ":lopen<cr>", - { silent = true, noremap = true } -) -vim.api.nvim_set_keymap( - "n", - "<C-q>lz", - ":lclose<cr>", - { silent = true, noremap = true } -) -vim.api.nvim_set_keymap("n", "]q", ":cnext<cr>", { silent = true, noremap = true }) -vim.api.nvim_set_keymap("n", "[q", ":cprevious<cr>", { silent = true, noremap = true }) -vim.api.nvim_set_keymap("n", "]Q", ":cfirst<cr>", { silent = true, noremap = true }) -vim.api.nvim_set_keymap("n", "[Q", ":clast<cr>", { silent = true, noremap = true }) -vim.api.nvim_set_keymap("n", "]l", ":lnext<cr>", { silent = true, noremap = true }) -vim.api.nvim_set_keymap("n", "[l", ":lprevious<cr>", { silent = true, noremap = true }) -vim.api.nvim_set_keymap("n", "]L", ":lfirst<cr>", { silent = true, noremap = true }) -vim.api.nvim_set_keymap("n", "[L", ":llast<cr>", { silent = true, noremap = true }) --- }}} - --- firvish {{{ -require'firvish'.setup() -vim.g.firvish_use_default_mappings=1 -require'vimrc'.setup_jq_function() -require'vimrc'.setup_build_function() --- }}} - --- {{{ trouble -require"trouble".setup { } --- }}} - --- {{{ tests --- require"nvim-test".setup{} --- vim.api.nvim_set_keymap( --- "n", --- "<leader>t", --- "<cmd>TestFile<CR>", --- {silent = true, noremap = true} --- ) --- }}} - --- lsp {{{ -vim.cmd [[augroup vimrc_nvim_lsp_setup]] -vim.cmd [[au!]] -vim.cmd [[au VimEnter * lua require'vimrc.lsp'.setup()]] -vim.cmd [[augroup END]] --- }}} - --- dap {{{ -require('vimrc.dap').setup_dap() -vim.cmd [[augroup vimrc_nvim_dap_setup]] -vim.cmd [[au!]] -vim.cmd [[au VimEnter * lua require('vimrc.dap').setup_dap()]] -vim.cmd [[augroup END]] --- }}} - --- terminal {{{ --- open close terminal -vim.cmd [[command! Term :lua require('vimrc.term').toggle()]] --- run current file -vim.cmd [[command! Run :lua require('vimrc.term').run()]] --- send selection -vim.cmd [[command! -range Send :lua require('vimrc.term').sendSelection()]] -vim.api.nvim_set_keymap( - "t", - "<c-q><c-w>", - "<c-\\><c-n>", - { silent = true, noremap = true } -) --- }}} - --- statusline {{{ --- require('el').setup {} --- TODO: move to colortemplates -vim.cmd [[hi! link Winbar StatusLine]] --- }}} - --- init autocommand {{{ -vim.cmd([[augroup vimrc_init]]) -vim.cmd([[autocmd!]]) -vim.cmd( - [[autocmd BufReadPre,FileReadPre *.rest :if !exists("g:vimrc_rest_nvim_loaded") | packadd vim-rest-console | let g:vimrc_rest_nvim_loaded = v:true | endif | :e]] -) -vim.cmd( - [[autocmd TextYankPost * silent! lua vim.highlight.on_yank{on_visual=false, higroup="IncSearch", timeout=100}]] -) -vim.cmd( - [[ autocmd TextYankPost * if v:event.operator is 'y' && v:event.regname is '' | execute 'OSCYankReg "' | endif ]] -) -vim.cmd( - [[autocmd VimEnter * if filereadable(".exrc.lua") | call execute("luafile .exrc.lua") | endif]] -) -vim.cmd( - [[autocmd VimEnter * if filereadable(".env") | echo execute("Dotenv") | call execute("Dotenv .env") | endif]] -) --- temp fix for screen redrawing issues --- cmd( --- [[autocmd BufEnter * mod]] --- ) -vim.cmd([[augroup END]]) --- }}} --- vim: fdm=marker diff --git a/neovim/lua/vimrc.lua b/neovim/lua/vimrc.lua deleted file mode 100644 index 59ab863..0000000 --- a/neovim/lua/vimrc.lua +++ /dev/null @@ -1,198 +0,0 @@ --- vim: fdm=marker -local log_warning = require 'vimrc.utils'.log_warning -local M = {} - -function M.setup_rest_nvim() - require("rest-nvim").setup({ - result_split_horizontal = true, - skip_ssl_verification = false, - highlight = { enabled = true, timeout = 150 }, - jump_to_request = false, - }) - - local map = vim.api.nvim_set_keymap - map( - "n", - "<leader>tt", - "<Plug>RestNvim", - { silent = true } - ) - map( - "n", - "<leader>tp", - "<Plug>RestNvimPreview", - { silent = true } - ) -end - -local jq_functions = {} -function M.setup_jq_function() - jq_functions.filter_jq = function(path, first, last) - P(path) - local buf = vim.api.nvim_get_current_buf() - first, last = tonumber(first), tonumber(last) - first = first - 1 - local json_string = table.concat(vim.api.nvim_buf_get_lines(buf, first, last, true)) - local tmp = os.tmpname() - local f = io.open(tmp, "w") - if f then - f:write(json_string) - f:close() - else - return false - end - local cmd = { - "/bin/sh", - "-c", - [[cat ]] .. tmp .. [[ | jq ']] .. path .. [[']] - } - require('firvish.job_control').start_job({ - cmd = cmd, - filetype = "json", - title = "jq", - listed = true, - output_qf = false, - is_background_job = false, - }) - end - _G.jq_functions = jq_functions - vim.cmd [[command! -nargs=* -range FJq :lua _G.jq_functions.filter_jq('<args>', "<line1>", "<line2>")]] -end - -local build_functions = {} -function M.setup_build_function() - build_functions.rebuild = function() - local cmd = { "rebuild" } - require('firvish.job_control').start_job({ - cmd = cmd, - filetype = "job-output", - title = "rebuild", - listed = true, - output_qf = true, - is_background_job = true, - }) - end - _G.build_functions = build_functions - vim.cmd [[command! Rebuild :lua _G.build_functions.rebuild()]] - - build_functions.azure_yaml = function(file) - local cwd = os.getenv('PWD') - local auth = os.getenv('AZURE_DEVOPS_AUTH') - local ado_org = os.getenv('AZURE_DEVOPS_ORG') - local ado_proj = os.getenv('AZURE_DEVOPS_PROJECT') - local pipeline = os.getenv('AZURE_YAML_DEFINITION_ID') - local branch = os.getenv('AZURE_YAML_BRANCH') - - local url = [[https://dev.azure.com/]] .. - ado_org .. [[/]] .. ado_proj .. [[/_apis/pipelines/]] .. pipeline .. [[/preview?api-version=7.1-preview.1]] - local auth_header = [[Authorization: Basic ]] .. auth - local yaml_file = cwd .. "/" .. file - - local shell_script = string.format( - [[yaml_string=" -$(cat ${PWD}/${AZURE_YAML_DEBUG_SNIPPET}) -$(cat %s) -" -yaml_string="$(echo "$yaml_string" | yq '... style="single"' - | sed -re /\s*\#.*$/d)" -curl -s -X POST '%s' -H 'Content-Type: application/json' -H '%s' --data-binary @- << THEEND | jq '.finalYaml // .' | yq '... style="double"' - -{ - "previewRun":true, - "templateParameters": {}, - "resources": { - "repositories": { - "self": { - "refName": "refs/heads/%s" - } - } - }, - "yamlOverride":"$yaml_string" -} -THEEND]] , - yaml_file, url, auth_header, branch, branch - ) - local cmd = { - "/bin/bash", "-c", shell_script - } - require('firvish.job_control').start_job({ - cmd = cmd, - filetype = "yaml", - title = "azureyaml", - use_last_buffer = false, - listed = true, - output_qf = true, - is_background_job = false, - cwd = cwd - }) - end - vim.cmd [[command! -nargs=1 -complete=file AzureYaml :lua _G.build_functions.azure_yaml("<args>")]] -end - --- {{{ global lua debugging -_G.P = function(arg) - print(vim.inspect(arg)) -end - -M.reload_package_complete = function(_, _, _) - -- arg_lead, cmd_line, cursor_pos - -- TODO: implement completion based on loaded packages - return 'hi' -end - -M.reload_packages_and_init = function() - for name, _ in pairs(package.loaded) do - if name:match('^vimrc') then - package.loaded[name] = nil - end - end - local reload_path = os.getenv("NVIM_RELOAD_PATH") or [[/home/mike/dotnix/neovim]] - vim.opt.runtimepath:prepend({ reload_path, reload_path .. [[/lua]] }) - dofile(reload_path .. [[/init.lua]]) - vim.opt.runtimepath:remove({ reload_path, reload_path .. [[/lua]] }) - - vim.notify("Reloaded vim", vim.log.levels.INFO) -end - -M.reload_package = function(name) - P([[name=]] .. name) - if package.loaded[name] == nil then - log_warning("Package not loaded.", "[vimrc]") - return - end - package.loaded[name] = nil - return require(name) -end - -vim.cmd( - [[command! LuaReload :lua require('vimrc').reload_packages_and_init()]] -) - -M.activate_reload_on_write = function(name) - vim.cmd([[augroup package_reload_]] .. name) - vim.cmd([[au!]]) - vim.cmd([[au BufWritePost <buffer> ]] - .. string.format([[:lua require('vimrc').reload_package('%s')]], name)) - vim.cmd([[augroup END]]) -end - -vim.cmd( - [[command! -complete=custom,reloadpackage#complete -nargs=1 ActivateReload :lua require('vimrc').activate_reload_on_write(<q-args>)]] -) - --- }}} --- {{{ syntax tools -M.print_synstack_at = function(line, col) - local syn = vim.fn.synstack(line, col) - for _, id in pairs(syn) do - P(vim.fn.synIDattr(id, 'name')) - end -end - -vim.cmd( - string.format("command! SyntaxInspect :lua require('vimrc').print_synstack_at(%s, %s)", - vim.fn.line("."), - vim.fn.col(".") - ) -) --- }}} - -return M diff --git a/neovim/lua/vimrc/ansible.lua b/neovim/lua/vimrc/ansible.lua deleted file mode 100644 index 4dfeee9..0000000 --- a/neovim/lua/vimrc/ansible.lua +++ /dev/null @@ -1,195 +0,0 @@ -local vim = vim -local cmd = vim.cmd -local fn = vim.fn - -local M = {} -function M.setup(opts) - P(opts) - local home = os.getenv('HOME') - local user = os.getenv('USER') - assert(opts.cwd, "cwd is required. ") - assert(opts.inventory, "inventory is required. ") - -- This needs to be built on the machine you use it due to requiring the user to be present in the /etc/passwd table. - local functions = {} - local secrets_exist = fn.filereadable(fn.expand(opts.vault_file)) == 1 - local vars_files = "" - if secrets_exist then - vars_files = vars_files .. [[ - vars_files: - - ]] .. opts.vault_file .. "\n" - end - functions.ansible_dump = function(output_qf) - local cmd = { - "docker", - "run", - "--interactive", - "--rm", - "--network=host", - "--user=" .. user, - "-e", - "HOME=" .. home, - "--volume=" .. home .. ":" .. home, - "--workdir=" .. opts.cwd, - "mvinkio/ansible", - "/bin/bash", - "-c", -[[cat <<EOF > dev-plabook.yaml ---- -- name: dump all - hosts: all -]] -.. -vars_files -.. -[[ - tasks: - - name: Print vars - debug: - var: vars - - name: Print environment - debug: - var: environment - - name: Print group_names - debug: - var: group_names - - name: Print groups - debug: - var: groups - - name: Print hostvars -/ debug: - var: hostvars -EOF]] .. -"\n ansible-playbook -vvv -i " .. opts.inventory .. " dev-plabook.yaml " - } - P(cmd) - require('firvish.job_control').start_job({ - cmd = cmd, - filetype = "log", - title = "dump", - listed = true, - output_qf = false, - is_background_job = false, - }) - end - - functions.ansible_run = function (playbook, debug) - P(playbook) - P(debug) - local set_debug = "" - if debug then - set_debug = "ANSIBLE_ENABLE_TASK_DEBUGGER=True" - end - local run_cmd = set_debug .. - [[ ansible-playbook ]] .. - [[-v ]] .. - [[-i ]] .. opts.inventory .. [[ ]] .. - playbook - local job_cmd = { - "docker", - "run", - "--interactive", - "--rm", - "--network=host", - "--user=" .. user, - "-e", "HOME=" .. home, - "-e", "USER=" .. user, - "--volume=" .. home .. ":" .. home, - "--workdir=" .. opts.cwd, - "mvinkio/ansible", - "/bin/bash", - "-c", - run_cmd - } - local interactive_cmd = { - "docker", - "run", - "--interactive", - "--tty", - "--rm", - "--network=host", - "--user=" .. user, - "-e", - "HOME=" .. home, - "-e", - "USER=" .. user, - "--volume=" .. home .. ":" .. home, - "--workdir=" .. opts.cwd, - "mvinkio/ansible", - "/bin/bash", - "-c" - } - if not debug then - P(job_cmd) - require('firvish.job_control').start_job({ - cmd = job_cmd, - filetype = "log", - title = "ansiblejob", - listed = true, - output_qf = false, - is_background_job = false, - }) - else - local term_cmd = [[sp | term /bin/bash -c ']] .. table.concat(interactive_cmd, ' ') .. [[ "]] .. run_cmd .. [["']] - P(term_cmd) - vim.cmd(term_cmd) - end - end - - functions.install_requirements = function (bang) - local cmd = { - "docker", - "run", - "--interactive", - "--rm", - "--network=host", - "--user=" .. user, - "-e", "HOME=" .. home, - "--volume=" .. home .. ":" .. home, - "--workdir=" .. opts.cwd, - "mvinkio/ansible", - "/bin/bash", - "-c", - "ansible-galaxy install -r " .. opts.ansible_galaxy_requirements - } - P(cmd) - require('firvish.job_control').start_job({ - cmd = cmd, - filetype = "log", - title = "ansiblejob", - listed = true, - output_qf = false, - is_background_job = false, - }) - end - - functions.ansible_session = function (bang) - local interactive_cmd = { - "docker", - "run", - "--interactive", - "--tty", - "--rm", - "--network=host", - "--user=" .. user, - "-e", - "USER=" .. user, - "-e", - "HOME=" .. home, - "--volume=" .. home .. ":" .. home, - "--workdir=" .. opts.cwd, - "mvinkio/ansible", - "/bin/bash" - } - local term_cmd = [[sp | term ]] .. table.concat(interactive_cmd, ' ') - P(term_cmd) - vim.cmd(term_cmd) - end - - _G.ansible_functions = functions - cmd [[command! -bang AnsibleBug :lua _G.ansible_functions.ansible_dump("<bang>" ~= "!")]] - cmd [[command! -complete=file -nargs=1 -bang AnsiblePlaybook :lua _G.ansible_functions.ansible_run("<args>", "<bang>" == "!")]] - cmd [[command! -bang AnsibleGalaxyRequirements :lua _G.ansible_functions.install_requirements("<bang>" ~= "!")]] - cmd [[command! -bang AnsibleSession :lua _G.ansible_functions.ansible_session("<bang>" ~= "!")]] - -end -return M diff --git a/neovim/lua/vimrc/azure.lua b/neovim/lua/vimrc/azure.lua deleted file mode 100644 index 9b6b245..0000000 --- a/neovim/lua/vimrc/azure.lua +++ /dev/null @@ -1,39 +0,0 @@ -local M = {} - -function M.setup(opts) - -- assert(opts.org_url, "org url is required. ") - -- assert(opts.pipeline_id, "pipeline id is required. ") - -- assert(opts.api_version, "api version is required. ") - -- assert(opts.basic_auth_token, "basic auth token is required. ") - - -- local functions = {} - -- functions.pipeline_bug = function(output_qf) - -- local cmd = { - -- "/bin/sh", - -- "-c", - -- [[curl -sSL --compressed -X POST -H ]] .. - -- [['Authorization: Basic ]] .. opts.basic_auth_token .. [[' ]] .. - -- [[-H 'Content-Type: application/json' ]] .. - -- [[--data-raw "{ \"previewRun\": true }" ]] .. - -- opts.org_url .. "/_apis/pipelines/" .. opts.pipeline_id .. "/preview?api-version=" .. opts.api_version .. - -- " | jq .finalYaml | xargs -0 printf %b | sed -e 's@^\"@@' -e 's@\"$@@'" - -- } - -- P(cmd) - -- require('firvish.job_control').start_job({ - -- cmd = cmd, - -- filetype = "log", - -- title = "pipeline", - -- listed = true, - -- output_qf = output_qf, - -- is_background_job = false, - -- cwd = opts.chart_dir, - -- }) - -- end - - -- _G.azure_functions = functions - - -- cmd [[command! -bang PipelineBug :lua _G.azure_functions.pipeline_bug("<bang>" ~= "!")]] - -end - -return M diff --git a/neovim/lua/vimrc/buffers.lua b/neovim/lua/vimrc/buffers.lua deleted file mode 100644 index f185b6f..0000000 --- a/neovim/lua/vimrc/buffers.lua +++ /dev/null @@ -1,35 +0,0 @@ -local M = {} - -function M.clean_trailing_spaces() - - local save_cursor = vim.fn.getpos(".") - local old_query = vim.fn.getreg("/") - vim.cmd [[%s/\s\+$//e]] - - vim.fn.setpos(".", save_cursor) - vim.fn.setreg("/", old_query) -end - -function M.setup_white_space_highlight(bufnr) - if vim.b.vimrc_trailing_white_space_highlight_enabled then - return - end - - -- if options.get_option_value("trailingwhitespacehighlight", bufnr) == false then - -- return - -- end - - vim.cmd([[highlight link TrailingWhiteSpace Error]]) - vim.cmd([[highlight NonText ctermfg=7 guifg=gray]]) - - vim.cmd("augroup vimrc_trailing_white_space_highlight_buffer_" .. bufnr) - vim.cmd([[autocmd! * <buffer>]]) - vim.cmd([[autocmd BufReadPost <buffer> match TrailingWhiteSpace /\s\+$/]]) - vim.cmd([[autocmd InsertEnter <buffer> match TrailingWhiteSpace /\s\+\%#\@<!$/]]) - vim.cmd([[autocmd InsertLeave <buffer> match TrailingWhiteSpace /\s\+$/]]) - vim.cmd([[augroup END]]) - - vim.b.vimrc_trailing_white_space_highlight_enabled = true -end - -return M diff --git a/neovim/lua/vimrc/dap.lua b/neovim/lua/vimrc/dap.lua deleted file mode 100644 index c55b3cb..0000000 --- a/neovim/lua/vimrc/dap.lua +++ /dev/null @@ -1,218 +0,0 @@ -local vim = vim -local cmd = vim.cmd -local api = vim.api -local M = {} - -local function register_debug_adapters(cwd) - local dap = require 'dap' - dap.adapters.python = { - type = 'executable', - command = "python", - args = { "-m", "debugpy.adapter" } - } - - dap.adapters.go = function(callback, _) - -- _ config - local stdout = vim.loop.new_pipe(false) - local stderr = vim.loop.new_pipe(false) - local handle - local pid_or_err - local port = 38697 - - local opts = { - stdio = { nil, stdout }, - args = { "run", - "-i", "--rm", - "--security-opt=seccomp:unconfined", - "--volume=/var/run/docker.sock:/var/run/docker.sock", - "--env-file=" .. cwd .. "/.env", - "-e=GOPROXY=https://proxy.golang.org", - "-e=GOOS=linux", - "-e=GOARCH=amd64", - "-e=GOPATH=" .. cwd .. "/go", - "-e=GOCACHE=" .. cwd .. "/.cache/go-build", - "-v", cwd .. ":" .. cwd, -- TODO: use os.getenv here - "-w", cwd, -- TODO: use find root here - "--network", "host", - "mvinkio/go", - "dlv", "dap", "-l", "127.0.0.1:" .. port, - "--only-same-user=false", - "--log", - }, - detached = false - } - handle, pid_or_err = vim.loop.spawn("docker", opts, function(code) - stdout:close() - stderr:close() - handle:close() - if code ~= 0 then - print('dlv exited with code', code) - end - end) - assert(handle, 'Error running dlv: ' .. tostring(pid_or_err)) - stdout:read_start(function(err, chunk) - assert(not err, err) - if chunk then - P(chunk) - vim.schedule(function() - require('dap.repl').append(chunk) - end) - end - end) - stderr:read_start(function(err, chunk) - assert(not err, err) - if chunk then - P(chunk) - end - end) - -- Wait for delve to start - vim.defer_fn( - function() - callback({ type = "server", host = "127.0.0.1", port = port }) - end, - 2000) - end - -end - -local function set_configurations() - local dap = require 'dap' - dap.configurations.python = { - { - type = 'python'; - request = 'launch'; - name = "Launch file"; - program = "${file}"; - }, - } - - dap.configurations.go = { - { - type = "go", - name = "Debug", - request = "launch", - program = "${file}" - }, - { - type = "go", - name = "Debug test", -- configuration for debugging test files - request = "launch", - mode = "test", - program = vim.fn.fnamemodify(vim.fn.expand('%'), ':p:h') - }, - { - type = "go", - name = "Debug test (go.mod)", - request = "launch", - mode = "test", - program = "./${relativeFileDirname}" - } - } - - local set_go_keymaps = function() - vim.keymap.set( - "n", - "<leader>df", - [[<cmd>lua require'vimrc.dap'.continue(require'dap'.configurations.go[1])<CR>]], - { noremap = true } - ) - vim.keymap.set( - "n", - "<leader>df", - [[<cmd>lua require'vimrc.dap'.continue(require'dap'.configurations.go[1])<CR>]], - { noremap = true } - ) - end - local augroup = api.nvim_create_augroup("vimrc_go_dap_config", { clear = true }) - api.nvim_create_autocmd("FileType", { pattern = "go", callback = set_go_keymaps, group = augroup }) - -end - -local function set_keymaps() - local map = vim.api.nvim_set_keymap - -- taken from: https://github.com/Furkanzmc/dotfiles/blob/master/vim/lua/vimrc/dap.lua - -- version: 9561e7c700e0ffe74cf9fd61a0e4543ae14938c6 - map("n", "<leader>dc", ":lua require'vimrc.dap'.continue()<CR>", { silent = true, noremap = true }) - map("n", "<leader>dt", ":lua require'dap'.close()<CR>", { silent = true, noremap = true }) - map("n", "<leader>ds", ":lua require'dap'.step_into()<CR>", { silent = true, noremap = true }) - - map("n", "<leader>dk", ":lua require('dapui').eval()<CR>", { silent = true, noremap = true }) - map("v", "<leader>dk", ":lua require('dapui').eval()<CR>", { silent = true, noremap = true }) - map("n", "<leader>do", ":lua require'dap'.step_out()<CR>", { silent = true, noremap = true }) - - map("n", "<leader>dn", ":lua require'dap'.step_over()<CR>", { silent = true, noremap = true }) - map("n", "<leader>du", ":lua require'dap'.up()<CR>", { silent = true, noremap = true }) - map("n", "<leader>dd", ":lua require'dap'.down()<CR>", { silent = true, noremap = true }) - - map( - "n", - "<leader>db", - ":lua require'dap'.toggle_breakpoint()<CR>", - { silent = true, noremap = true } - ) - map( - "n", - "<leader>dbc", - ":lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))<CR>", - { silent = true, noremap = true } - ) - map( - "n", - "<leader>dbl", - ":lua require'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: '))<CR>", - { silent = true, noremap = true } - ) - - map("n", "<leader>dui", ":lua require'dapui'.toggle()<CR>", { silent = true, noremap = true }) - map("n", "<leader>dr", ":lua require'dap'.run_to_cursor()<CR>", { silent = true, noremap = true }) - map( - "n", - "<leader>dl", - ":lua require'dap'.list_breakpoints(true)<CR>", - { silent = true, noremap = true } - ) - -- map( - -- "n", - -- "<leader>dp", - -- ":lua require'dap.ui.variables'.scopes()<CR>", - -- { silent = true, noremap = true } - -- ) -end - -local function set_commands() - cmd([[command! DapUIOpen :lua require'dapui'.open()]]) - cmd([[command! DapUIClose :lua require'dapui'.close()]]) -end - -function M.continue(config) - local dap = require 'dap' - register_debug_adapters(vim.fn.getcwd()) - set_configurations() - if config then - dap.run(config) - else - dap.continue() - end -end - -function M.setup_dap() - if vim.o.loadplugins == false then - return - end - - local vim_startup_dir = vim.fn.getcwd() - register_debug_adapters(vim_startup_dir) - set_configurations() - - cmd [[augroup vimrc_dap]] - cmd [[au!]] - cmd [[au FileType dap-repl lua require('dap.ext.autocompl').attach()]] - cmd [[augroup END]] - - -- Commands and keymaps - require('dapui').setup() - set_keymaps() - set_commands() -end - -return M diff --git a/neovim/lua/vimrc/helm.lua b/neovim/lua/vimrc/helm.lua deleted file mode 100644 index 5597759..0000000 --- a/neovim/lua/vimrc/helm.lua +++ /dev/null @@ -1,129 +0,0 @@ -local vim = vim -local cmd = vim.cmd -local fn = vim.fn - -local M = {} -function M.setup(opts) - assert(opts.release_name, "release name is required. ") - assert(opts.chart_dir, "chartdir is required. ") - assert(opts.docker_dir, "docker_dir is required. ") - assert(opts.docker_tag, "docker_tag is required. ") - - local values_files = opts.values_files or {} - local values_sets = opts.values_sets or {} - local cluster = opts.cluster or "so" - - local dependency_update = "" - if opts.dependency_update then - dependency_update = "--dependency-update" - end - - table.insert(values_sets, "envshort=" .. cluster) - table.insert(values_sets, "cluster=" .. cluster) - table.insert(values_sets, "clusterHost=" .. cluster .. ".stater.com") - - local functions = {} - functions.helm_upgrade = function(output_qf) - local cmd = { - "helm", - "upgrade", - "--install", - "--values", - string.join(values_files, ","), - opts.release_name, - "." - } - require('firvish.job_control').start_job({ - cmd = cmd, - filetype = "log", - title = "upgrade", - listed = true, - output_qf = output_qf, - is_background_job = true, - cwd = opts.chart_dir, - }) - end - - functions.helm_delete = function(output_qf) - require('firvish.job_control').start_job({ - cmd = { - "helm", - "delete", - opts.release_name, - }, - filetype = "log", - title = "delete", - listed = true, - output_qf = output_qf, - is_background_job = true, - cwd = opts.chart_dir, - }) - end - - functions.helm_build = function(output_qf) - local cmd = { - "/bin/sh", - "-c", - string.format( - [[if docker build -t %s %s && ]] .. - [[docker push %s ; then ]] .. - [[helm delete %s ; ]] .. - [[helm upgrade --install %s --values %s --set %s %s . ; fi]], - opts.docker_tag, - opts.docker_dir, - opts.docker_tag, - opts.release_name, - dependency_update, - string.join(values_files, ","), - string.join(values_sets, ","), - opts.release_name - ) - } - P(cmd) - require('firvish.job_control').start_job({ - cmd = cmd, - filetype = "log", - title = "delete", - listed = true, - output_qf = output_qf, - is_background_job = true, - cwd = opts.chart_dir, - }) - end - - functions.helm_debug = function(update_remote) - local cmd = { - "helm", - "template", - "--debug", - "--values", - string.join(values_files, ","), - "--set", - string.join(values_sets, ","), - opts.release_name, - "." - } - P(cmd) - if update_remote then - table.insert(cmd, 3, "--dependency-update") - end - require('firvish.job_control').start_job({ - cmd = cmd, - filetype = "log", - title = "delete", - listed = true, - output_qf = false, - is_background_job = false, - cwd = opts.chart_dir, - }) - end - - _G.helm_functions = functions - cmd [[command! -bang HelmPut :lua _G.helm_functions.helm_upgrade("<bang>" ~= "!")]] - cmd [[command! -bang HelmDelete :lua _G.helm_functions.helm_delete("<bang>" ~= "!")]] - - cmd [[command! -bang HelmBuild :lua _G.helm_functions.helm_build("<bang>" ~= "!")]] - cmd [[command! -bang HelmBug :lua _G.helm_functions.helm_debug("<bang>" ~= "!")]] - -end -return M diff --git a/neovim/lua/vimrc/lsp.lua b/neovim/lua/vimrc/lsp.lua deleted file mode 100644 index bd3b206..0000000 --- a/neovim/lua/vimrc/lsp.lua +++ /dev/null @@ -1,217 +0,0 @@ -local utils = require 'vimrc.utils' -local M = {} - --- TODO: parameterise --- TODO: extend stuff later - -M.client_log = {} - --- local functions {{{ -local function on_publish_diagnostics(_, result, ctx, config) - vim.lsp.diagnostic.on_publish_diagnostics(_, result, ctx, config) - vim.diagnostic.setloclist({ - open = false - }) -end - -local function setup_handlers(client, _) - client.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(on_publish_diagnostics, { - virtual_text = false, - underline = true, - update_in_insert = false, - severity_sort = true - }) -end - -local function setup_server_capabilities_maps(client, bufnr) - local map = vim.api.nvim_buf_set_keymap - local opts = { silent = true, noremap = true } - local capabilities = client.server_capabilities - - if capabilities.completion ~= false then - vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") - end - - if capabilities.hover ~= false then - vim.api.nvim_buf_set_option(bufnr, "keywordprg", ":LspHover") - end - - if capabilities.rename == true then - map(bufnr, "n", "<leader>gr", "<Cmd>lua vim.lsp.buf.rename()<CR>", opts) - end - - if capabilities.signature_help == true then - map(bufnr, "n", "<leader>gs", "<Cmd>lua vim.lsp.buf.signature_help()<CR>", opts) - end - - if capabilities.goto_definition ~= false then - map(bufnr, "n", "<leader>gd", "<Cmd>lua vim.lsp.buf.definition()<CR>", opts) - end - - if capabilities.declaration == true then - map(bufnr, "n", "<leader>gD", "<Cmd>lua vim.lsp.buf.declaration()<CR>", opts) - end - - if capabilities.implementation == true then - map(bufnr, "n", "<leader>gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts) - end - - if capabilities.find_references ~= false then - map(bufnr, "n", "<leader>gg", "<cmd>lua vim.lsp.buf.references()<CR>", opts) - end - - map(bufnr, "n", "<leader>ge", "<cmd>lua require'vimrc.lsp'.line_diagnostic()<CR>", opts) - - if capabilities.document_symbol ~= false then - map(bufnr, "n", "<leader>gds", "<cmd>lua vim.lsp.buf.document_symbol()<CR>", opts) - end - - if capabilities.workspace_symbol ~= true then - map(bufnr, "n", "<leader>gw", "<cmd>lua vim.lsp.buf.workspace_symbol()<CR>", opts) - end - - if capabilities.code_action ~= false then - map(bufnr, "n", "<leader>ga", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts) - end - - if capabilities.documentFormattingProvider == true then - vim.api.nvim_buf_set_option(bufnr, "formatexpr", "v:lua.vim.lsp.format()") - map(bufnr, "n", "<leader>gq", "<cmd>lua vim.lsp.buf.format({ async = true })<CR>", opts) - end - - if capabilities.document_range_formatting == true then - map(bufnr, "v", "<leader>gq", "<Esc><Cmd>lua vim.lsp.buf.range_formatting()<CR>", opts) - end - - if capabilities.hover ~= false then - vim.api.nvim_command("command! -buffer -nargs=1 LspHover lua vim.lsp.buf.hover()<CR>") - end -end - --- }}} - --- diagnostics {{{ -function M.line_diagnostic() - local line = vim.fn.line('.') - 1 - local diags = vim.diagnostic.get(0, { - lnum = line - }) - for _, diag in ipairs(diags) do - utils.log_warning(diag.message, diag.source) - end -end - --- }}} - --- setup {{{ -function M.setup() - - local buffer_setup = function(client) - table.insert(M.client_log, client) - local bufnr = vim.api.nvim_get_current_buf() - - setup_server_capabilities_maps(client, bufnr) - setup_handlers(client, bufnr) - require("lsp_signature").on_attach({ - bind = true, - floating_window = false, - toggle_key = "<C-g><C-s>", - extra_trigger_chars = { "{", "}" }, - hint_prefix = "@ ", - check_pumvisible = false - }, bufnr) - end - - local buffer_setup_no_format = function(client) - buffer_setup(client) - end - - -- lspconfig {{{ - local lspconfig = require('lspconfig') - local capabilities = require('cmp_nvim_lsp').default_capabilities() - - -- always load lua lsp - require('nlua.lsp.nvim').setup(lspconfig, { - cmd = { - Flake.lua_language_server .. "/bin/lua-language-server", - "-E", Flake.lua_language_server .. "/share/lua-language-server/main.lua" - }, - capabilities = capabilities, - on_attach = buffer_setup_no_format, - - -- Include globals you want to tell the LSP are real :) - globals = { - -- Colorbuddy - "Color", "c", "Group", "g", "s", "Flake", - } - }) - - lspconfig.pyright.setup { - root_dir = lspconfig.util.root_pattern(".git", vim.fn.getcwd()), - on_attach = buffer_setup_no_format, - } - - lspconfig.gopls.setup { - before_init = function(params) - params.processId = vim.NIL - end, - capabilities = capabilities, - filetypes = { "go", "gomod", "gotmpl" }, - on_attach = buffer_setup_no_format, - settings = { - gopls = { - experimentalPostfixCompletions = true, - analyses = { - unusedparams = true, - shadow = true, - }, - staticcheck = true, - }, - }, - init_options = { - usePlaceholders = true, - } - } - - lspconfig.yamlls.setup { - schemas = { - ["https://raw.githubusercontent.com/instrumenta/kubernetes-json-schema/master/v1.18.0-standalone-strict/all.json"] = "/*.k8s.yaml", - }, - capabilities = capabilities, - on_attach = function(client) - buffer_setup_no_format(client) - local bufnr = vim.api.nvim_get_current_buf() - if vim.bo[bufnr].buftype ~= "" - or vim.bo[bufnr].filetype == "helm" then - vim.diagnostic.disable(bufnr) - vim.defer_fn(function() - vim.diagnostic.reset(nil, bufnr) - end, 1000) - end - end, - } - -- }}} - - local null_ls = require("null-ls") - null_ls.setup({ - debug = vim.fn.expand("$VIMRC_NULL_LS_DEBUG") == "1", - update_on_insert = false, - on_attach = buffer_setup, - sources = { - -- nix linter: statix - null_ls.builtins.code_actions.statix, - null_ls.builtins.diagnostics.statix, - -- nix formatter: alejandra - null_ls.builtins.formatting.alejandra, - -- python formatter: black - null_ls.builtins.formatting.black, - -- lisp formatter - null_ls.builtins.formatting.raco_fmt - } - }) -end - --- }}} - -return M --- vim: fdm=marker diff --git a/neovim/lua/vimrc/snippets.lua b/neovim/lua/vimrc/snippets.lua deleted file mode 100644 index e4d60d7..0000000 --- a/neovim/lua/vimrc/snippets.lua +++ /dev/null @@ -1,133 +0,0 @@ -local ls = require "luasnip" -local s = ls.snippet -local sn = ls.snippet_node -local isn = ls.indent_snippet_node -local t = ls.text_node -local i = ls.insert_node -local f = ls.function_node -local c = ls.choice_node -local d = ls.dynamic_node -local r = ls.restore_node -local events = require("luasnip.util.events") -local ai = require("luasnip.nodes.absolute_indexer") -local fmt = require("luasnip.extras.fmt").fmt -local m = require("luasnip.extras").m -local lambda = require("luasnip.extras").l -local postfix = require("luasnip.extras.postfix").postfix - -local map = vim.api.nvim_set_keymap - -local M = {} - -local go_snippets = function() - ls.add_snippets("go", { - - s(";r", fmt([[ - <>, err := <> - if err != nil { - <> - } - ]], { - i(1,"ret"), i(2,"fun"), i(3, "return err") - }, { - delimiters = "<>" - })), - - s(";e", fmt([[ - if <>, <> := <>; <> { - <> - } - ]], { - i(1,"v"),i(2,"err"),i(3,"fun"), i(4, "err != nil"), i(5,"return err") - }, { - delimiters = "<>" - })), - - s(";fr", fmt([[ - for <>, <> := range <> { - <> - } - ]], { - i(1,"_"),i(2,"_"), i(3,"iterable"), i(4,"body") - }, { - delimiters = "<>" - })), - - s(";sj", fmt([[ - <> <> `json:"<>"` - ]], { - i(1,"field"),i(2,"type"), d(3, function(args) - for i, line in pairs(args[1]) do - args[1][i] = line:gsub("(%u)", function(ch) return '_' .. ch:lower() end):gsub("^_", '') - end - return sn(nil, {i(1,args[1])}) - end, - {1}) - }, { - delimiters = "<>" - })), - - s(";test", fmt([[ -func Test<>(t *testing.T) { - for i, c := range []struct { - expected <> - }{ - } { - t.Run(fmt.Sprintf("%d %s", i, c.expected), func(t *testing.T) { - <> - }) - } -} - ]], { - i(1,"test"),i(2,"type"), i(3,"body") - }, { - delimiters = "<>" - })), - - - - }) -end - - -function M.setup() - go_snippets() - ls.config.setup({ - load_ft_func = - -- Also load both lua and json when a markdown-file is opened, - -- javascript for html. - -- Other filetypes just load themselves. - require("luasnip.extras.filetype_functions").extend_load_ft({ - markdown = { "lua", "json" }, - html = { "javascript" } - }) - }) - -- press <Tab> to expand or jump in a snippet. These can also be mapped separately - -- via <Plug>luasnip-expand-snippet and <Plug>luasnip-jump-next. - vim.keymap.set( - "i", - "<Tab>", - [[luasnip#expand_or_jumpable() ? '<Plug>luasnip-expand-or-jump' : '<Tab>']], - { silent = true, noremap = true, expr = true } - ) - vim.keymap.set( - { "i", "s" }, - "<S-Tab>", - [[<cmd>lua require'luasnip'.jump(-1)<CR>]], - { silent = true, noremap = true } - ) - vim.keymap.set( - "s", - "<Tab>", - [[<cmd>lua require'luasnip'.jump(1)<CR>]], - { silent = true, noremap = true } - ) - vim.keymap.set( - { "i", "s" }, - "<C-E>", - [[luasnip#choice_active() ? '<Plug>luasnip-next-choice' : '<C-E>']], - { silent = true, noremap = true, expr = true } - ) -end - -return M diff --git a/neovim/lua/vimrc/term.lua b/neovim/lua/vimrc/term.lua deleted file mode 100644 index 409ff72..0000000 --- a/neovim/lua/vimrc/term.lua +++ /dev/null @@ -1,91 +0,0 @@ -local api = vim.api -local cmd = vim.cmd - -local M = {} -local jobid = nil -local winid = nil - - -local function bo(option, value) - api.nvim_buf_set_option(0, option, value) -end - -local function launch_term(cmd, opts) - opts = opts or {} - vim.cmd("belowright new") - winid = vim.fn.win_getid() - api.nvim_win_set_var(0, 'REPL', 1) - bo('buftype', 'nofile') - bo('bufhidden', 'wipe') - bo('buflisted', false) - bo('swapfile', false) - opts = vim.tbl_extend('error', opts, { - on_exit = function() - jobid = nil - end - }) - jobid = vim.fn.termopen(cmd, opts) -end - -local function close_term() - if not jobid then return end - vim.fn.jobstop(jobid) - if api.nvim_win_is_valid(winid) then - api.nvim_win_close(winid, true) - end - winid = nil -end - -function M.toggle() - if jobid then - close_term() - else - launch_term(vim.fn.environ()['SHELL'] or 'sh') - end -end - - -function M.run() - local filepath = api.nvim_buf_get_name(0) - close_term() - launch_term(filepath) -end - - -function M.sendLine(line) - if not jobid then return end - vim.fn.chansend(jobid, line .. '\n') -end - -function M.sendSelection() - if not jobid then return end - local start_row, start_col = unpack(api.nvim_buf_get_mark(0, '<')) - local end_row, end_col = unpack(api.nvim_buf_get_mark(0, '>')) - local mode = vim.fn.visualmode() - local offset - if mode == '' then -- in block mode all following lines are indented - offset = start_col - elseif mode == 'V' then - end_row = end_row + 1 - offset = 0 - else - offset = 0 - end - local lines = api.nvim_buf_get_lines(0, start_row - 1, end_row, false) - for idx, line in pairs(lines) do - local l - if idx == 1 and idx == #lines then - l = line:sub(start_col + 1, end_col + 1) - elseif idx == 1 then - l = line:sub(start_col + 1) - elseif idx == #lines then - l = line:sub(offset + 1, end_col > #line and #line or end_col + 1) - elseif offset > 0 then - l = line:sub(offset + 1) - else - l = line - end - vim.fn.chansend(jobid, l .. '\n') - end -end -return M diff --git a/neovim/lua/vimrc/terragrunt.lua b/neovim/lua/vimrc/terragrunt.lua deleted file mode 100644 index 84ac867..0000000 --- a/neovim/lua/vimrc/terragrunt.lua +++ /dev/null @@ -1,141 +0,0 @@ -local vim = vim -local cmd = vim.cmd -local fn = vim.fn - -local M = {} -function M.setup(opts) - local env_file = opts.env_file or '' - local home = os.getenv('HOME') - local user = os.getenv('USER') - local cwd = opts.cwd or home - P(cwd) - - local functions = {} - - functions.clean = function() - require('firvish.job_control').start_job({ - cmd = { - "docker", - "run", - "--interactive", - "--rm", - "--env-file", - env_file, - "--volume", - cwd .. ":" .. cwd, - "--workdir", - cwd, - "alpine/terragrunt", - "/bin/sh", - "-c", - [[find ]] .. cwd .. [[ -type d -name .terragrunt-cache -prune -exec rm -rf {} \; &&]] - .. [[find ]] .. cwd .. [[ -type f -name .terraform.lock.hcl -prune -exec rm -rf {} \;]] - }, - filetype = "log", - title = "clean", - listed = true, - output_qf = false, - is_background_job = true - }) - end - - functions.plan = function(terragrunt_path, dirty) - if not dirty then - functions.clean() - end - P(terragrunt_path) - local cmd = { - "docker", - "run", - "--interactive", - "--rm", - "--env-file", - env_file, - "--volume", - cwd .. ":" .. cwd, - "--workdir", - cwd .. "/" .. terragrunt_path, - "alpine/terragrunt", - "terragrunt", - "plan" - } - require('firvish.job_control').start_job({ - cmd = cmd, - filetype = "log", - title = "plan", - listed = true, - output_qf = true, - is_background_job = false - }) - end - - functions.apply = function(terragrunt_path, dirty) - if not dirty then - functions.clean() - end - local cmd = { - "docker", - "run", - "--interactive", - "--rm", - "--env-file", - env_file, - "--volume", - cwd .. ":" .. cwd, - "--workdir", - cwd .. "/" .. terragrunt_path, - "alpine/terragrunt", - "terragrunt", - "apply", - "--terragrunt-non-interactive", - "--auto-approve" - } - require('firvish.job_control').start_job({ - cmd = cmd, - filetype = "log", - title = "plan", - listed = true, - output_qf = true, - is_background_job = false - }) - end - - functions.destroy = function(terragrunt_path, dirty) - if not dirty then - functions.clean() - end - local cmd = { - "docker", - "run", - "--interactive", - "--rm", - "--env-file", - env_file, - "--volume", - cwd .. ":" .. cwd, - "--workdir", - cwd .. "/" .. terragrunt_path, - "alpine/terragrunt", - "terragrunt", - "destroy", - "--terragrunt-non-interactive", - "--auto-approve" - } - require('firvish.job_control').start_job({ - cmd = cmd, - filetype = "log", - title = "plan", - listed = true, - output_qf = true, - is_background_job = false - }) - end - - _G.terragrunt_functions = functions - cmd [[command! -nargs=1 -complete=dir -bang TGplan :lua _G.terragrunt_functions.plan("<args>", "<bang>" ~= "!")]] - cmd [[command! -nargs=1 -complete=dir -bang TGapply :lua _G.terragrunt_functions.apply("<args>", "<bang>" ~= "!")]] - cmd [[command! -nargs=1 -complete=dir -bang TGdestroy :lua _G.terragrunt_functions.destroy("<args>", "<bang>" ~= "!")]] - cmd [[command! TGclean :lua _G.terragrunt_functions.clean()]] - -end -return M diff --git a/neovim/lua/vimrc/utils.lua b/neovim/lua/vimrc/utils.lua deleted file mode 100644 index 386efd2..0000000 --- a/neovim/lua/vimrc/utils.lua +++ /dev/null @@ -1,70 +0,0 @@ -local vim = vim -local cmd = vim.cmd -local M = {} - --- paths {{{ --- }}} --- --- logging {{{ -function M.log_error(msg, source, persist) - if source then - msg = "[" .. source .. "] " .. msg - end - cmd [[echohl ErrorMsg]] - if persist then - cmd("echomsg '" .. msg .. "'") - else - cmd("echo '" .. msg .. "'") - end - cmd [[echohl Normal]] -end - -function M.log_warning(msg, source, persist) - if source then - msg = "[" .. source .. "]" .. msg - end - msg = string.gsub(msg, "'", '"') - cmd [[echohl WarningMsg]] - if persist then - cmd("echomsg '" .. msg .. "'") - else - cmd("echo '" .. msg .. "'") - end - cmd [[echohl Normal]] -end --- }}} - --- tables {{{ -function table.filter() - print"hi" -end - -function table.keys(tbl) - local k = {} - for key, val in pairs(tbl) do - table.insert(k, key) - end - return k -end - --- }}} - --- string {{{ -function string.join(str, join_token) - local j = "" - local join = join_token or "" - if #str == 1 then - return str[1] - end - for i, token in ipairs(str) do - if i > 1 then - j = j .. join .. token - else - j = j .. token - end - end - return j -end --- }}} -return M --- vim: fdm=marker diff --git a/neovim/oldinit.lua b/neovim/oldinit.lua deleted file mode 100644 index af8eb1f..0000000 --- a/neovim/oldinit.lua +++ /dev/null @@ -1,138 +0,0 @@ --- fixes: --- ; eval (current-form): (let [hotpot (require :hotpot) eval ... --- ; ...ike/.cache/nvim/hotpot/hotpot.nvim/lua/hotpot/common.lua:15: module 'hotpot.api' not found: --- ; no field package.preload['hotpot.api'] --- ; no file '/home/mike/.cache/nvim/hotpot/hotpot.nvim/lua/hotpot/api.lua' --- ; no file '/nix/store/w08dyn0iamcixgc6cgv9ma8sq165vlvq-luajit-2.1.0-2022-10-04-env/share/lua/5.1/hotpot/api.lua' --- ; no file '/nix/store/w08dyn0iamcixgc6cgv9ma8sq165vlvq-luajit-2.1.0-2022-10-04-env/share/lua/5.1/hotpot/api/init.lua' --- ; no file '/nix/store/w08dyn0iamcixgc6cgv9ma8sq165vlvq-luajit-2.1.0-2022-10-04-env/lib/lua/5.1/hotpot/api.so' --- ; no file '/nix/store/w08dyn0iamcixgc6cgv9ma8sq165vlvq-luajit-2.1.0-2022-10-04-env/lib/lua/5.1/hotpot.so' -package.path = "/home/mike/.cache/nvim/hotpot/hotpot.nvim/lua/?/init.lua;" .. package.path -require("hotpot").setup({ - -- allows you to call `(require :fennel)`. - -- recommended you enable this unless you have another fennel in your path. - -- you can always call `(require :hotpot.fennel)`. - provide_require_fennel = false, - -- show fennel compiler results in when editing fennel files - enable_hotpot_diagnostics = true, - -- compiler options are passed directly to the fennel compiler, see - -- fennels own documentation for details. - compiler = { - -- options passed to fennel.compile for modules, defaults to {} - modules = { - -- not default but recommended, align lua lines with fnl source - -- for more debuggable errors, but less readable lua. - -- correlate = true - }, - -- options passed to fennel.compile for macros, defaults as shown - macros = { - env = "_COMPILER", -- MUST be set along with any other options - -- you may wish to disable fennels macro-compiler sandbox in some cases, - -- this allows access to tables like `vim` or `os` inside macro functions. - -- See fennels own documentation for details on these options. - compilerEnv = _G, - allowGlobals = false, - } - } -}) - -local cmp = require 'cmp' -cmp.setup({ - snippet = { - -- REQUIRED - you must specify a snippet engine - expand = function(args) - require('luasnip').lsp_expand(args.body) -- For `luasnip` users. - end, - }, - completion = { - autocomplete = false - }, - window = { - -- completion = cmp.config.window.bordered(), - -- documentation = cmp.config.window.bordered(), - }, - mapping = cmp.mapping.preset.insert({ - ['<C-b>'] = cmp.mapping.scroll_docs(-4), - ['<C-f>'] = cmp.mapping.scroll_docs(4), - ['<C-A>'] = cmp.mapping.complete(), - ['<C-e>'] = cmp.mapping.abort(), - ['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - }), - sources = cmp.config.sources({ - { name = 'conjure' }, - { name = 'nvim_lsp' }, - { name = 'luasnip' }, - { name = 'path' }, - }) -}) - -function setup_treesitter() - if vim.o.loadplugins == false then - return - end - - if vim.fn.exists(":TSInstall") == 1 then - return vim.notify "TreeSitter is already configured." - end - - -- vim.cmd([[packadd nvim-treesitter]]) - require 'nvim-treesitter.configs'.setup { - highlight = { - enable = true, - -- Setting this to true will run `:h syntax` and tree-sitter at the same time. - -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). - -- Using this option may slow down your editor, and you may see some duplicate highlights. - -- Instead of true it can also be a list of languages - }, - rainbow = { - enable = true, - -- disable = { "jsx", "cpp" }, list of languages you want to disable the plugin for - extended_mode = true, -- Also highlight non-bracket delimiters like html tags, boolean or table: lang -> boolean - max_file_lines = nil, -- Do not enable for files with more than n lines, int - -- colors = {}, -- table of hex strings - -- termcolors = {} -- table of colour name strings - }, - - incremental_selection = { - enable = true, - }, - indent = { - enable = false, - disable = { "python", "yaml" }, - }, - } - vim.cmd [[hi link TSParameter Todo]] -end -setup_treesitter() -cwd_save_session = function() - vim.cmd([[ -augroup vimrc_save_session - au! - au VimLeave * mksession! ]] .. os.getenv("PWD") .. [[/Session.vim -augroup end - ]]) -end -cwd_save_session() - -vim.cmd [[filetype plugin on]] -vim.cmd [[filetype indent on]] -vim.cmd [[colorscheme gruvbox-material]] -vim.cmd [[highlight WinSeparator guibg=None]] - --- }}} - - --- load global and utility functions - --- racket nvim workaround -local racket_lang = vim.g.racket_hash_lang_dict -racket_lang.sicp = "racket" -vim.g.racket_hash_lang_dict = racket_lang - -vim.g.mapleader = " " -vim.g.maplocalleader = " " -vim.o.shell = Flake.bash --- local vimrc = require('vimrc') - --- tree-sitter {{{ --- }}} |
