summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrahmajit Das <listout@listout.xyz>2025-06-04 03:14:27 +0530
committerBrahmajit Das <listout@listout.xyz>2025-06-04 03:47:21 +0530
commitab9378da69edb6fec97c0cb3f87bb02f83fc4b7f (patch)
tree15b654677f6cda9e8ccc13b6b7406a68e5be9abb
parent933f935e3efddd27c663739461acb257cc83a046 (diff)
moving autocmds from lua/autocmds to lua/config/autocmds
Signed-off-by: Brahmajit Das <listout@listout.xyz>
-rw-r--r--lua/autocmds.lua67
-rw-r--r--lua/config/autocmds.lua123
2 files changed, 123 insertions, 67 deletions
diff --git a/lua/autocmds.lua b/lua/autocmds.lua
deleted file mode 100644
index de6b82a..0000000
--- a/lua/autocmds.lua
+++ /dev/null
@@ -1,67 +0,0 @@
-local function augroup(name)
- return vim.api.nvim_create_augroup(name, { clear = true })
-end
-
--- Highlight on yank
-vim.api.nvim_create_autocmd("TextYankPost", {
- group = augroup("highlight_yank"),
- callback = function()
- vim.highlight.on_yank()
- end,
-})
-
--- close some filetypes with <q>
-vim.api.nvim_create_autocmd("FileType", {
- group = augroup("close_with_q"),
- pattern = {
- "diff",
- "git",
- "fugitive",
- "PlenaryTestPopup",
- "help",
- "lspinfo",
- "man",
- "notify",
- "qf",
- "query",
- "spectre_panel",
- "startuptime",
- "tsplayground",
- "neotest-output",
- "checkhealth",
- "neotest-summary",
- "neotest-output-panel",
- },
- callback = function(event)
- vim.bo[event.buf].buflisted = false
- vim.keymap.set("n", "q", "<cmd>close<cr>", { buffer = event.buf, silent = true })
- 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].lazyvim_last_loc then
- return
- end
- vim.b[buf].lazyvim_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,
-})
-
-vim.api.nvim_create_autocmd({ "ColorScheme", "BufReadPost" }, {
- pattern = { "*patch.diff" },
- callback = function()
- vim.api.nvim_set_hl(0, "PRDiffAdd", { fg = "#232634", bg = "#a6da95" })
- vim.api.nvim_set_hl(0, "PRDiffDel", { fg = "#d7e3d8", bg = "#e82424" })
- vim.cmd.syntax([[match PRDiffAdd /\v^[\+]((\-\-)|(\@\@ )|(\+\+)|(index )|(diff ))@!.*/]])
- vim.cmd.syntax([[match PRDiffDel /\v^[\-]((\-\-)|(\@\@ )|(\+\+)|(index )|(diff ))@!.*/]])
- end,
-})
diff --git a/lua/config/autocmds.lua b/lua/config/autocmds.lua
new file mode 100644
index 0000000..7efc2bf
--- /dev/null
+++ b/lua/config/autocmds.lua
@@ -0,0 +1,123 @@
+local function augroup(name)
+ return vim.api.nvim_create_augroup(name, { clear = true })
+end
+
+-- Highlight on yank
+vim.api.nvim_create_autocmd("TextYankPost", {
+ group = augroup("highlight_yank"),
+ callback = function()
+ vim.highlight.on_yank()
+ end,
+})
+
+-- close some filetypes with <q>
+ vim.api.nvim_create_autocmd("FileType", {
+ group = augroup("close_with_q"),
+ pattern = {
+ "diff",
+ "git",
+ "fugitive",
+ "PlenaryTestPopup",
+ "help",
+ "lspinfo",
+ "man",
+ "notify",
+ "qf",
+ "query",
+ "spectre_panel",
+ "startuptime",
+ "tsplayground",
+ "neotest-output",
+ "checkhealth",
+ "neotest-summary",
+ "neotest-output-panel",
+ },
+ callback = function(event)
+ vim.bo[event.buf].buflisted = false
+ vim.keymap.set("n", "q", "<cmd>close<cr>", { buffer = event.buf, silent = true })
+ 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].lazyvim_last_loc then
+ return
+ end
+ vim.b[buf].lazyvim_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,
+})
+
+vim.api.nvim_create_autocmd({ "ColorScheme", "BufReadPost" }, {
+ pattern = { "*patch.diff" },
+ callback = function()
+ vim.api.nvim_set_hl(0, "PRDiffAdd", { fg = "#232634", bg = "#a6da95" })
+ vim.api.nvim_set_hl(0, "PRDiffDel", { fg = "#d7e3d8", bg = "#e82424" })
+ vim.cmd.syntax([[match PRDiffAdd /\v^[\+]((\-\-)|(\@\@ )|(\+\+)|(index )|(diff ))@!.*/]])
+ vim.cmd.syntax([[match PRDiffDel /\v^[\-]((\-\-)|(\@\@ )|(\+\+)|(index )|(diff ))@!.*/]])
+ end,
+})
+
+vim.api.nvim_create_autocmd("LspAttach", {
+ group = vim.api.nvim_create_augroup('lsp-attach', { clear = true }),
+ callback = function(event)
+ local map = function(keys, func, desc)
+ vim.keymap.set("n", keys, func, { buffer = event.buf, desc = "LSP: " .. desc })
+ end
+
+ -- defaults:
+ -- https://neovim.io/doc/user/news-0.11.html#_defaults
+
+ map("gl", vim.diagnostic.open_float, "Open Diagnostic Float")
+ map("K", vim.lsp.buf.hover, "Hover Documentation")
+ map("gs", vim.lsp.buf.signature_help, "Signature Documentation")
+ map("gD", vim.lsp.buf.declaration, "Goto Declaration")
+ map("<leader>la", vim.lsp.buf.code_action, "Code Action")
+ map("<leader>lr", vim.lsp.buf.rename, "Rename all references")
+ map("<leader>lf", vim.lsp.buf.format, "Format")
+ map("<leader>v", "<cmd>vsplit | lua vim.lsp.buf.definition()<cr>", "Goto Definition in Vertical Split")
+
+ local function client_supports_method(client, method, bufnr)
+ if vim.fn.has 'nvim-0.11' == 1 then
+ return client:supports_method(method, bufnr)
+ else
+ return client.supports_method(method, { bufnr = bufnr })
+ end
+ end
+
+ local client = vim.lsp.get_client_by_id(event.data.client_id)
+ if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then
+ local highlight_augroup = vim.api.nvim_create_augroup('lsp-highlight', { clear = false })
+
+ -- When cursor stops moving: Highlights all instances of the symbol under the cursor
+ -- When cursor moves: Clears the highlighting
+ vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
+ buffer = event.buf,
+ group = highlight_augroup,
+ callback = vim.lsp.buf.document_highlight,
+ })
+ vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, {
+ buffer = event.buf,
+ group = highlight_augroup,
+ callback = vim.lsp.buf.clear_references,
+ })
+
+ -- When LSP detaches: Clears the highlighting
+ vim.api.nvim_create_autocmd('LspDetach', {
+ group = vim.api.nvim_create_augroup('lsp-detach', { clear = true }),
+ callback = function(event2)
+ vim.lsp.buf.clear_references()
+ vim.api.nvim_clear_autocmds { group = 'lsp-highlight', buffer = event2.buf }
+ end,
+ })
+ end
+ end,
+})