Sun, 05 May 2024 01:56:33 -0500
luafy PruneSession
1078
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1 | local command = vim.api.nvim_create_user_command |
1095
226221dc1d6b
Simplify command aliases
Meredith Howard <mhoward@roomag.org>
parents:
1080
diff
changeset
|
2 | local cmd, fn = vim.cmd, vim.fn |
1078
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3 | |
1155 | 4 | require("config.util").calias({ |
5 | -- replace default: | |
6 | grep = "Grep", | |
7 | ||
8 | -- typos: | |
9 | Q = "q", | |
10 | Qa = "qa", | |
11 | W = "w", | |
12 | gcd = "Gcd", | |
13 | hgcd = "Hgcd", | |
14 | ||
15 | -- Make the ! versions default to stay in one window + buffer: | |
16 | doc = "ViewDoc!", | |
17 | help = "ViewDocHelp!", | |
18 | man = "ViewDocMan!", | |
19 | perldoc = "ViewDocPerl!", | |
20 | }) | |
21 | ||
1078
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
22 | command("Hgcd", function() |
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
23 | local root = fn.systemlist("hg root 2>/dev/null")[1] |
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
24 | if vim.v.shell_error == 0 then |
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
25 | cmd.cd(root) |
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
26 | end |
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
27 | end, {}) |
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
28 | |
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
29 | command("Gcd", function() |
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
30 | local root = fn.systemlist("git rev-parse --show-toplevel 2>/dev/null")[1] |
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
31 | if vim.v.shell_error == 0 then |
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
32 | cmd.cd(root) |
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
33 | end |
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
34 | end, {}) |
aa4c1aa529a5
Start porting custom commands to lua
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
35 | |
1079 | 36 | command("Grep", function(ctx) |
37 | local pattern = ctx.fargs[1] or fn.expand("<cword>") | |
38 | local grepcmd = table.concat({ | |
39 | vim.o.grepprg, | |
40 | fn.shellescape(pattern), | |
41 | table.concat(vim.list_slice(ctx.fargs, 2, #ctx.fargs), " "), | |
42 | }, " ") | |
43 | ||
44 | fn.setqflist({}, " ", { title = grepcmd, lines = fn.systemlist(grepcmd) }) | |
1080
83c9f8460bde
continue to confuse the verymagic options
Meredith Howard <mhoward@roomag.org>
parents:
1079
diff
changeset
|
45 | fn.setreg("/", [[\v]] .. pattern) |
1079 | 46 | cmd.copen() |
47 | cmd.cfirst() | |
48 | end, { nargs = "*", complete = "file" }) | |
49 | ||
1155 | 50 | -- Remove buffers for files that are gone, old, or netrw dirs |
51 | command("PruneSession", function() | |
52 | local bufs = vim.api.nvim_list_bufs() | |
53 | for _, bufnr in ipairs(bufs) do | |
54 | local name = vim.api.nvim_buf_get_name(bufnr) | |
55 | if name then | |
56 | local type = vim.fn.getftype(name) | |
57 | if type == "" or type == "dir" | |
58 | or (os.time() - vim.fn.getftime(name)) > 2592000 | |
59 | then | |
60 | vim.print("pruned: " .. name) | |
61 | vim.cmd.bwipeout(bufnr) | |
62 | end | |
63 | end | |
64 | end | |
65 | if not vim.api.nvim_buf_get_name(0) then | |
66 | vim.cmd.bprev() | |
67 | end | |
68 | end, {}) |