vim: use nvim 0.7 new API for create autocmds in lua

This commit is contained in:
Fernando Schauenburg 2022-07-01 22:30:50 +02:00
parent cedb033443
commit 10466e0391

View file

@ -1,31 +1,36 @@
local function make_autocmds(groups)
for name, commands in pairs(groups) do
vim.cmd('augroup my_' .. name)
vim.cmd('autocmd!')
for _, item in ipairs(commands) do
vim.cmd('autocmd ' .. table.concat(item, ' '))
end
vim.cmd('augroup END')
local augroup = vim.api.nvim_create_augroup
local autocmd = vim.api.nvim_create_autocmd
local id = augroup("my_autocmds", { clear = true} )
autocmd({'BufNewFile', 'BufRead'}, {
desc = 'Make it possible to use `gf` to jump to my neovim lua modules.',
group = id,
pattern = 'init.lua',
command = "setlocal path+=~/.config/nvim/lua includeexpr=substitute(v:fname,'\\\\.','/','g')"
})
autocmd('InsertEnter', {
desc = 'Disable `cursorline` when entering Insert mode.',
group = id,
pattern = '*',
callback = function(args)
vim.w.had_cursorline = vim.opt.cursorline:get()
vim.opt.cursorline = false
end
end
})
make_autocmds {
buffers = {
-- Make it possible to use `gf` to jump to my configuration modules.
{ 'BufNewFile,BufRead', 'init.lua',
"setlocal path+=~/.config/nvim/lua includeexpr=substitute(v:fname,'\\\\.','/','g')"},
},
windows = {
-- Disable cursorline when entering Insert mode (but remember it)...
{ 'InsertEnter', '*',
[[let w:had_cursorline=&cursorline | set nocursorline]] },
-- ...and re-enable when leaving if it had been set before.
{ 'InsertLeave', '*',
[[if exists('w:had_cursorline') | let &cursorline=w:had_cursorline | endif]] },
},
yank = {
-- Briefly highlight yanked text.
{ 'TextYankPost', '*', 'silent! lua vim.highlight.on_yank()' },
},
}
autocmd('InsertLeave', {
desc = 'Enable `cursorline` when leaving Insert mode (if it was set before entering).',
group = id,
pattern = '*',
callback = function(args) vim.opt.cursorline = vim.w.had_cursorline end
})
autocmd('TextYankPost', {
desc = 'Briefly highlight yanked text.',
group = id,
pattern = '*',
callback = function(args) vim.highlight.on_yank() end
})