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', { pattern = '*', group = bufcheck, 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('BufWritePre', { pattern = '*', group = fsmod, desc = 'remove trailing spaces on file save', command = [[%s/\s\+$//e]] }) auto('BufWritePre', { pattern = '*', 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 })