Mon, 13 Feb 2023 02:20:08 -0600
Ongoing nvim config
631
8e07c29f2672
fix viewdoc abbrevs and cabbrevs in general
Meredith Howard <mhoward@roomag.org>
parents:
619
diff
changeset
|
1 | func! vimrc#CommandAlias(abbrev, expand) abort |
632
9a87ce42aa3c
getcmdpos is cursor position in expr mode here, wont work
Meredith Howard <mhoward@roomag.org>
parents:
631
diff
changeset
|
2 | execute printf('cnoreabbrev <expr> %s (getcmdtype()==":" && getcmdline()=="%s") ? "%s" : "%s"', a:abbrev, a:abbrev, a:expand, a:abbrev) |
631
8e07c29f2672
fix viewdoc abbrevs and cabbrevs in general
Meredith Howard <mhoward@roomag.org>
parents:
619
diff
changeset
|
3 | endfunc |
470 | 4 | |
580 | 5 | func! vimrc#AutoFmtToggle() abort |
641 | 6 | if &formatoptions =~# 'a' |
640
f8985ae54969
avoid abbreviated options
Meredith Howard <mhoward@roomag.org>
parents:
632
diff
changeset
|
7 | setl formatoptions-=a | echo '-a' |
470 | 8 | else |
640
f8985ae54969
avoid abbreviated options
Meredith Howard <mhoward@roomag.org>
parents:
632
diff
changeset
|
9 | setl formatoptions+=a | echo '+a' |
470 | 10 | endif |
580 | 11 | endfunc |
470 | 12 | |
586 | 13 | func! vimrc#Ltag(term) abort |
14 | exe "ltag " . a:term | |
15 | lopen | |
16 | endfunc | |
17 | ||
470 | 18 | " Make paths when writing, as necessary |
580 | 19 | func! vimrc#MkNonExDir(file, buf) abort |
470 | 20 | if empty(getbufvar(a:buf, '&buftype')) && a:file!~#'\v^\w+\:\/' |
21 | let dir=fnamemodify(a:file, ':h') | |
22 | if !isdirectory(dir) | |
23 | call mkdir(dir, 'p') | |
24 | endif | |
25 | endif | |
580 | 26 | endfunc |
470 | 27 | |
805 | 28 | func! vimrc#AutoSessionCheck() abort |
583 | 29 | if strlen(v:servername) > 0 && match(v:servername, 'VIM') == -1 |
805 | 30 | let sessionfile = g:vimcache . "/session/" . tolower(v:servername) . ".vim" |
31 | ||
32 | if filereadable(sessionfile) | |
33 | execute "source " . sessionfile | |
34 | endif | |
583 | 35 | endif |
36 | endfunc | |
728
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
37 | |
953
e033f9ce0d8c
Simplify ag/grep setup
Meredith Howard <mhoward@roomag.org>
parents:
943
diff
changeset
|
38 | func! vimrc#Grep(...) abort |
e033f9ce0d8c
Simplify ag/grep setup
Meredith Howard <mhoward@roomag.org>
parents:
943
diff
changeset
|
39 | let pattern = get(a:000, 0, expand('<cword>')) |
e033f9ce0d8c
Simplify ag/grep setup
Meredith Howard <mhoward@roomag.org>
parents:
943
diff
changeset
|
40 | let cmd = join([&grepprg, shellescape(pattern)] + a:000[1:], ' ') |
832
8acb094e5e12
use cword as ag/rg default
Meredith Howard <mhoward@roomag.org>
parents:
829
diff
changeset
|
41 | |
953
e033f9ce0d8c
Simplify ag/grep setup
Meredith Howard <mhoward@roomag.org>
parents:
943
diff
changeset
|
42 | cgetexpr system(cmd) |
e033f9ce0d8c
Simplify ag/grep setup
Meredith Howard <mhoward@roomag.org>
parents:
943
diff
changeset
|
43 | call setqflist([], 'a', {"title": cmd}) |
e033f9ce0d8c
Simplify ag/grep setup
Meredith Howard <mhoward@roomag.org>
parents:
943
diff
changeset
|
44 | let @/ = '\v' . pattern |
e033f9ce0d8c
Simplify ag/grep setup
Meredith Howard <mhoward@roomag.org>
parents:
943
diff
changeset
|
45 | copen |
e033f9ce0d8c
Simplify ag/grep setup
Meredith Howard <mhoward@roomag.org>
parents:
943
diff
changeset
|
46 | cfirst |
803
ffc6f9c140cd
Move this Ag stuff into a function, remove flickers
Meredith Howard <mhoward@roomag.org>
parents:
750
diff
changeset
|
47 | endfunc |
ffc6f9c140cd
Move this Ag stuff into a function, remove flickers
Meredith Howard <mhoward@roomag.org>
parents:
750
diff
changeset
|
48 | |
728
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
49 | func! vimrc#Gcd() abort |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
50 | let root = system('git rev-parse --show-toplevel 2>/dev/null')[:-2] |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
51 | if ! v:shell_error |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
52 | exec 'cd ' . root |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
53 | endif |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
54 | pwd |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
55 | endfunc |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
56 | |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
57 | func! vimrc#Hgcd() abort |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
58 | let root = system('hg root 2>/dev/null')[:-2] |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
59 | if ! v:shell_error |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
60 | exec 'cd ' . root |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
61 | endif |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
62 | pwd |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
63 | endfunc |
60df63f03873
I don't really use these except for the cd shortcuts
Meredith Howard <mhoward@roomag.org>
parents:
725
diff
changeset
|
64 | |
750
36a4da0a9863
Separate errors from filter stream
Meredith Howard <mhoward@roomag.org>
parents:
728
diff
changeset
|
65 | func! vimrc#SafeFilterFile(cmd) |
36a4da0a9863
Separate errors from filter stream
Meredith Howard <mhoward@roomag.org>
parents:
728
diff
changeset
|
66 | let errors = tempname() |
36a4da0a9863
Separate errors from filter stream
Meredith Howard <mhoward@roomag.org>
parents:
728
diff
changeset
|
67 | try |
36a4da0a9863
Separate errors from filter stream
Meredith Howard <mhoward@roomag.org>
parents:
728
diff
changeset
|
68 | exec 'silent %!' . a:cmd . ' 2>' . shellescape(errors) |
36a4da0a9863
Separate errors from filter stream
Meredith Howard <mhoward@roomag.org>
parents:
728
diff
changeset
|
69 | if v:shell_error |
36a4da0a9863
Separate errors from filter stream
Meredith Howard <mhoward@roomag.org>
parents:
728
diff
changeset
|
70 | for line in readfile(errors) |
36a4da0a9863
Separate errors from filter stream
Meredith Howard <mhoward@roomag.org>
parents:
728
diff
changeset
|
71 | echomsg line |
36a4da0a9863
Separate errors from filter stream
Meredith Howard <mhoward@roomag.org>
parents:
728
diff
changeset
|
72 | endfor |
36a4da0a9863
Separate errors from filter stream
Meredith Howard <mhoward@roomag.org>
parents:
728
diff
changeset
|
73 | endif |
36a4da0a9863
Separate errors from filter stream
Meredith Howard <mhoward@roomag.org>
parents:
728
diff
changeset
|
74 | finally |
36a4da0a9863
Separate errors from filter stream
Meredith Howard <mhoward@roomag.org>
parents:
728
diff
changeset
|
75 | call delete(errors) |
36a4da0a9863
Separate errors from filter stream
Meredith Howard <mhoward@roomag.org>
parents:
728
diff
changeset
|
76 | endtry |
36a4da0a9863
Separate errors from filter stream
Meredith Howard <mhoward@roomag.org>
parents:
728
diff
changeset
|
77 | endfunc |
920 | 78 | |
79 | if has('perl') | |
80 | func! vimrc#PruneSession() abort | |
81 | perl <<END_PERL | |
82 | my @bufs = | |
83 | grep { !-e $_->Name || -d _ || (-M _ >= 30) } | |
84 | grep { $_->Name } VIM::Buffers(); | |
85 | ||
86 | while (my $b = shift @bufs) { | |
87 | VIM::Msg 'pruned: ' . $b->Name, 'Comment'; | |
88 | VIM::DoCommand 'bwipeout ' . $b->Number; | |
89 | } | |
90 | VIM::DoCommand 'bprev' | |
91 | unless $curbuf->Name; | |
92 | END_PERL | |
93 | endfunc | |
94 | endif | |
939
b769704bb258
auto-prune junk directories
Meredith Howard <mhoward@roomag.org>
parents:
920
diff
changeset
|
95 | |
940 | 96 | func! vimrc#PrepDir(path) abort |
97 | if !filewritable(a:path) | |
98 | call mkdir(a:path, 'p', 0700) | |
939
b769704bb258
auto-prune junk directories
Meredith Howard <mhoward@roomag.org>
parents:
920
diff
changeset
|
99 | endif |
b769704bb258
auto-prune junk directories
Meredith Howard <mhoward@roomag.org>
parents:
920
diff
changeset
|
100 | endfunc |
b769704bb258
auto-prune junk directories
Meredith Howard <mhoward@roomag.org>
parents:
920
diff
changeset
|
101 | |
943 | 102 | if has('ruby') |
103 | func! s:PruneFiles(path, days) abort | |
104 | ruby <<END_RUBY | |
105 | require 'pathname' | |
106 | ||
107 | (path, days) = VIM.evaluate('[a:path, a:days]') | |
108 | sunset = Time.now - (days * 86400) | |
109 | ||
110 | Pathname(path).realpath.each_child do |file| | |
111 | file.delete if file.mtime < sunset | |
112 | end | |
113 | END_RUBY | |
114 | endfunc | |
115 | else | |
116 | func! s:PruneFiles(path, days) abort | |
117 | endfunc | |
118 | endif | |
119 | ||
939
b769704bb258
auto-prune junk directories
Meredith Howard <mhoward@roomag.org>
parents:
920
diff
changeset
|
120 | func! vimrc#PruneFiles(path, days) abort |
943 | 121 | call s:PruneFiles(a:path, a:days) |
939
b769704bb258
auto-prune junk directories
Meredith Howard <mhoward@roomag.org>
parents:
920
diff
changeset
|
122 | endfunc |
943 | 123 |