local au = vim.api.nvim_create_autocmd local group = vim.api.nvim_create_augroup("my_events", {}) au("TextYankPost", { group = group, callback = function() vim.hl.on_yank() end, }) au("TermOpen", { group = group, command = "setl stc= nonumber | startinsert!", }) au("BufWritePre", { group = group, callback = function() local view = vim.fn.winsaveview() vim.cmd([[silent! keepjumps keeppatterns %s/\s\+$//e]]) vim.fn.winrestview(view) end, desc = "remove tail space", }) au("LspAttach", { group = group, command = "setl signcolumn=yes | redrawstatus", desc = "add sign column when LSP is attached and redraw status", }) au("LspDetach", { group = group, command = "redrawstatus", desc = "redraw status when LSP is dettached", }) au("FileType", { group = group, pattern = "fugitive,git,help,man,qf,query,scratch", command = 'execute "nnoremap q quit"', desc = "Close certain windows by pressing q", }) au("BufWritePost", { group = group, desc = "Run shortcuts after updating bookmark files", pattern = { "bm-dirs", "bm-files" }, command = "!shortcuts", }) au("User", { group = group, pattern = "VimtexEventViewReverse", desc = "VimTeX: Center view on inverse search", callback = function() vim.cmd([[ normal! zMzvzz ]]) -- If I want to turn on blink again: -- vim.fn["vimtex#ui#blink"]() end, }) au("InsertEnter", { group = group, desc = "Enable blink.cmp", once = true, callback = function() -- vim.cmd("packadd nvim-cmp") -- require("mo.cmp") vim.cmd("packadd blink.cmp") require("mo.blink").setup() end, }) local function startuptime() if vim.g.strive_startup_time ~= nil then return end vim.g.strive_startup_time = 0 local usage = vim.uv.getrusage() if usage then -- Calculate time in milliseconds (user + system time) local user_time = (usage.utime.sec * 1000) + (usage.utime.usec / 1000) local sys_time = (usage.stime.sec * 1000) + (usage.stime.usec / 1000) vim.g.nvim_startup_time = user_time + sys_time end end local function show_info() local plugins = vim.pack.get() local loaded = vim.iter(plugins) :map(function(p) return p.active end) :totable() local startup_time = vim.g.nvim_startup_time or "0" local plugin_info_str = string.format( "load %d/%d plugins in %sms", #loaded or 0, #plugins or 0, startup_time ) vim.notify(plugin_info_str, vim.log.levels.INFO) end au("UIEnter", { group = group, desc = "Setup Diagnostics and load nohlsearch and undotree package", once = true, callback = function() vim.schedule(function() -- startuptime() vim.diagnostic.config({ virtual_text = { virt_text_pos = "eol_right_align", current_line = true, prefix = function(d, _, _) -- stylua: ignore start --- @diagnostic disable-next-line: undefined-field, redundant-return-value return " ■", "DiagnosticPrefix" .. vim.diagnostic.severity[d.severity] -- stylua: ignore end end, }, signs = { text = { "●", "●", "●", "●" }, numhl = { "DiagnosticError", "DiagnosticWarn", "DiagnosticInfo", "DiagnosticHint", }, }, severity_sort = true, }) vim.cmd([[packadd nohlsearch]]) vim.cmd([[packadd nvim.undotree]]) -- show_info() end) end, })