local augroup = vim.api.nvim_create_augroup("UserConfig", {}) -- Highlight yanked text vim.api.nvim_create_autocmd("TextYankPost", { group = augroup, callback = function() vim.highlight.on_yank() end, }) -- Return to last edit position when opening files vim.api.nvim_create_autocmd("BufReadPost", { group = augroup, callback = function() local mark = vim.api.nvim_buf_get_mark(0, '"') local lcount = vim.api.nvim_buf_line_count(0) local line = mark[1] local ft = vim.bo.filetype if line > 0 and line <= lcount and vim.fn.index({ "commit", "gitrebase", "xxd" }, ft) == -1 and not vim.o.diff then pcall(vim.api.nvim_win_set_cursor, 0, mark) end end, }) -- Auto-close terminal when process exits vim.api.nvim_create_autocmd("TermClose", { group = augroup, callback = function() if vim.v.event.status == 0 then vim.api.nvim_buf_delete(0, {}) end end, }) -- Auto-resize splits when window is resized vim.api.nvim_create_autocmd("VimResized", { group = augroup, callback = function() vim.cmd("tabdo wincmd =") end, }) -- Create directories when saving files vim.api.nvim_create_autocmd("BufWritePre", { group = augroup, callback = function() local dir = vim.fn.expand(':p:h') if vim.fn.isdirectory(dir) == 0 then vim.fn.mkdir(dir, 'p') end end, })