diff options
| author | Robert Günzler <r@gnzler.io> | 2022-04-15 15:10:49 +0200 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2022-04-15 15:10:49 +0200 |
| commit | ab78451231d1852844bcbd11d4320126edb1c693 (patch) | |
| tree | 6e136b5db18e62ad41311ac24e31fb164b1978e3 /.vim | |
| parent | e9677f2bf9b88001ee063f2c99ef2447bd736fd5 (diff) | |
vim: use lua autocommands
Diffstat (limited to '.vim')
| -rw-r--r-- | .vim/init.lua | 132 |
1 files changed, 98 insertions, 34 deletions
diff --git a/.vim/init.lua b/.vim/init.lua index 774a098..975c86f 100644 --- a/.vim/init.lua +++ b/.vim/init.lua @@ -203,40 +203,104 @@ vim.keymap.set('x', '<leader>bf', -- }}} -- AUTO GROUPS -- {{{ -augroup { - yank_highlight = { - {'TextYankPost', '*', [[ silent! lua require("vim.highlight").on_yank() ]]} - }, - obvious_active_win = { - {'WinEnter', '*', [[ set cul ]]}, - {'WinLeave', '*', [[ set nocul ]]} - }, - c_makeprg = { - {'VimEnter', '*.c', [[ setlocal makeprg=ninja\ -C\ build ]]} - }, - open_qf = { - {'QuickFixCmdPost', '*', [[ :clist ]]} - }, - -- packer_auto_compile = {{'BufWritePost', 'plugins.lua', [[ PackerCompile ]]}}, - commentstring = { - {'FileType', 'i3config', [[ setlocal commentstring=#\ %s ]]}, - {'FileType', 'jsonc', [[ setlocal commentstring=//\ %s ]]}, - }, - folds = { - {'VimEnter', '.vim/*', [[ setlocal foldenable ]]}, - {'FileType', 'json,jsonc,yaml,toml', [[ setlocal nofoldenable ]]}, - }, - easy_quit = { - {'FileType', 'help,neorg', [[ nnoremap <buffer><silent> q <cmd>close<cr> ]]}, - {'FileType', 'alpha', [[ 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]]} - } -} +local augroup = vim.api.nvim_create_augroup +local aucmd = vim.api.nvim_create_autocmd + +do + local group = augroup('YankHighlight', { clear = true }) + aucmd('TextYankPost', { callback = vim.highlight.on_yank, group = group }) +end + +do + local group = augroup('ObviousActiveWin', { clear = true }) + aucmd('WinEnter', { command = 'set cul', group = group }) + aucmd('WinLeave', { command = 'set nocul', group = group }) +end + +do + local group = augroup('OpenQuickFix', { clear = true }) + aucmd('QuickFixCmdPost', { + callback = function() + -- make sure there is anyting in the qflist before opening it, + -- avoids: `E42: No Errors` + local qf = vim.fn.getqflist({size = true}) + if qf and qf.size > 0 then vim.cmd [[clist]] end + end, + group = group, + }) +end + +do + local group = augroup('ManualMakeprg', { clear = true }) + aucmd('VimEnter', { pattern = '*.c', + callback = function() vim.opt_local.makeprg = 'ninja -C build' end, + group = group, + }) +end + +do + local group = augroup('ManualCommentString', { clear = true }) + aucmd('FileType', { pattern = 'i3config', + callback = function() vim.opt_local.commentstring = '# %s' end, + group = group, + }) + aucmd('FileType', { pattern = 'jsonc', + callback = function() vim.opt_local.commentstring = '// %s' end, + group = group, + }) +end + +do + local group = augroup('ManualFolds', { clear = true }) + aucmd('VimEnter', { pattern = 'vim/*', + callback = function() vim.opt_local.foldenable = true end, + group = group, + }) + aucmd('FileType', { pattern = 'json,jsonc,yaml,toml', + callback = function() vim.opt_local.foldenable = false end, + group = group, + }) +end + +do + local group = augroup('EasyQuit', { clear = true }) + aucmd('FileType', { pattern = 'help,neorg,dap-float', + callback = function() + vim.keymap.set('n', 'q', '<cmd>close<cr>', + { silent = true, buffer = 0 } + ) + end, + group = group, + }) + aucmd('FileType', { pattern = 'alpha', + callback = function() + vim.keymap.set('n', 'q', '<cmd>bdel<cr>', + { silent = true, buffer = 0 } + ) + end, + group = group, + }) + aucmd('TermClose', { pattern = 'term://*', + command = [[ if !v:event.status | exe 'bdelete! '..expand('<abuf>') | endif ]], + group = group, + }) +end + +-- do +-- local group = augroup('DetectGomod', { clear = true }) +-- aucmd({'BufRead', 'BufNewFile}', { pattern = 'go.mod', +-- callback = function() vim.opt_local.filetype = 'gomod' end, +-- group = group, +-- }) +-- end + +do + local group = augroup('DetectBinDir', { clear = true }) + aucmd({'BufRead', 'BufNewFile'}, { pattern = '/home/robert/bin/*', + callback = function() vim.opt_local.filetype = 'sh' end, + group = group, + }) +end -- }}} -- USER COMMANDS -- {{{ |