-- autocmd -- Disable autocommenting on new lines under commented ones local augroup = vim.api.nvim_create_augroup local autocmd = vim.api.nvim_create_autocmd local custom_augroup = augroup('custom_augroup', {}) autocmd("Filetype", { pattern = "*", command = "setlocal formatoptions-=c formatoptions-=r formatoptions-=o" }) -- persistent folds autocmd({ "BufWinLeave" }, { group = custom_augroup, pattern = { "*.*" }, desc = "save view (folds), when closing file", command = "mkview", }) autocmd({ "BufWinEnter" }, { group = custom_augroup, pattern = { "*.*" }, desc = "load view (folds), when opening file", command = "silent! loadview" }) autocmd("WinEnter", { group = custom_augroup, callback = function() vim.wo.cursorline = true end, }) autocmd("WinLeave", { group = custom_augroup, callback = function() vim.wo.cursorline = false end, }) -- remove trailing whitespace autocmd({"BufWritePre"}, { group = custom_augroup, pattern = "*", command = [[%s/\s\+$//e]], }) autocmd("LspAttach", { group = custom_augroup, callback = function(e) -- keymaps -- local opts = { buffer = e.buf } vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) vim.keymap.set('n', 'K', function() vim.lsp.buf.hover { border = "rounded" } end, opts) vim.keymap.set('n', 'cl', "LspInfo", opts) vim.keymap.set('n', 'cd', vim.diagnostic.open_float, opts) vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) vim.keymap.set('n', 'cf', function() vim.lsp.buf.format { async = true } end, opts) vim.keymap.set('v', 'cf', function() vim.lsp.buf.format { async = true } end, opts) vim.keymap.set("n", "ws", function() vim.lsp.buf.workspace_symbol() end, opts) vim.keymap.set("i", "", function() vim.lsp.buf.signature_help { border = "rounded" } end, opts) vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, opts) vim.keymap.set("n", "cw", function() vim.lsp.buf.rename() end, opts) end, })