more stuff too lazy to seperate
This commit is contained in:
85
lua/conf/auto.lua
Normal file
85
lua/conf/auto.lua
Normal file
@ -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
|
||||
})
|
Reference in New Issue
Block a user