Sat, 11 Mar 2023 01:51:23 -0500
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 }) |