From 9cbd404440b978e435e5fc6c44cb9817ea324a4d Mon Sep 17 00:00:00 2001 From: Yigit Sever Date: Mon, 16 Dec 2024 09:55:01 +0100 Subject: nvim: move autocmds to correct file --- .config/nvim/lua/helpers/autocmds.lua | 145 ++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) (limited to '.config/nvim/lua') diff --git a/.config/nvim/lua/helpers/autocmds.lua b/.config/nvim/lua/helpers/autocmds.lua index 11f4480..bf2c325 100644 --- a/.config/nvim/lua/helpers/autocmds.lua +++ b/.config/nvim/lua/helpers/autocmds.lua @@ -29,3 +29,148 @@ vim.api.nvim_create_autocmd("VimResized", { }, command = "wincmd =", }) + +-- https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua +-- Set typst filetype +vim.api.nvim_create_autocmd( + { + "BufNewFile", + "BufRead", + }, + { + group = augroup("typst"), + pattern = "*.typ", + callback = function() + local buf = vim.api.nvim_get_current_buf() + vim.api.nvim_set_option_value("filetype", "typst", { buf = buf }) + vim.api.nvim_set_option_value("shiftwidth", 2, { buf = buf }) + end + } +) + +-- Set PKGBUILD filetype +vim.api.nvim_create_autocmd( + { + "BufNewFile", + "BufRead", + }, + { + group = augroup("pkgbuild"), + pattern = "PKGBUILD", + callback = function() + local buf = vim.api.nvim_get_current_buf() + vim.api.nvim_set_option_value("filetype", "PKGBUILD", { buf = buf }) + end + } +) + +-- Set buku-edit filetype +vim.api.nvim_create_autocmd( + { + "BufNewFile", + "BufRead", + }, + { + group = augroup("buku-edit"), + pattern = "buku-edit-*", + callback = function() + local buf = vim.api.nvim_get_current_buf() + vim.api.nvim_set_option_value("filetype", "buku", { buf = buf }) + end + } +) + +-- Set mail filetype +vim.api.nvim_create_autocmd( + { + "BufNewFile", + "BufRead", + }, + { + group = augroup("mail"), + pattern = "/tmp/neomutt*", + callback = function() + local buf = vim.api.nvim_get_current_buf() + vim.api.nvim_set_option_value("autoindent", false, { buf = buf }) + vim.api.nvim_set_option_value("filetype", "mail", { buf = buf }) + vim.api.nvim_set_option_value("wrapmargin", 0, { buf = buf }) + vim.api.nvim_set_option_value("textwidth", 80, { buf = buf }) + 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].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, +}) + +-- close some filetypes with +vim.api.nvim_create_autocmd("FileType", { + group = augroup("close_with_q"), + pattern = { + "PlenaryTestPopup", + "checkhealth", + "dbout", + "gitsigns-blame", + "grug-far", + "help", + "lspinfo", + "neotest-output", + "neotest-output-panel", + "neotest-summary", + "notify", + "qf", + "snacks_win", + "spectre_panel", + "startuptime", + "tsplayground", + }, + callback = function(event) + vim.bo[event.buf].buflisted = false + 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, +}) + +-- Auto create dir when saving a file, in case some intermediate directory does not exist +vim.api.nvim_create_autocmd({ "BufWritePre" }, { + group = augroup("auto_create_dir"), + callback = function(event) + if event.match:match("^%w%w+:[\\/][\\/]") then + return + end + local file = vim.uv.fs_realpath(event.match) or event.match + vim.fn.mkdir(vim.fn.fnamemodify(file, ":p:h"), "p") + end, +}) -- cgit v1.2.3-70-g09d2