-- Control cursorline option -- This function allows the easy creation of autocommands that configure cursorline for one buffer -- either based on events or filetypes local auGroupCursorLine = vim.api.nvim_create_augroup("CursorLine", { clear = true }) local set_cursorline = function(event, value, pattern) vim.api.nvim_create_autocmd(event, { group = auGroupCursorLine, pattern = pattern, callback = function() vim.opt_local.cursorline = value end, }) end set_cursorline("WinLeave", false) set_cursorline("WinEnter", true) set_cursorline("FileType", false, "TelescopePrompt") -- Wrangle formatoptions -- Format options is local to the buffer -- This autocommand fixes formatoptions for all buffers at load local auGroupFormatOptions = vim.api.nvim_create_augroup("FormatOptions", { clear = true }) vim.api.nvim_create_autocmd("FileType", { group = auGroupFormatOptions, pattern = "*", callback = function() vim.opt.formatoptions = vim.opt.formatoptions -- take the default - "r" -- remove auto commenting - "o" -- and for newlines end, }) -- Do some magic for colorcolumn -- if set as a window option for a file, anything that uses that window -- at a later date will inherit that even if it doesn't make sense. local auGroupColorColumn = vim.api.nvim_create_augroup("ColorColumn", {clear=true}) vim.api.nvim_create_autocmd( 'BufEnter', { group = auGroupColorColumn, pattern = "*", callback = function (_) -- if we set textwidth we show a colorcolumn if vim.bo.textwidth > 0 then local warn=vim.bo.textwidth - 5 vim.wo.colorcolumn=string.format("%d,%d", warn, vim.bo.textwidth) else vim.wo.colorcolumn="" end end, } ) vim.api.nvim_create_autocmd('BufLeave',{ group=auGroupColorColumn, pattern = '*', callback = function () vim.wo.colorcolumn="" end })