-- 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(args) -- nvim-dap/nvim-dap-view uses terminal buffers in the background which are -- not visible, don't start insert mode if the dap-type variable exists. local success, dap_type = pcall(vim.api.nvim_buf_get_var, args.buf, 'dap-type') if success and dap_type then return end 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('') else -- Exit failure, enter normal mode for inspection vim.api.nvim_input('') end end })