diff options
| -rw-r--r-- | .vim/after/ftplugin/markdown.lua | 35 | ||||
| -rw-r--r-- | .vim/init.lua | 118 | ||||
| -rw-r--r-- | .vim/lua/hardmode.lua | 44 | ||||
| -rw-r--r-- | .vim/lua/lsp.lua | 31 | ||||
| -rw-r--r-- | .vim/lua/plugins.lua | 66 | ||||
| -rw-r--r-- | .vim/lua/spell.lua | 8 |
6 files changed, 155 insertions, 147 deletions
diff --git a/.vim/after/ftplugin/markdown.lua b/.vim/after/ftplugin/markdown.lua index 76d1bf1..45219ee 100644 --- a/.vim/after/ftplugin/markdown.lua +++ b/.vim/after/ftplugin/markdown.lua @@ -1,5 +1,3 @@ -local nnoremap = require('astronauta.keymap').nnoremap - require('spell') vim.opt.foldlevel = 1 @@ -8,33 +6,12 @@ vim.opt.foldlevel = 1 -- vim.fn.matchadd('Conceal', '\\[-\\]', 0, -1, { conceal = '☒' }) -- vim.fn.matchadd('Conceal', '\\[\\]', 0, -1, { conceal = '🞕' }) -nnoremap { +vim.keymap.set('n', '<Plug>Markdown_OpenUrlUnderCursor', - function() require('misc').open_under_cursor('url-launcher') end, -} + function() require('misc').open_under_cursor('url-launcher') end +) -nnoremap { '<leader>zn', function() require('zk').new() end } -nnoremap { '<leader>zi', function() require('zk').index() end } -vim.cmd [[ command! -nargs=* ZettelkastenNew lua require('zk').new(nil, <f-args>) ]] --- markdown list folding -local function calc_lvl(line) - local i, k = string.find(line, '^[ ]*[*-]') - if i and k then return ((k-i) / vim.fn.shiftwidth()) + 1 end - return 0 -end -function _G.markdown_lst_foldexpr(lnum) - local lines = vim.api.nvim_buf_get_lines(0, lnum-1, lnum+1, false) - if not #lines == 2 then - return '=' - end - local lvl_c = calc_lvl(lines[1]) - local lvl_n = calc_lvl(lines[2]) - if lvl_c > 0 then - if lvl_c < lvl_n then return '>'..lvl_c end -- starts - if lvl_c > lvl_n then return '<'..lvl_c end -- ends - end - return lvl_c -end -vim.opt.foldlevel = 0 -vim.opt.foldexpr = 'v:lua.markdown_lst_foldexpr(v:lnum)' +-- vim.keymap.set('n', '<leader>zn', function() require('zk').new() end) +-- vim.keymap.set('n', '<leader>zi', function() require('zk').index() end) +-- vim.cmd [[ command! -nargs=* ZettelkastenNew lua require('zk').new(nil, <f-args>) ]] diff --git a/.vim/init.lua b/.vim/init.lua index 1c01c3a..3a60921 100644 --- a/.vim/init.lua +++ b/.vim/init.lua @@ -1,4 +1,4 @@ --- vim: fdm=marker +-- vim: fdm=marker fdl=0 local cmd = vim.cmd local g = vim.g @@ -60,14 +60,10 @@ opt.undolevels = 1000 opt.updatetime = 200 opt.wrap = true -require('globals') -require('plugins') -require('hardmode') - -- configure :grep to use ripgrep if it's available if vim.fn.executable('rg') then - vim.opt.grepprg = 'rg --vimgrep --smart-case --hidden' - vim.opt.grepformat = '%f:%l:%c:%m' + opt.grepprg = 'rg --vimgrep --smart-case --hidden' + opt.grepformat = '%f:%l:%c:%m' end -- persistent undo @@ -75,8 +71,8 @@ local undodir = vim.fn.stdpath('cache') .. '/undodir_' .. vim.env.USER if vim.fn.isdirectory(undodir) == 0 then vim.fn.mkdir(undodir, 'p', '0700') end -vim.g.undodir = undodir -vim.opt.undofile = true +g.undodir = undodir +opt.undofile = true -- }}} -- COLORS -- {{{ @@ -84,38 +80,78 @@ vim.opt.undofile = true cmd [[ colorscheme lush ]] -- }}} +require('globals') +require('plugins') +require('hardmode') + +-- Configure builtin diagnositics {{{ +vim.diagnostic.config { + underline = true, + virtual_text = false, + signs = true, + float = false, + update_in_insert = false, + + virtual_lines = { prefix = '⬐ ' }, +} +vim.fn.sign_define({ + {name='DiagnosticSignError', text='✗', texthl='DiagnosticSignError'}, + -- {name='DiagnosticSignWarn', text='⚡', texthl='DiagnosticSignWarn'}, + {name='DiagnosticSignWarn', text='⚐', texthl='DiagnosticSignWarn'}, + {name='DiagnosticSignInfo', text='ℹ', texthl='DiagnosticSignInfo'}, + {name='DiagnosticSignHint', text='🞶', texthl='DiagnosticSignHint'} +}) +-- }}} + -- KEY BINDS -- {{{ -local nnoremap = require('astronauta.keymap').nnoremap -local vnoremap = require('astronauta.keymap').vnoremap -local tnoremap = require('astronauta.keymap').tnoremap - -nnoremap { 'Q', function() cmd [[ quitall ]] end, silent = false } -nnoremap { 'gb', function() cmd [[ bnext ]] end } -nnoremap { 'gB', function() cmd [[ bprevious ]] end } -nnoremap { '<tab>', function() cmd [[ exe 'normal zA' | IndentBlanklineRefresh ]] end } - --- nnoremap { '{', [[ {zz ]] } --- nnoremap { '}', [[ }zz ]] } -vim.cmd [[nnoremap c "_c]] -vim.cmd [[nnoremap C "_C]] -vim.cmd [[vnoremap c "_c]] -vim.cmd [[vnoremap C "_C]] - -tnoremap { '<esc>', [[ <c-\><c-n> ]] } -tnoremap { '<leader>qq', [[ <c-\><c-n> :bdelete!<cr> ]] } -vnoremap { 'T', function() cmd [[ retab! | call feedkeys("\<esc>") ]] end } +vim.keymap.set('n', 'Q', [[ :quitall<cr> ]], {silent = true}) +vim.keymap.set('n', 'gb', [[ :bnext<cr> ]], {silent = true}) +vim.keymap.set('n', 'gB', [[ :bprevious<cr> ]], {silent = true}) +vim.keymap.set('n', '<tab>', [[ :exe 'normal za' | IndentBlanklineRefresh<cr> ]], {silent = true}) + +vim.keymap.set('n', ']d', vim.diagnostic.goto_next) +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) +vim.keymap.set('n', '<leader>d', vim.diagnostic.open_float) + +-- swap gf and gF +vim.keymap.set('n', 'gf', [[ gF ]]) +vim.keymap.set('v', 'gf', [[ gF ]]) + +-- vim.keymap.set('n', '{', [[ {zz ]]) +-- vim.keymap.set('n', '}', [[ }zz ]]) +-- this makes c<anything> jump to the start of the line +-- vim.keymap.set({'n', 'v'}, 'c', '_c') +-- vim.keymap.set({'n', 'v'}, 'C', '_C') + +vim.keymap.set('t', '<esc>', [[ <c-\><c-n> ]]) +vim.keymap.set('t', '<leader>qq', [[ <c-\><c-n> :bdelete!<cr> ]]) +vim.keymap.set('v', 'T', + function() + vim.cmd [[retab!]] + vim.fn.feedkeys("\\<esc>") + end) local misc = require('misc') -nnoremap { 'gf', function() misc.file_under_cursor(function(s) vim.cmd('edit ' .. s) end) end } -nnoremap { 'gF', function() misc.open_under_cursor() end } -nnoremap { 'gx', function() misc.open_under_cursor('url-launcher') end } -nnoremap { 'gGw', function() misc.word_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end } -nnoremap { 'gGe', function() misc.expr_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end } -nnoremap { 'gGf', function() misc.file_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end } -nnoremap { 'gs', function() misc.word_under_cursor(function(s) vim.fn.feedkeys(':%s/' .. s .. '//g'); cmd [[ call feedkeys("\<left>\<left>") ]] end) end } - -nnoremap { '<leader>r', misc.live_grep } -nnoremap { '<leader>f', misc.find_files } +vim.keymap.set('n', 'gd', function() misc.open_under_cursor(nil, true) end) +-- vim.keymap.set('n', 'gf', function() misc.file_under_cursor(function(s) vim.cmd('edit ' .. s) end) end) +vim.keymap.set('n', 'gx', function() misc.open_under_cursor('url-launcher') end) +vim.keymap.set('n', 'gu', function() misc.open_under_cursor('url-launcher') end) +vim.keymap.set('n', 'gGw', function() misc.word_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end) +vim.keymap.set('n', 'gGe', function() misc.expr_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end) +vim.keymap.set('n', 'gGf', function() misc.file_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end) +vim.keymap.set('n', 'gss', function() misc.word_under_cursor(function(s) vim.fn.feedkeys(':%s/' .. s .. '//g'); cmd [[ call feedkeys("\<left>\<left>") ]] end) end) + +vim.keymap.set('n', '<leader>r', misc.live_grep) +vim.keymap.set('n', '<leader>f', misc.find_files) + +vim.keymap.set('n', 'dgl', 'diffget LOCAL') +vim.keymap.set('n', 'dgr', 'diffget REMOTE') +vim.keymap.set('n', 'dpl', 'diffpush LOCAL') +vim.keymap.set('n', 'dpr', 'diffpush REMOTE') + +vim.keymap.set('x', '<leader>bf', + [[<ESC><CMD>lua require("misc").fold_block()<CR>]], + { noremap = true, silent = true }) -- }}} -- AUTO GROUPS -- {{{ @@ -145,6 +181,12 @@ augroup { help_quit = { {'FileType', 'help', [[ nnoremap <buffer><silent> q <cmd>bdel<cr> ]]} }, + detect_gomod = { + {'BufRead,BufNewFile', 'go.mod', [[setlocal filetype=gomod]]} + }, + detect_bindir_scripts = { + {'BufRead,BufNewFile', '/home/robert/bin/*', [[setlocal filetype=sh]]} + } } -- }}} diff --git a/.vim/lua/hardmode.lua b/.vim/lua/hardmode.lua index e6fea02..950afdf 100644 --- a/.vim/lua/hardmode.lua +++ b/.vim/lua/hardmode.lua @@ -2,33 +2,29 @@ -- map them to more useful actions instead -- https://coderoncode.com/posts/vim-is-the-perfect-ide -local cmd = vim.cmd -local nnoremap = require('astronauta.keymap').nnoremap -local vnoremap = require('astronauta.keymap').nnoremap - local bail = 'silent! echohl ErrorMsg | echo "HARD MODE: hjkl operation only" | echohl None' -nnoremap { 'R<up>', function() vim.cmd [[ resize +2 ]] end } -nnoremap { 'R<down>', function() vim.cmd [[ resize -2 ]] end } -nnoremap { 'R<left>', function() vim.cmd [[ vertical resize +2 ]] end } -nnoremap { 'R<right>', function() vim.cmd [[ vertical resize +2 ]] end } +vim.keymap.set('n', 'R<up>', function() vim.cmd [[ resize +2 ]] end) +vim.keymap.set('n', 'R<down>', function() vim.cmd [[ resize -2 ]] end) +vim.keymap.set('n', 'R<left>', function() vim.cmd [[ vertical resize +2 ]] end) +vim.keymap.set('n', 'R<right>', function() vim.cmd [[ vertical resize +2 ]] end) -nnoremap { 'W<up>', function() vim.cmd [[ wincmd k ]] end } -nnoremap { 'W<down>', function() vim.cmd [[ wincmd j ]] end } -nnoremap { 'W<left>', function() vim.cmd [[ wincmd h ]] end } -nnoremap { 'W<right>', function() vim.cmd [[ wincmd l ]] end } +vim.keymap.set('n', 'W<up>', function() vim.cmd [[ wincmd k ]] end) +vim.keymap.set('n', 'W<down>', function() vim.cmd [[ wincmd j ]] end) +vim.keymap.set('n', 'W<left>', function() vim.cmd [[ wincmd h ]] end) +vim.keymap.set('n', 'W<right>', function() vim.cmd [[ wincmd l ]] end) -nnoremap { 'Wm<up>', function() vim.cmd [[ wincmd K ]] end } -nnoremap { 'Wm<down>', function() vim.cmd [[ wincmd J ]] end } -nnoremap { 'Wm<left>', function() vim.cmd [[ wincmd H ]] end } -nnoremap { 'Wm<right>', function() vim.cmd [[ wincmd L ]] end } +vim.keymap.set('n', 'Wm<up>', function() vim.cmd [[ wincmd K ]] end) +vim.keymap.set('n', 'Wm<down>', function() vim.cmd [[ wincmd J ]] end) +vim.keymap.set('n', 'Wm<left>', function() vim.cmd [[ wincmd H ]] end) +vim.keymap.set('n', 'Wm<right>', function() vim.cmd [[ wincmd L ]] end) -nnoremap { '<up>', function() vim.cmd(bail) end } -nnoremap { '<down>', function() vim.cmd(bail) end } -nnoremap { '<left>', function() vim.cmd(bail) end } -nnoremap { '<right>', function() vim.cmd(bail) end } +vim.keymap.set('n', '<up>', function() vim.cmd(bail) end) +vim.keymap.set('n', '<down>', function() vim.cmd(bail) end) +vim.keymap.set('n', '<left>', function() vim.cmd(bail) end) +vim.keymap.set('n', '<right>', function() vim.cmd(bail) end) -vnoremap { '<up>', function() vim.cmd(bail) end } -vnoremap { '<down>', function() vim.cmd(bail) end } -vnoremap { '<left>', function() vim.cmd(bail) end } -vnoremap { '<right>', function() vim.cmd(bail) end } +vim.keymap.set('v', '<up>', function() vim.cmd(bail) end) +vim.keymap.set('v', '<down>', function() vim.cmd(bail) end) +vim.keymap.set('v', '<left>', function() vim.cmd(bail) end) +vim.keymap.set('v', '<right>', function() vim.cmd(bail) end) diff --git a/.vim/lua/lsp.lua b/.vim/lua/lsp.lua index 588d31a..364ec86 100644 --- a/.vim/lua/lsp.lua +++ b/.vim/lua/lsp.lua @@ -23,48 +23,43 @@ local my_attach = function(client, bufnr) spinner_lsp.on_attach(client, bufnr) if client.resolved_capabilities.goto_definition then - nnoremap { '<C-]>' , vim.lsp.buf.definition } - nnoremap { 'gd' , vim.lsp.buf.definition } - nnoremap { 'gR' , vim.lsp.buf.references } + vim.keymap.set('n', '<C-]>' , vim.lsp.buf.definition) + vim.keymap.set('n', 'gd' , vim.lsp.buf.definition) + vim.keymap.set('n', 'gR' , vim.lsp.buf.references) end if client.resolved_capabilities.hover then - nnoremap { 'K' , vim.lsp.buf.hover } + vim.keymap.set('n', 'K' , vim.lsp.buf.hover) end if client.resolved_capabilities.rename then - nnoremap { 'grr' , vim.lsp.buf.rename } + vim.keymap.set('n', 'grr' , vim.lsp.buf.rename) end if client.resolved_capabilities.signature_help then - nnoremap { '<c-h>' , vim.lsp.buf.signature_help } - -- nnoremap <silent> ;s <cmd> lua vim.lsp.buf.signature_help()<CR> + vim.keymap.set('n', '<c-h>' , vim.lsp.buf.signature_help) + -- vim.keymap.set('n', ';s ' , vim.lsp.buf.signature_help) end if client.resolved_capabilities.document_formatting then - nnoremap { '<leader>f' , vim.lsp.buf.formatting_sync } + vim.keymap.set('n', '<leader>f' , vim.lsp.buf.formatting_sync) end if client.resolved_capabilities.type_definition then - nnoremap { 'gT' , vim.lsp.buf.type_definition } + vim.keymap.set('n', 'gT' , vim.lsp.buf.type_definition) end if client.resolved_capabilities.declaration then - nnoremap { 'gD' , vim.lsp.buf.declaration } + vim.keymap.set('n', 'gD' , vim.lsp.buf.declaration) end if client.resolved_capabilities.implementation then - nnoremap { 'gI' , vim.lsp.buf.implementation } + vim.keymap.set('n', 'gI' , vim.lsp.buf.implementation) end if client.resolved_capabilities.workspace_symbol then - nnoremap { 'gW' , vim.lsp.buf.workspace_symbol } + vim.keymap.set('n', 'gW' , vim.lsp.buf.workspace_symbol) end -- if client.resolved_capabilities.document_symbol then - -- nnoremap { 'g0', vim.lsp.buf.document_symbol } + -- vim.keymap.set('n', 'g0', 'vim.lsp.buf.document_symbol') -- end - nnoremap { ']d' , vim.lsp.diagnostic.goto_next } - nnoremap { '[d' , vim.lsp.diagnostic.goto_prev } - nnoremap { '<leader>d' , vim.lsp.diagnostic.show_line_diagnostics } - augroup { lsp_user = { {'BufWritePre' , '*' , 'lua require("lsp").format(vim.fn.expand("<afile>:p"))'}, {'BufWritePre' , '*.go' , 'lua vim.lsp.buf.code_action({ only = {"source.organizeImports"} })'}, - -- {'CursorHold' , '*' , 'lua vim.lsp.diagnostic.show_line_diagnostics()'}, } } end diff --git a/.vim/lua/plugins.lua b/.vim/lua/plugins.lua index d5d5ebb..c55e650 100644 --- a/.vim/lua/plugins.lua +++ b/.vim/lua/plugins.lua @@ -393,33 +393,36 @@ return require('packer').startup({function() } } - nnoremap { ';Q', require('telescope.builtin').quickfix } - nnoremap { ';C', require('telescope.builtin').loclist } - - nnoremap { ';H', require('telescope.builtin').help_tags } - nnoremap { ';b', require('telescope.builtin').buffers } - nnoremap { ';c', require('telescope.builtin').commands } - nnoremap { ';f', require('telescope.builtin').fd } - nnoremap { ';g', require('telescope.builtin').live_grep } - nnoremap { ';h', require('telescope.builtin').command_history } - nnoremap { ';l', require('telescope.builtin').current_buffer_fuzzy_find } - nnoremap { ';o', require('telescope.builtin').oldfiles } - nnoremap { ';t', require('telescope.builtin').tags } - nnoremap { ';w', require('telescope.builtin').file_browser } - - nnoremap { ';v', function() + -- required to get fzf-native working + require('telescope').load_extension('fzf') + require('telescope').load_extension('ui-select') + + vim.keymap.set('n', ';Q', require('telescope.builtin').quickfix) + vim.keymap.set('n', ';C', require('telescope.builtin').loclist) + + vim.keymap.set('n', ';H', require('telescope.builtin').help_tags) + vim.keymap.set('n', ';b', require('telescope.builtin').buffers) + vim.keymap.set('n', ';c', require('telescope.builtin').commands) + vim.keymap.set('n', ';f', require('telescope.builtin').fd) + vim.keymap.set('n', ';g', require('telescope.builtin').live_grep) + vim.keymap.set('n', ';h', require('telescope.builtin').command_history) + vim.keymap.set('n', ';l', require('telescope.builtin').current_buffer_fuzzy_find) + vim.keymap.set('n', ';o', require('telescope.builtin').oldfiles) + vim.keymap.set('n', ';t', require('telescope.builtin').tags) + -- vim.keymap.set('n', ';w', require('telescope.builtin').file_browser) + + vim.keymap.set('n', ';v', function() require('telescope.builtin').find_files({ prompt_title = 'vimrc', previewer = false, cwd = vim.fn.stdpath('config'), }) - end } + end) -- LSP stuff - nnoremap { ';s', require('telescope.builtin').lsp_workspace_symbols } - nnoremap { ';a', require('telescope.builtin').lsp_code_actions } - nnoremap { ';d', require('telescope.builtin').lsp_workspace_diagnostics } - nnoremap { ';r', require('telescope.builtin').lsp_references } + vim.keymap.set('n', ';s', require('telescope.builtin').lsp_workspace_symbols) + vim.keymap.set('n', ';a', require('telescope.builtin').lsp_code_actions) + vim.keymap.set('n', ';r', require('telescope.builtin').lsp_references) end} -- }}} -- TODO(robert): look into this more @@ -428,9 +431,6 @@ return require('packer').startup({function() config = function() end} - -- polyfill for some missing stuff - use {'tjdevries/astronauta.nvim'} - -- snippets use {'dcampos/nvim-snippy', -- {{{ requires = { @@ -438,14 +438,16 @@ return require('packer').startup({function() }, config = function() local S = require('snippy') - local K = require('astronauta.keymap') - K.inoremap { '<C-j>', function() if S.can_jump(1) then S.next() else return '<C-j>' end end } - K.inoremap { '<C-k>', function() if S.can_jump(-1) then S.previous() else return '<C-k>' end end } - K.snoremap { '<C-j>', function() if S.can_jump(1) then S.next() else return '<C-j>' end end } - K.snoremap { '<C-k>', function() if S.can_jump(-1) then S.previous() else return '<C-k>' end end } + vim.keymap.set('i', '<C-j>', function() if S.can_jump(1) then S.next() else return '<C-j>' end end) + vim.keymap.set('i', '<C-k>', function() if S.can_jump(-1) then S.previous() else return '<C-k>' end end) + vim.keymap.set('s', '<C-j>', function() if S.can_jump(1) then S.next() else return '<C-j>' end end) + vim.keymap.set('s', '<C-k>', function() if S.can_jump(-1) then S.previous() else return '<C-k>' end end) end} -- }}} - use {'junegunn/vim-easy-align'} + use {'junegunn/vim-easy-align', cmd = {'EasyAligh', 'LiveEasyAlign'}, -- {{{ + config = function() + vim.keymap.set('v', '<enter>', ':LiveEasyAlign<cr>') + end} -- }}} use {'editorconfig/editorconfig-vim', -- {{{ config = function() @@ -499,7 +501,7 @@ return require('packer').startup({function() vim.g.git_messenger_always_into_popup = true vim.g.git_messenger_close_on_cursor_moved = true vim.g.git_messenger_no_default_mappings = true - require('astronauta.keymap').nnoremap { '<leader>gm', function() vim.cmd [[GitMessenger]] end } + vim.keymap.set('n', '<leader>gm', function() vim.cmd [[GitMessenger]] end) end} -- }}} use {'liuchengxu/vista.vim'} @@ -535,12 +537,12 @@ return require('packer').startup({function() local pickers = require('telescope.pickers') local finders = require('telescope.finders') - require('astronauta.keymap').nnoremap { ';O', function() + vim.keymap.set('s', ';O', function() pickers.new(opts, { prompt_title = 'Orgmode', finder = finders.new_table(require('orgmode.config'):get_all_files()), }):find() - end } + end) -- vim.cmd [[ command! Orgmode lua require('orgmode').action('agenda.prompt') ]] -- vim.cmd [[ command! OrgmodeCapture lua require('orgmode').action('capture.refile') ]] diff --git a/.vim/lua/spell.lua b/.vim/lua/spell.lua index bed389e..885b721 100644 --- a/.vim/lua/spell.lua +++ b/.vim/lua/spell.lua @@ -4,9 +4,5 @@ vim.opt.spell = true vim.opt.spelllang = 'en_en' vim.opt.spellfile = vim.fn.stdpath('data') .. '/spellfile.utf-8.add' -require('astronauta.keymap').nnoremap { - '<C-l>', require('telescope.builtin').spell_suggest, -} -require('astronauta.keymap').inoremap { - '<C-l>', [[ <c-g>u<esc>[s1z=`]a<c-g>u ]], -} +vim.keymap.set('n', '<C-l>', require('telescope.builtin').spell_suggest) +vim.keymap.set('n', '<C-l>', [[<c-g>u<esc>[s1z=`]a<c-g>u]]) |