David Blume commited on 2021-03-11 19:45:57
Showing 99 changed files, with 6 additions and 264 deletions.
... | ... |
@@ -1,254 +0,0 @@ |
1 |
-" pathogen.vim - path option manipulation |
|
2 |
-" Maintainer: Tim Pope <http://tpo.pe/> |
|
3 |
-" Version: 2.0 |
|
4 |
- |
|
5 |
-" Install in ~/.vim/autoload (or ~\vimfiles\autoload). |
|
6 |
-" |
|
7 |
-" For management of individually installed plugins in ~/.vim/bundle (or |
|
8 |
-" ~\vimfiles\bundle), adding `call pathogen#infect()` to your .vimrc |
|
9 |
-" prior to `filetype plugin indent on` is the only other setup necessary. |
|
10 |
-" |
|
11 |
-" The API is documented inline below. For maximum ease of reading, |
|
12 |
-" :set foldmethod=marker |
|
13 |
- |
|
14 |
-if exists("g:loaded_pathogen") || &cp |
|
15 |
- finish |
|
16 |
-endif |
|
17 |
-let g:loaded_pathogen = 1 |
|
18 |
- |
|
19 |
-" Point of entry for basic default usage. Give a directory name to invoke |
|
20 |
-" pathogen#runtime_append_all_bundles() (defaults to "bundle"), or a full path |
|
21 |
-" to invoke pathogen#runtime_prepend_subdirectories(). Afterwards, |
|
22 |
-" pathogen#cycle_filetype() is invoked. |
|
23 |
-function! pathogen#infect(...) abort " {{{1 |
|
24 |
- let source_path = a:0 ? a:1 : 'bundle' |
|
25 |
- if source_path =~# '[\\/]' |
|
26 |
- call pathogen#runtime_prepend_subdirectories(source_path) |
|
27 |
- else |
|
28 |
- call pathogen#runtime_append_all_bundles(source_path) |
|
29 |
- endif |
|
30 |
- call pathogen#cycle_filetype() |
|
31 |
-endfunction " }}}1 |
|
32 |
- |
|
33 |
-" Split a path into a list. |
|
34 |
-function! pathogen#split(path) abort " {{{1 |
|
35 |
- if type(a:path) == type([]) | return a:path | endif |
|
36 |
- let split = split(a:path,'\\\@<!\%(\\\\\)*\zs,') |
|
37 |
- return map(split,'substitute(v:val,''\\\([\\,]\)'',''\1'',"g")') |
|
38 |
-endfunction " }}}1 |
|
39 |
- |
|
40 |
-" Convert a list to a path. |
|
41 |
-function! pathogen#join(...) abort " {{{1 |
|
42 |
- if type(a:1) == type(1) && a:1 |
|
43 |
- let i = 1 |
|
44 |
- let space = ' ' |
|
45 |
- else |
|
46 |
- let i = 0 |
|
47 |
- let space = '' |
|
48 |
- endif |
|
49 |
- let path = "" |
|
50 |
- while i < a:0 |
|
51 |
- if type(a:000[i]) == type([]) |
|
52 |
- let list = a:000[i] |
|
53 |
- let j = 0 |
|
54 |
- while j < len(list) |
|
55 |
- let escaped = substitute(list[j],'[,'.space.']\|\\[\,'.space.']\@=','\\&','g') |
|
56 |
- let path .= ',' . escaped |
|
57 |
- let j += 1 |
|
58 |
- endwhile |
|
59 |
- else |
|
60 |
- let path .= "," . a:000[i] |
|
61 |
- endif |
|
62 |
- let i += 1 |
|
63 |
- endwhile |
|
64 |
- return substitute(path,'^,','','') |
|
65 |
-endfunction " }}}1 |
|
66 |
- |
|
67 |
-" Convert a list to a path with escaped spaces for 'path', 'tag', etc. |
|
68 |
-function! pathogen#legacyjoin(...) abort " {{{1 |
|
69 |
- return call('pathogen#join',[1] + a:000) |
|
70 |
-endfunction " }}}1 |
|
71 |
- |
|
72 |
-" Remove duplicates from a list. |
|
73 |
-function! pathogen#uniq(list) abort " {{{1 |
|
74 |
- let i = 0 |
|
75 |
- let seen = {} |
|
76 |
- while i < len(a:list) |
|
77 |
- if (a:list[i] ==# '' && exists('empty')) || has_key(seen,a:list[i]) |
|
78 |
- call remove(a:list,i) |
|
79 |
- elseif a:list[i] ==# '' |
|
80 |
- let i += 1 |
|
81 |
- let empty = 1 |
|
82 |
- else |
|
83 |
- let seen[a:list[i]] = 1 |
|
84 |
- let i += 1 |
|
85 |
- endif |
|
86 |
- endwhile |
|
87 |
- return a:list |
|
88 |
-endfunction " }}}1 |
|
89 |
- |
|
90 |
-" \ on Windows unless shellslash is set, / everywhere else. |
|
91 |
-function! pathogen#separator() abort " {{{1 |
|
92 |
- return !exists("+shellslash") || &shellslash ? '/' : '\' |
|
93 |
-endfunction " }}}1 |
|
94 |
- |
|
95 |
-" Convenience wrapper around glob() which returns a list. |
|
96 |
-function! pathogen#glob(pattern) abort " {{{1 |
|
97 |
- let files = split(glob(a:pattern),"\n") |
|
98 |
- return map(files,'substitute(v:val,"[".pathogen#separator()."/]$","","")') |
|
99 |
-endfunction "}}}1 |
|
100 |
- |
|
101 |
-" Like pathogen#glob(), only limit the results to directories. |
|
102 |
-function! pathogen#glob_directories(pattern) abort " {{{1 |
|
103 |
- return filter(pathogen#glob(a:pattern),'isdirectory(v:val)') |
|
104 |
-endfunction "}}}1 |
|
105 |
- |
|
106 |
-" Turn filetype detection off and back on again if it was already enabled. |
|
107 |
-function! pathogen#cycle_filetype() " {{{1 |
|
108 |
- if exists('g:did_load_filetypes') |
|
109 |
- filetype off |
|
110 |
- filetype on |
|
111 |
- endif |
|
112 |
-endfunction " }}}1 |
|
113 |
- |
|
114 |
-" Checks if a bundle is 'disabled'. A bundle is considered 'disabled' if |
|
115 |
-" its 'basename()' is included in g:pathogen_disabled[]' or ends in a tilde. |
|
116 |
-function! pathogen#is_disabled(path) " {{{1 |
|
117 |
- if a:path =~# '\~$' |
|
118 |
- return 1 |
|
119 |
- elseif !exists("g:pathogen_disabled") |
|
120 |
- return 0 |
|
121 |
- endif |
|
122 |
- let sep = pathogen#separator() |
|
123 |
- return index(g:pathogen_disabled, strpart(a:path, strridx(a:path, sep)+1)) != -1 |
|
124 |
-endfunction "}}}1 |
|
125 |
- |
|
126 |
-" Prepend all subdirectories of path to the rtp, and append all 'after' |
|
127 |
-" directories in those subdirectories. |
|
128 |
-function! pathogen#runtime_prepend_subdirectories(path) " {{{1 |
|
129 |
- let sep = pathogen#separator() |
|
130 |
- let before = filter(pathogen#glob_directories(a:path.sep."*"), '!pathogen#is_disabled(v:val)') |
|
131 |
- let after = filter(pathogen#glob_directories(a:path.sep."*".sep."after"), '!pathogen#is_disabled(v:val[0:-7])') |
|
132 |
- let rtp = pathogen#split(&rtp) |
|
133 |
- let path = expand(a:path) |
|
134 |
- call filter(rtp,'v:val[0:strlen(path)-1] !=# path') |
|
135 |
- let &rtp = pathogen#join(pathogen#uniq(before + rtp + after)) |
|
136 |
- return &rtp |
|
137 |
-endfunction " }}}1 |
|
138 |
- |
|
139 |
-" For each directory in rtp, check for a subdirectory named dir. If it |
|
140 |
-" exists, add all subdirectories of that subdirectory to the rtp, immediately |
|
141 |
-" after the original directory. If no argument is given, 'bundle' is used. |
|
142 |
-" Repeated calls with the same arguments are ignored. |
|
143 |
-function! pathogen#runtime_append_all_bundles(...) " {{{1 |
|
144 |
- let sep = pathogen#separator() |
|
145 |
- let name = a:0 ? a:1 : 'bundle' |
|
146 |
- if "\n".s:done_bundles =~# "\\M\n".name."\n" |
|
147 |
- return "" |
|
148 |
- endif |
|
149 |
- let s:done_bundles .= name . "\n" |
|
150 |
- let list = [] |
|
151 |
- for dir in pathogen#split(&rtp) |
|
152 |
- if dir =~# '\<after$' |
|
153 |
- let list += filter(pathogen#glob_directories(substitute(dir,'after$',name,'').sep.'*[^~]'.sep.'after'), '!pathogen#is_disabled(v:val[0:-7])') + [dir] |
|
154 |
- else |
|
155 |
- let list += [dir] + filter(pathogen#glob_directories(dir.sep.name.sep.'*[^~]'), '!pathogen#is_disabled(v:val)') |
|
156 |
- endif |
|
157 |
- endfor |
|
158 |
- let &rtp = pathogen#join(pathogen#uniq(list)) |
|
159 |
- return 1 |
|
160 |
-endfunction |
|
161 |
- |
|
162 |
-let s:done_bundles = '' |
|
163 |
-" }}}1 |
|
164 |
- |
|
165 |
-" Invoke :helptags on all non-$VIM doc directories in runtimepath. |
|
166 |
-function! pathogen#helptags() " {{{1 |
|
167 |
- let sep = pathogen#separator() |
|
168 |
- for dir in pathogen#split(&rtp) |
|
169 |
- if (dir.sep)[0 : strlen($VIMRUNTIME)] !=# $VIMRUNTIME.sep && filewritable(dir.sep.'doc') == 2 && !empty(filter(split(glob(dir.sep.'doc'.sep.'*'),"\n>"),'!isdirectory(v:val)')) && (!filereadable(dir.sep.'doc'.sep.'tags') || filewritable(dir.sep.'doc'.sep.'tags')) |
|
170 |
- helptags `=dir.'/doc'` |
|
171 |
- endif |
|
172 |
- endfor |
|
173 |
-endfunction " }}}1 |
|
174 |
- |
|
175 |
-command! -bar Helptags :call pathogen#helptags() |
|
176 |
- |
|
177 |
-" Like findfile(), but hardcoded to use the runtimepath. |
|
178 |
-function! pathogen#runtime_findfile(file,count) "{{{1 |
|
179 |
- let rtp = pathogen#join(1,pathogen#split(&rtp)) |
|
180 |
- let file = findfile(a:file,rtp,a:count) |
|
181 |
- if file ==# '' |
|
182 |
- return '' |
|
183 |
- else |
|
184 |
- return fnamemodify(file,':p') |
|
185 |
- endif |
|
186 |
-endfunction " }}}1 |
|
187 |
- |
|
188 |
-" Backport of fnameescape(). |
|
189 |
-function! pathogen#fnameescape(string) " {{{1 |
|
190 |
- if exists('*fnameescape') |
|
191 |
- return fnameescape(a:string) |
|
192 |
- elseif a:string ==# '-' |
|
193 |
- return '\-' |
|
194 |
- else |
|
195 |
- return substitute(escape(a:string," \t\n*?[{`$\\%#'\"|!<"),'^[+>]','\\&','') |
|
196 |
- endif |
|
197 |
-endfunction " }}}1 |
|
198 |
- |
|
199 |
-if exists(':Vedit') |
|
200 |
- finish |
|
201 |
-endif |
|
202 |
- |
|
203 |
-function! s:find(count,cmd,file,lcd) " {{{1 |
|
204 |
- let rtp = pathogen#join(1,pathogen#split(&runtimepath)) |
|
205 |
- let file = pathogen#runtime_findfile(a:file,a:count) |
|
206 |
- if file ==# '' |
|
207 |
- return "echoerr 'E345: Can''t find file \"".a:file."\" in runtimepath'" |
|
208 |
- elseif a:lcd |
|
209 |
- let path = file[0:-strlen(a:file)-2] |
|
210 |
- execute 'lcd `=path`' |
|
211 |
- return a:cmd.' '.pathogen#fnameescape(a:file) |
|
212 |
- else |
|
213 |
- return a:cmd.' '.pathogen#fnameescape(file) |
|
214 |
- endif |
|
215 |
-endfunction " }}}1 |
|
216 |
- |
|
217 |
-function! s:Findcomplete(A,L,P) " {{{1 |
|
218 |
- let sep = pathogen#separator() |
|
219 |
- let cheats = { |
|
220 |
- \'a': 'autoload', |
|
221 |
- \'d': 'doc', |
|
222 |
- \'f': 'ftplugin', |
|
223 |
- \'i': 'indent', |
|
224 |
- \'p': 'plugin', |
|
225 |
- \'s': 'syntax'} |
|
226 |
- if a:A =~# '^\w[\\/]' && has_key(cheats,a:A[0]) |
|
227 |
- let request = cheats[a:A[0]].a:A[1:-1] |
|
228 |
- else |
|
229 |
- let request = a:A |
|
230 |
- endif |
|
231 |
- let pattern = substitute(request,'/\|\'.sep,'*'.sep,'g').'*' |
|
232 |
- let found = {} |
|
233 |
- for path in pathogen#split(&runtimepath) |
|
234 |
- let path = expand(path, ':p') |
|
235 |
- let matches = split(glob(path.sep.pattern),"\n") |
|
236 |
- call map(matches,'isdirectory(v:val) ? v:val.sep : v:val') |
|
237 |
- call map(matches,'expand(v:val, ":p")[strlen(path)+1:-1]') |
|
238 |
- for match in matches |
|
239 |
- let found[match] = 1 |
|
240 |
- endfor |
|
241 |
- endfor |
|
242 |
- return sort(keys(found)) |
|
243 |
-endfunction " }}}1 |
|
244 |
- |
|
245 |
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Ve :execute s:find(<count>,'edit<bang>',<q-args>,0) |
|
246 |
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vedit :execute s:find(<count>,'edit<bang>',<q-args>,0) |
|
247 |
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vopen :execute s:find(<count>,'edit<bang>',<q-args>,1) |
|
248 |
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vsplit :execute s:find(<count>,'split',<q-args>,<bang>1) |
|
249 |
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vvsplit :execute s:find(<count>,'vsplit',<q-args>,<bang>1) |
|
250 |
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vtabedit :execute s:find(<count>,'tabedit',<q-args>,<bang>1) |
|
251 |
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vpedit :execute s:find(<count>,'pedit',<q-args>,<bang>1) |
|
252 |
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vread :execute s:find(<count>,'read',<q-args>,<bang>1) |
|
253 |
- |
|
254 |
-" vim:set et sw=2: |
... | ... |
@@ -43,13 +43,12 @@ See [config.dlma.com](http://config.dlma.com) for more. |
43 | 43 |
1. .vimrc |
44 | 44 |
2. An empty .vim\_undo directory |
45 | 45 |
3. .vim with the following plugins: |
46 |
- 1. [pathogen](https://github.com/tpope/vim-pathogen), the Vim plugin manager. |
|
47 |
- 2. [vim-airline](https://github.com/vim-airline/vim-airline), for a better Vim statusline. |
|
48 |
- 3. [bbye for :Bdelete](https://github.com/moll/vim-bbye), to delete buffers without affecting windows. |
|
49 |
- 4. [taglist](http://www.vim.org/scripts/script.php?script_id=273), a ctags tree-view explorer. |
|
50 |
- 5. [file-line](http://www.vim.org/scripts/script.php?script_id=2184), to open file:line as from a compiler error. |
|
51 |
- 6. [visual-star-search](http://got-ravings.blogspot.com/2008/07/vim-pr0n-visual-search-mappings.html), so * and # work in visual mode too. |
|
52 |
- 7. Assorted favorite colors like [desert](https://github.com/dblume/desert.vim). |
|
46 |
+ 1. [vim-airline](https://github.com/vim-airline/vim-airline), for a better Vim statusline. |
|
47 |
+ 2. [bbye for :Bdelete](https://github.com/moll/vim-bbye), to delete buffers without affecting windows. |
|
48 |
+ 3. [taglist](http://www.vim.org/scripts/script.php?script_id=273), a ctags tree-view explorer. |
|
49 |
+ 4. [file-line](http://www.vim.org/scripts/script.php?script_id=2184), to open file:line as from a compiler error. |
|
50 |
+ 5. [visual-star-search](http://got-ravings.blogspot.com/2008/07/vim-pr0n-visual-search-mappings.html), so * and # work in visual mode too. |
|
51 |
+ 6. Assorted favorite colors like [desert](https://github.com/dblume/desert.vim). |
|
53 | 52 |
3. .gitconfig and .gitignore |
54 | 53 |
4. .tmux.conf |
55 | 54 |
5. .inputrc, for a [partially matched command history traversal](http://askubuntu.com/questions/59846/bash-history-search-partial-up-arrow/59855#59855). |
56 | 55 |