nvim/plugin/autocmds.lua
2024-07-08 14:12:14 +01:00

48 lines
1.4 KiB
Lua

-- Create a group to namespace autocmds
local group = vim.api.nvim_create_augroup('benie', { clear = true })
-- Restore cursor position across sessions
-- https://github.com/neovim/neovim/issues/16339#issuecomment-1457394370
vim.api.nvim_create_autocmd('BufRead', {
group = group,
callback = function(opts)
vim.api.nvim_create_autocmd('BufWinEnter', {
once = true,
buffer = opts.buf,
callback = function()
local ft = vim.bo[opts.buf].filetype
local last_known_line = vim.api.nvim_buf_get_mark(opts.buf, '"')[1]
if not (ft:match('commit') and ft:match('rebase'))
and last_known_line > 1
and last_known_line <= vim.api.nvim_buf_line_count(opts.buf)
then
vim.api.nvim_feedkeys([[g`"]], 'nx', false)
end
end
})
end
})
-- Start terminals in insert mode
vim.api.nvim_create_autocmd('TermOpen', {
group = group, pattern = 'term://*',
callback = function()
vim.cmd.startinsert()
end
})
-- Automatically press enter when the terminal process exit successfully
vim.api.nvim_create_autocmd('TermClose', {
group = group,
pattern = 'term://*',
callback = function()
if vim.v.event.status == 0 then
-- Exit success, send enter to close the buffer
vim.api.nvim_input('<CR>')
else
-- Exit failure, enter normal mode for inspection
vim.api.nvim_input('<C-\\><C-n>')
end
end
})