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

Sat, 11 Mar 2023 01:51:23 -0500

author
Meredith Howard <mhoward@roomag.org>
date
Sat, 11 Mar 2023 01:51:23 -0500
changeset 1075
3b88450bda15
child 1076
15007f695dfb
permissions
-rw-r--r--

port custom autocmds to lua

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

mercurial