summaryrefslogtreecommitdiffstats
path: root/lua/conf/autos.lua
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lua/conf/autos.lua50
1 files changed, 50 insertions, 0 deletions
diff --git a/lua/conf/autos.lua b/lua/conf/autos.lua
new file mode 100644
index 0000000..51ed58a
--- /dev/null
+++ b/lua/conf/autos.lua
@@ -0,0 +1,50 @@
+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("'\""))]])
+ vim.api.nvim_input('zz')
+ 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
+})