local misc = require('core.misc') local auto, augroup = misc.auto, misc.augroup -- auto commands which interact with bufferes without modifying them local bufcheck = augroup('bufcheck') -- auto commands which modify things on the filesystem local fsmod = augroup('fsmod') auto('FocusGained', { group = bufcheck, desc = 'Update contents of file.', command = 'checktime', }) auto('TextYankPost', { group = bufcheck, desc = 'Highlight on yank.', callback = function() vim.highlight.on_yank { timeout = 250 } end }) auto('BufRead', { group = bufcheck, desc = 'Return to the last place the buffer was closed in.', callback = function() vim.cmd.call([[setpos(".", getpos("'\""))]]) end }) auto('BufWritePre', { group = fsmod, desc = 'remove trailing spaces on file save', callback = function() local pos = vim.api.nvim_win_get_cursor(0) vim.cmd([[%s/\s\+$//e]]) vim.api.nvim_win_set_cursor(0, pos) end }) auto('BufWritePre', { group = fsmod, 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 })