local au = vim.api.nvim_create_autocmd local augroup = vim.api.nvim_create_augroup local ag = augroup("default", {}) local ft = augroup("filetypes", {}) -- shortly highlight yanks au("TextYankPost", { group = ag, pattern = "*", callback = function() vim.highlight.on_yank({ higroup = "IncSearch", timeout = 250, on_visual = true }) end, }) au("WinEnter", { group = ag, pattern = "*", callback = function() vim.opt_local.cursorline = true end, }) au("WinLeave", { group = ag, pattern = "*", callback = function() vim.opt_local.cursorline = false end, }) -- highlight extra whitespace local hlstmt = [[highlight ExtraWhitespace ctermbg=red guibg=red]] vim.cmd(hlstmt) au("ColorScheme", { group = ag, pattern = "*", callback = function() vim.cmd(hlstmt) end, }) vim.cmd([[match ExtraWhitespace /\s\+$\| \+\ze\t/]]) -- only show color col in insert mode au("InsertEnter", { group = ag, pattern = "*", callback = function() vim.o.colorcolumn = "78" end, }) au("InsertLeave", { group = ag, pattern = "*", callback = function() vim.o.colorcolumn = "" end, }) -- resize splits upon window resize au("VimResized", { group = ag, pattern = "*", callback = function() vim.cmd([[exe "normal! \="]]) end, }) -- ms word doc reading au("BufReadPre", { group = ft, pattern = "*.doc{x,}", callback = function() vim.opt_local.readonly = true end, }) vim.cmd([[au BufReadPost *.doc %!antiword "%"]]) vim.cmd([[au BufReadPost *.docx %!docx2txt "%" -]]) -- remove whitespace at the end of line au({ "BufWritePre" }, { group = ag, pattern = "*", command = [[%s/\s\+$//e]], })