summaryrefslogtreecommitdiff
path: root/plugin/12_autocommands.lua
diff options
context:
space:
mode:
authorMohammad Reza Karimi <m.r.karimi.j@gmail.com>2026-01-20 15:55:27 -0500
committerMohammad Reza Karimi <m.r.karimi.j@gmail.com>2026-01-20 15:55:27 -0500
commitaa5717f00fd14430c80939a68d7107c26de6e554 (patch)
tree784e99d9b018e0554369c41cb33e2e195e28d3c6 /plugin/12_autocommands.lua
first commit
Diffstat (limited to 'plugin/12_autocommands.lua')
-rw-r--r--plugin/12_autocommands.lua135
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,
+})