.config/nvim/lua/config/autocmds.lua

Sat, 11 Mar 2023 01:04:58 -0600

author
Meredith Howard <mhoward@roomag.org>
date
Sat, 11 Mar 2023 01:04:58 -0600
changeset 1076
15007f695dfb
parent 1075
3b88450bda15
child 1077
5439ee582f9b
permissions
-rw-r--r--

clean up unused vim fns

1075
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
1 local cmd = vim.cmd
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
2 local fn = vim.fn
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
3
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
4 local vimrc = vim.api.nvim_create_augroup("vimrc", { clear = true })
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
5
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
6 local function autocmd(event, pattern, opts)
1076
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
7 vim.api.nvim_create_autocmd(
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
8 event,
1075
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
9 vim.tbl_extend("keep", opts, {
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
10 group = vimrc,
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
11 pattern = pattern,
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
12 })
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
13 )
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
14 end
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
15
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
16 local function cb(func)
1076
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
17 return {
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
18 callback = function(_)
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
19 func()
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
20 end,
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
21 }
1075
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
22 end
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
23
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
24 -- >> neovim specific
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
25 -- Always start terminals in insert/terminal mode
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
26 autocmd("TermOpen", "*", cb(cmd.startinsert))
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
27
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
28 -- neovim's autoread doesn't do this by default.
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
29 autocmd("FocusGained", "*", cb(cmd.checktime))
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
30
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
31 -- >> autowriteall improvment
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
32 -- Stopinsert on leave, or autowriteall doesn't work.
1076
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
33 autocmd({ "WinLeave", "FocusLost" }, "*", {
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
34 callback = function(_)
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
35 if not fn.pumvisible() then
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
36 fn.stopinsert()
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
37 end
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
38 end,
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
39 })
1075
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
40
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
41 -- write all on leave
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
42 autocmd("FocusLost", "*", cb(cmd.wa))
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
43
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
44 -- >> auto mkpath on write
1076
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
45 autocmd("BufWritePre", "*", {
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
46 callback = function(ctx)
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
47 if vim.bo[ctx.buf].buftype == "" and not string.match(ctx.file, "^[%w]+:") then
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
48 fn.mkdir(fn.fnamemodify(ctx.file, ":p:h"), "p")
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
49 end
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
50 end,
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
51 })
1075
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
52
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
53 -- >> auto session ?
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
54
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
55 -- >> jump to last position on open
1076
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
56 autocmd("BufReadPost", "*", {
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
57 callback = function(_)
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
58 local ft = vim.bo.filetype
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
59 if ft == "mail" or string.match(ft, "^git") or string.match(ft, "^hg") then
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
60 return ""
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
61 end
1075
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
62
1076
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
63 local lastpos = fn.line([['"]])
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
64 if lastpos >= 1 and lastpos <= fn.line("$") then
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
65 vim.cmd([[normal! g`"]])
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
66 end
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
67 end,
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
68 })
1075
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
69
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
70 -- >> simple highlight conflict markers
1076
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
71 autocmd("BufReadPost", "*", {
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
72 callback = function(_)
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
73 fn.matchadd("Error", [[^\([<>|]\)\{7} \@=\|^=\{7}$]])
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
74 end,
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
75 })
1075
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
76
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
77 -- >> nicer quickfix
1076
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
78 autocmd("BufReadPost", "quickfix", {
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
79 callback = function(ctx)
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
80 -- simplify noisy :ltag output
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
81 if string.match(vim.w.quickfix_title, "^ltag") then
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
82 fn.matchadd("Conceal", [[|\zs\^\\V\|\\$|.*]])
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
83 end
1075
3b88450bda15 port custom autocmds to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff changeset
84
1076
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
85 -- easy close
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
86 vim.keymap.set("n", "q", "<C-w>q", { buffer = true })
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
87 end,
15007f695dfb clean up unused vim fns
Meredith Howard <mhoward@roomag.org>
parents: 1075
diff changeset
88 })

mercurial