summary refs log tree commit diff
path: root/.vim/init.lua
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2022-04-15 15:10:49 +0200
committerRobert Günzler <r@gnzler.io>2022-04-15 15:10:49 +0200
commitab78451231d1852844bcbd11d4320126edb1c693 (patch)
tree6e136b5db18e62ad41311ac24e31fb164b1978e3 /.vim/init.lua
parente9677f2bf9b88001ee063f2c99ef2447bd736fd5 (diff)
vim: use lua autocommands
Diffstat (limited to '.vim/init.lua')
-rw-r--r--.vim/init.lua132
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 -- {{{