summaryrefslogtreecommitdiffstats
path: root/.config/nvim/after/plugin/autocmds.lua
diff options
context:
space:
mode:
authorYigit Sever2024-11-26 14:40:35 +0100
committerYigit Sever2024-11-26 14:40:35 +0100
commit5671f954ddff3fb60ee6fda3fac664375be1a425 (patch)
treeaac60061f92e47b7c83002669355776d083e293f /.config/nvim/after/plugin/autocmds.lua
parentb7925fa3f4c7ddd8ddf89b6c345fcdc585a91208 (diff)
downloaddotfiles-5671f954ddff3fb60ee6fda3fac664375be1a425.tar.gz
dotfiles-5671f954ddff3fb60ee6fda3fac664375be1a425.tar.bz2
dotfiles-5671f954ddff3fb60ee6fda3fac664375be1a425.zip
nvim: autocmds.lua
Diffstat (limited to '.config/nvim/after/plugin/autocmds.lua')
-rw-r--r--.config/nvim/after/plugin/autocmds.lua158
1 files changed, 158 insertions, 0 deletions
diff --git a/.config/nvim/after/plugin/autocmds.lua b/.config/nvim/after/plugin/autocmds.lua
new file mode 100644
index 0000000..3751cd4
--- /dev/null
+++ b/.config/nvim/after/plugin/autocmds.lua
@@ -0,0 +1,158 @@
1local function augroup(name)
2 return vim.api.nvim_create_augroup("lazyvim_" .. name, { clear = true })
3end
4
5-- Set typst filetype
6vim.api.nvim_create_autocmd(
7 {
8 "BufNewFile",
9 "BufRead",
10 },
11 {
12 pattern = "*.typ",
13 callback = function()
14 local buf = vim.api.nvim_get_current_buf()
15 vim.api.nvim_set_option_value("filetype", "typst", { buf = buf })
16 vim.api.nvim_set_option_value("shiftwidth", 2, { buf = buf })
17 end
18 }
19)
20
21-- Set PKGBUILD filetype
22vim.api.nvim_create_autocmd(
23 {
24 "BufNewFile",
25 "BufRead",
26 },
27 {
28 pattern = "PKGBUILD",
29 callback = function()
30 local buf = vim.api.nvim_get_current_buf()
31 vim.api.nvim_set_option_value("filetype", "PKGBUILD", { buf = buf })
32 end
33 }
34)
35
36-- Set vimwiki filetype
37vim.api.nvim_create_autocmd(
38 {
39 "BufNewFile",
40 "BufRead",
41 },
42 {
43 pattern = "PKGBUILD",
44 callback = function()
45 local buf = vim.api.nvim_get_current_buf()
46 vim.api.nvim_set_option_value("filetype", "*.wiki", { buf = buf })
47 end
48 }
49)
50
51-- Set buku-edit filetype
52vim.api.nvim_create_autocmd(
53 {
54 "BufNewFile",
55 "BufRead",
56 },
57 {
58 pattern = "buku-edit-*",
59 callback = function()
60 local buf = vim.api.nvim_get_current_buf()
61 vim.api.nvim_set_option_value("filetype", "buku", { buf = buf })
62 end
63 }
64)
65
66-- Set mail filetype
67vim.api.nvim_create_autocmd(
68 {
69 "BufNewFile",
70 "BufRead",
71 },
72 {
73 pattern = "/tmp/neomutt*",
74 callback = function()
75 local buf = vim.api.nvim_get_current_buf()
76 vim.api.nvim_set_option_value("autoindent", false, { buf = buf })
77 vim.api.nvim_set_option_value("filetype", "mail", { buf = buf })
78 vim.api.nvim_set_option_value("wrapmargin", 0, { buf = buf })
79 vim.api.nvim_set_option_value("textwidth", 80, { buf = buf })
80 end
81 }
82)
83
84-- Resize splits if window got resized
85vim.api.nvim_create_autocmd({ "VimResized" }, {
86 group = augroup("resize_splits"),
87 callback = function()
88 local current_tab = vim.fn.tabpagenr()
89 vim.cmd("tabdo wincmd =")
90 vim.cmd("tabnext " .. current_tab)
91 end,
92})
93
94-- go to last loc when opening a buffer
95vim.api.nvim_create_autocmd("BufReadPost", {
96 group = augroup("last_loc"),
97 callback = function(event)
98 local exclude = { "gitcommit" }
99 local buf = event.buf
100 if vim.tbl_contains(exclude, vim.bo[buf].filetype) or vim.b[buf].lazyvim_last_loc then
101 return
102 end
103 vim.b[buf].lazyvim_last_loc = true
104 local mark = vim.api.nvim_buf_get_mark(buf, '"')
105 local lcount = vim.api.nvim_buf_line_count(buf)
106 if mark[1] > 0 and mark[1] <= lcount then
107 pcall(vim.api.nvim_win_set_cursor, 0, mark)
108 end
109 end,
110})
111
112-- close some filetypes with <q>
113vim.api.nvim_create_autocmd("FileType", {
114 group = augroup("close_with_q"),
115 pattern = {
116 "PlenaryTestPopup",
117 "checkhealth",
118 "dbout",
119 "gitsigns-blame",
120 "grug-far",
121 "help",
122 "lspinfo",
123 "neotest-output",
124 "neotest-output-panel",
125 "neotest-summary",
126 "notify",
127 "qf",
128 "snacks_win",
129 "spectre_panel",
130 "startuptime",
131 "tsplayground",
132 },
133 callback = function(event)
134 vim.bo[event.buf].buflisted = false
135 vim.schedule(function()
136 vim.keymap.set("n", "q", function()
137 vim.cmd("close")
138 pcall(vim.api.nvim_buf_delete, event.buf, { force = true })
139 end, {
140 buffer = event.buf,
141 silent = true,
142 desc = "Quit buffer",
143 })
144 end)
145 end,
146})
147
148-- Auto create dir when saving a file, in case some intermediate directory does not exist
149vim.api.nvim_create_autocmd({ "BufWritePre" }, {
150 group = augroup("auto_create_dir"),
151 callback = function(event)
152 if event.match:match("^%w%w+:[\\/][\\/]") then
153 return
154 end
155 local file = vim.uv.fs_realpath(event.match) or event.match
156 vim.fn.mkdir(vim.fn.fnamemodify(file, ":p:h"), "p")
157 end,
158})