diff options
Diffstat (limited to 'plugin/12_autocommands.lua')
| -rw-r--r-- | plugin/12_autocommands.lua | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/plugin/12_autocommands.lua b/plugin/12_autocommands.lua new file mode 100644 index 0000000..829ed97 --- /dev/null +++ b/plugin/12_autocommands.lua @@ -0,0 +1,135 @@ +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 <buffer> q <Cmd>quit<CR>"', + 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, +}) |
