88 lines
1.9 KiB
Lua
88 lines
1.9 KiB
Lua
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', {
|
|
desc = 'Unset cursorline',
|
|
group = toggles,
|
|
callback = function() vim.opt.cursorline = false end
|
|
})
|
|
|
|
auto('WinEnter', {
|
|
desc = 'Set cursorline',
|
|
group = toggles,
|
|
callback = function()
|
|
if vim.bo.filetype ~= 'alpha' then
|
|
vim.opt.cursorline = true
|
|
end
|
|
end
|
|
})
|
|
|
|
auto('ColorScheme', {
|
|
desc = 'Update statusline on colorscheme change',
|
|
group = winchange,
|
|
callback = function() require('el').reset_windows() end
|
|
})
|