From: Samir Benmendil Date: Sun, 23 Feb 2025 13:46:37 +0000 (+0000) Subject: lazyvim: absorb autocmds X-Git-Url: https://git.rmz.io/dotfiles.git/commitdiff_plain/5251deb253a8da7a1e17a9e35a357968aa8c99ee?hp=fd2e16fc92dd7a33908ceff1e31f03e05a78fda9 lazyvim: absorb autocmds --- diff --git a/nvim/lua/config/autocmds.lua b/nvim/lua/config/autocmds.lua index 2e26068..596f65d 100644 --- a/nvim/lua/config/autocmds.lua +++ b/nvim/lua/config/autocmds.lua @@ -1,14 +1,52 @@ --- Autocmds are automatically loaded on the VeryLazy event +-- Autocmds are automatically loaded by config.init local function augroup(name) - return vim.api.nvim_create_augroup("lazyvim_" .. name, { clear = true }) + return vim.api.nvim_create_augroup("rmz_" .. name, { clear = true }) end +-- Check if we need to reload the file when it changed +vim.api.nvim_create_autocmd({ "FocusGained", "TermClose", "TermLeave" }, { + group = augroup("checktime"), + callback = function() + if vim.o.buftype ~= "nofile" then + vim.cmd("checktime") + end + end, +}) + -- Highlight on yank vim.api.nvim_create_autocmd("TextYankPost", { group = augroup("highlight_yank"), callback = function() - vim.highlight.on_yank() + (vim.hl or vim.highlight).on_yank() + end, +}) + +-- resize splits if window got resized +vim.api.nvim_create_autocmd({ "VimResized" }, { + group = augroup("resize_splits"), + callback = function() + local current_tab = vim.fn.tabpagenr() + vim.cmd("tabdo wincmd =") + vim.cmd("tabnext " .. current_tab) + end, +}) + +-- go to last loc when opening a buffer +vim.api.nvim_create_autocmd("BufReadPost", { + group = augroup("last_loc"), + callback = function(event) + local exclude = { "gitcommit" } + local buf = event.buf + if vim.tbl_contains(exclude, vim.bo[buf].filetype) or vim.b[buf].rmz_last_loc then + return + end + vim.b[buf].rmz_last_loc = true + local mark = vim.api.nvim_buf_get_mark(buf, '"') + local lcount = vim.api.nvim_buf_line_count(buf) + if mark[1] > 0 and mark[1] <= lcount then + pcall(vim.api.nvim_win_set_cursor, 0, mark) + end end, }) @@ -16,10 +54,11 @@ vim.api.nvim_create_autocmd("TextYankPost", { vim.api.nvim_create_autocmd("FileType", { group = augroup("close_with_q"), pattern = { - "PlenaryTestPopup", + "checkhealth", + "dbout", + "gitsigns-blame", "help", "lspinfo", - "man", "notify", "qf", "spectre_panel", @@ -28,6 +67,33 @@ vim.api.nvim_create_autocmd("FileType", { }, callback = function(event) vim.bo[event.buf].buflisted = false - vim.keymap.set("n", "q", "close", { buffer = event.buf, silent = true }) + vim.schedule(function() + vim.keymap.set("n", "q", function() + vim.cmd("close") + pcall(vim.api.nvim_buf_delete, event.buf, { force = true }) + end, { + buffer = event.buf, + silent = true, + desc = "Quit buffer", + }) + end) + end, +}) + +-- make it easier to close man-files when opened inline +vim.api.nvim_create_autocmd("FileType", { + group = augroup("man_unlisted"), + pattern = { "man" }, + callback = function(event) + vim.bo[event.buf].buflisted = false + end, +}) + +-- Fix conceallevel for json files +vim.api.nvim_create_autocmd({ "FileType" }, { + group = augroup("json_conceal"), + pattern = { "json", "jsonc", "json5" }, + callback = function() + vim.opt_local.conceallevel = 0 end, })