From f35b13d669867209427449840ff0930a732591dc Mon Sep 17 00:00:00 2001 From: Squibid Date: Fri, 24 Nov 2023 21:38:31 -0500 Subject: more stuff too lazy to seperate --- lua/conf/auto.lua | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 lua/conf/auto.lua (limited to 'lua/conf/auto.lua') diff --git a/lua/conf/auto.lua b/lua/conf/auto.lua new file mode 100644 index 0000000..8c990d6 --- /dev/null +++ b/lua/conf/auto.lua @@ -0,0 +1,85 @@ +local function auto(event, opts) + a.nvim_create_autocmd(event, opts) +end + +local function augroup(name, opts) + opts = opts or {} + opts['clear'] = true + a.nvim_create_augroup(name, opts) +end + +local winchange = augroup('winchange') +local bufcheck = augroup('bufcheck') +local toggles = augroup('toggles') + +auto({ "FocusGained", "TermClose", "TermLeave" }, { + group = bufcheck, + desc = 'Update contents of file.', + command = "checktime", +}) + +auto("VimResized", { + group = winchange, + desc = 'Resize splits when window is resized.', + callback = function() + local current_tab = vim.fn.tabpagenr() + vim.cmd("tabdo wincmd =") + vim.cmd("tabnext " .. current_tab) + end, +}) + +auto('TextYankPost', { + group = bufcheck, + pattern = '*', + desc = 'Highlight on yank.', + callback = function() + vim.highlight.on_yank{ timeout = 250 } + end +}) + +auto('BufRead', { + pattern = '*', + group = bufcheck, + desc = 'Return to the last place the buffer was closed in.', + callback = function() vim.cmd([[call setpos(".", getpos("'\""))]]) end +}) + +auto('FileType', { + pattern = { 'gitcommit', 'markdown' }, + desc = 'Spell checking and wrapping in commit buffers and markdown files.', + callback = function() + vim.opt_local.wrap = true + vim.opt_local.spell = true + end +}) + +auto('BufWritePre', { + pattern = '*', + group = bufcheck, + desc = 'Basically mkdir -p.', + callback = function(ctx) + if ctx.match:match("^%w%w+://") then return end + local dir = vim.fn.fnamemodify(ctx.file, ':p:h') + vim.fn.mkdir(dir, 'p') + end +}) + +auto('WinLeave', { + pattern = '!Alpha', + desc = 'Unset cursorline', + group = toggles, + callback = function() vim.opt.cursorline = false end +}) + +auto('WinEnter', { + pattern = '!Alpha', + desc = 'Set cursorline', + group = toggles, + callback = function() vim.opt.cursorline = true end +}) + +auto('ColorScheme', { + desc = 'Update statusline on colorscheme change', + group = winchange, + callback = function() require('el').reset_windows() end +}) -- cgit v1.2.1