-- apply default terminal settings vim.api.nvim_create_autocmd('TermOpen', { callback = function() vim.bo.scrollback = 10000 vim.opt_local.number = false vim.opt_local.relativenumber = false vim.b.miniindentscope_disable = true end }) -- preserve window structure when exiting terminal via C-d vim.api.nvim_create_autocmd('TermClose', { callback = function(opts) -- don't trigger when force deleting if vim.api.nvim_buf_get_option(opts.buf, 'modified') then return end MiniBufremove.delete(opts.buf) end, -- needed so statusline properly updates nested = true, }) -- automatically enter/leave terminal mode vim.api.nvim_create_autocmd('TermOpen', { command = 'startinsert' }) vim.api.nvim_create_autocmd({'WinEnter','BufWinEnter'}, { pattern = 'term://*', command = 'startinsert', }) vim.api.nvim_create_autocmd('BufLeave', { pattern = 'term://*', command = 'stopinsert', }) -- formatting vim.api.nvim_create_autocmd('BufWritePre', { callback = function(opts) if vim.bo.filetype == 'diff' then return end if not vim.g.no_lsp_format then -- check if can LSP format local clients = vim.lsp.get_active_clients({ bufnr = opts.buf }) for _, client in ipairs(clients) do if client.server_capabilities.documentFormattingProvider then vim.lsp.buf.format() return end end end -- otherwise strip trailing whitespace vim.cmd('%s/\\s\\+$//e') end, }) -- filetype specific options vim.api.nvim_create_autocmd('FileType', { pattern = 'markdown', callback = function() vim.bo.textwidth = 80 end, }) vim.api.nvim_create_autocmd('FileType', { pattern = 'http', callback = function(opts) vim.keymap.set('n', 'r', 'RestNvim', { buffer = opts.buf, }) end, })