utils 0.0.67 → 0.0.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. data/VERSION +1 -1
  2. data/bin/edit +3 -1
  3. data/lib/utils/editor.rb +14 -0
  4. data/lib/utils/version.rb +1 -1
  5. data/utils.gemspec +3 -3
  6. metadata +3 -74
  7. data/lib/utils/config/vim/after/syntax/haml.vim +0 -9
  8. data/lib/utils/config/vim/after/syntax/html.vim +0 -11
  9. data/lib/utils/config/vim/autoload/Align.vim +0 -1029
  10. data/lib/utils/config/vim/autoload/AlignMaps.vim +0 -330
  11. data/lib/utils/config/vim/autoload/ctrlp/bookmarkdir.vim +0 -139
  12. data/lib/utils/config/vim/autoload/ctrlp/buffertag.vim +0 -238
  13. data/lib/utils/config/vim/autoload/ctrlp/changes.vim +0 -96
  14. data/lib/utils/config/vim/autoload/ctrlp/dir.vim +0 -90
  15. data/lib/utils/config/vim/autoload/ctrlp/line.vim +0 -63
  16. data/lib/utils/config/vim/autoload/ctrlp/mixed.vim +0 -83
  17. data/lib/utils/config/vim/autoload/ctrlp/mrufiles.vim +0 -119
  18. data/lib/utils/config/vim/autoload/ctrlp/quickfix.vim +0 -62
  19. data/lib/utils/config/vim/autoload/ctrlp/rtscript.vim +0 -49
  20. data/lib/utils/config/vim/autoload/ctrlp/tag.vim +0 -112
  21. data/lib/utils/config/vim/autoload/ctrlp/undo.vim +0 -154
  22. data/lib/utils/config/vim/autoload/ctrlp/utils.vim +0 -72
  23. data/lib/utils/config/vim/autoload/ctrlp.vim +0 -1772
  24. data/lib/utils/config/vim/autoload/rails.vim +0 -4570
  25. data/lib/utils/config/vim/autoload/rubycomplete.vim +0 -801
  26. data/lib/utils/config/vim/autoload/sqlcomplete.vim +0 -741
  27. data/lib/utils/config/vim/autoload/vimball.vim +0 -750
  28. data/lib/utils/config/vim/colors/flori.vim +0 -116
  29. data/lib/utils/config/vim/compiler/coffee.vim +0 -68
  30. data/lib/utils/config/vim/compiler/eruby.vim +0 -40
  31. data/lib/utils/config/vim/compiler/ruby.vim +0 -67
  32. data/lib/utils/config/vim/compiler/rubyunit.vim +0 -34
  33. data/lib/utils/config/vim/doc/Decho.txt +0 -372
  34. data/lib/utils/config/vim/doc/coffee-script.txt +0 -116
  35. data/lib/utils/config/vim/doc/ctrlp.txt +0 -1113
  36. data/lib/utils/config/vim/doc/fugitive.txt +0 -257
  37. data/lib/utils/config/vim/doc/rails.txt +0 -1022
  38. data/lib/utils/config/vim/doc/xml-plugin.txt +0 -226
  39. data/lib/utils/config/vim/ftdetect/coffee.vim +0 -8
  40. data/lib/utils/config/vim/ftdetect/eco.vim +0 -1
  41. data/lib/utils/config/vim/ftdetect/ragel.vim +0 -2
  42. data/lib/utils/config/vim/ftdetect/ruby.vim +0 -17
  43. data/lib/utils/config/vim/ftdetect/slim.vim +0 -2
  44. data/lib/utils/config/vim/ftplugin/coffee.vim +0 -221
  45. data/lib/utils/config/vim/ftplugin/eruby.vim +0 -100
  46. data/lib/utils/config/vim/ftplugin/ruby.vim +0 -260
  47. data/lib/utils/config/vim/ftplugin/xml.vim +0 -941
  48. data/lib/utils/config/vim/indent/IndentAnything_html.vim +0 -35
  49. data/lib/utils/config/vim/indent/coffee.vim +0 -338
  50. data/lib/utils/config/vim/indent/eruby.vim +0 -77
  51. data/lib/utils/config/vim/indent/javascript.vim +0 -116
  52. data/lib/utils/config/vim/indent/ruby.vim +0 -377
  53. data/lib/utils/config/vim/indent/slim.vim +0 -75
  54. data/lib/utils/config/vim/plugin/AlignMapsPlugin.vim +0 -242
  55. data/lib/utils/config/vim/plugin/AlignPlugin.vim +0 -41
  56. data/lib/utils/config/vim/plugin/Decho.vim +0 -592
  57. data/lib/utils/config/vim/plugin/IndentAnything.vim +0 -675
  58. data/lib/utils/config/vim/plugin/bufexplorer.vim +0 -1144
  59. data/lib/utils/config/vim/plugin/cecutil.vim +0 -508
  60. data/lib/utils/config/vim/plugin/ctrlp.vim +0 -61
  61. data/lib/utils/config/vim/plugin/fugitive.vim +0 -2041
  62. data/lib/utils/config/vim/plugin/lusty-explorer.vim +0 -1509
  63. data/lib/utils/config/vim/plugin/rails.vim +0 -339
  64. data/lib/utils/config/vim/plugin/rubyextra.vim +0 -193
  65. data/lib/utils/config/vim/plugin/surround.vim +0 -628
  66. data/lib/utils/config/vim/plugin/taglist.vim +0 -4546
  67. data/lib/utils/config/vim/plugin/test/IndentAnything/test.js +0 -131
  68. data/lib/utils/config/vim/plugin/vimballPlugin.vim +0 -40
  69. data/lib/utils/config/vim/syntax/Decho.vim +0 -101
  70. data/lib/utils/config/vim/syntax/coffee.vim +0 -217
  71. data/lib/utils/config/vim/syntax/eco.vim +0 -62
  72. data/lib/utils/config/vim/syntax/eruby.vim +0 -73
  73. data/lib/utils/config/vim/syntax/javascript.vim +0 -246
  74. data/lib/utils/config/vim/syntax/ragel.vim +0 -165
  75. data/lib/utils/config/vim/syntax/ruby.vim +0 -367
  76. data/lib/utils/config/vim/syntax/slim.vim +0 -117
  77. data/lib/utils/config/vimrc +0 -540
@@ -1,330 +0,0 @@
1
- " AlignMaps.vim : support functions for AlignMaps
2
- " Author: Charles E. Campbell, Jr.
3
- " Date: Mar 03, 2009
4
- " Version: 41
5
- " ---------------------------------------------------------------------
6
- " Load Once: {{{1
7
- if &cp || exists("g:loaded_AlignMaps")
8
- finish
9
- endif
10
- let g:loaded_AlignMaps= "v41"
11
- let s:keepcpo = &cpo
12
- set cpo&vim
13
-
14
- " =====================================================================
15
- " Functions: {{{1
16
-
17
- " ---------------------------------------------------------------------
18
- " AlignMaps#WrapperStart: {{{2
19
- fun! AlignMaps#WrapperStart(vis) range
20
- " call Dfunc("AlignMaps#WrapperStart(vis=".a:vis.")")
21
-
22
- if a:vis
23
- norm! '<ma'>
24
- endif
25
-
26
- if line("'y") == 0 || line("'z") == 0 || !exists("s:alignmaps_wrapcnt") || s:alignmaps_wrapcnt <= 0
27
- " call Decho("wrapper initialization")
28
- let s:alignmaps_wrapcnt = 1
29
- let s:alignmaps_keepgd = &gdefault
30
- let s:alignmaps_keepsearch = @/
31
- let s:alignmaps_keepch = &ch
32
- let s:alignmaps_keepmy = SaveMark("'y")
33
- let s:alignmaps_keepmz = SaveMark("'z")
34
- let s:alignmaps_posn = SaveWinPosn(0)
35
- " set up fencepost blank lines
36
- put =''
37
- norm! mz'a
38
- put! =''
39
- ky
40
- let s:alignmaps_zline = line("'z")
41
- exe "'y,'zs/@/\177/ge"
42
- else
43
- " call Decho("embedded wrapper")
44
- let s:alignmaps_wrapcnt = s:alignmaps_wrapcnt + 1
45
- norm! 'yjma'zk
46
- endif
47
-
48
- " change some settings to align-standard values
49
- set nogd
50
- set ch=2
51
- AlignPush
52
- norm! 'zk
53
- " call Dret("AlignMaps#WrapperStart : alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
54
- endfun
55
-
56
- " ---------------------------------------------------------------------
57
- " AlignMaps#WrapperEnd: {{{2
58
- fun! AlignMaps#WrapperEnd() range
59
- " call Dfunc("AlignMaps#WrapperEnd() alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
60
-
61
- " remove trailing white space introduced by whatever in the modification zone
62
- 'y,'zs/ \+$//e
63
-
64
- " restore AlignCtrl settings
65
- AlignPop
66
-
67
- let s:alignmaps_wrapcnt= s:alignmaps_wrapcnt - 1
68
- if s:alignmaps_wrapcnt <= 0
69
- " initial wrapper ending
70
- exe "'y,'zs/\177/@/ge"
71
-
72
- " if the 'z line hasn't moved, then go ahead and restore window position
73
- let zstationary= s:alignmaps_zline == line("'z")
74
-
75
- " remove fencepost blank lines.
76
- " restore 'a
77
- norm! 'yjmakdd'zdd
78
-
79
- " restore original 'y, 'z, and window positioning
80
- call RestoreMark(s:alignmaps_keepmy)
81
- call RestoreMark(s:alignmaps_keepmz)
82
- if zstationary > 0
83
- call RestoreWinPosn(s:alignmaps_posn)
84
- " call Decho("restored window positioning")
85
- endif
86
-
87
- " restoration of options
88
- let &gd= s:alignmaps_keepgd
89
- let &ch= s:alignmaps_keepch
90
- let @/ = s:alignmaps_keepsearch
91
-
92
- " remove script variables
93
- unlet s:alignmaps_keepch
94
- unlet s:alignmaps_keepsearch
95
- unlet s:alignmaps_keepmy
96
- unlet s:alignmaps_keepmz
97
- unlet s:alignmaps_keepgd
98
- unlet s:alignmaps_posn
99
- endif
100
-
101
- " call Dret("AlignMaps#WrapperEnd : alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
102
- endfun
103
-
104
- " ---------------------------------------------------------------------
105
- " AlignMaps#StdAlign: some semi-standard align calls {{{2
106
- fun! AlignMaps#StdAlign(mode) range
107
- " call Dfunc("AlignMaps#StdAlign(mode=".a:mode.")")
108
- if a:mode == 1
109
- " align on @
110
- " call Decho("align on @")
111
- AlignCtrl mIp1P1=l @
112
- 'a,.Align
113
- elseif a:mode == 2
114
- " align on @, retaining all initial white space on each line
115
- " call Decho("align on @, retaining all initial white space on each line")
116
- AlignCtrl mWp1P1=l @
117
- 'a,.Align
118
- elseif a:mode == 3
119
- " like mode 2, but ignore /* */-style comments
120
- " call Decho("like mode 2, but ignore /* */-style comments")
121
- AlignCtrl v ^\s*/[/*]
122
- AlignCtrl mWp1P1=l @
123
- 'a,.Align
124
- else
125
- echoerr "(AlignMaps) AlignMaps#StdAlign doesn't support mode#".a:mode
126
- endif
127
- " call Dret("AlignMaps#StdAlign")
128
- endfun
129
-
130
- " ---------------------------------------------------------------------
131
- " AlignMaps#CharJoiner: joins lines which end in the given character (spaces {{{2
132
- " at end are ignored)
133
- fun! AlignMaps#CharJoiner(chr)
134
- " call Dfunc("AlignMaps#CharJoiner(chr=".a:chr.")")
135
- let aline = line("'a")
136
- let rep = line(".") - aline
137
- while rep > 0
138
- norm! 'a
139
- while match(getline(aline),a:chr . "\s*$") != -1 && rep >= 0
140
- " while = at end-of-line, delete it and join with next
141
- norm! 'a$
142
- j!
143
- let rep = rep - 1
144
- endwhile
145
- " update rep(eat) count
146
- let rep = rep - 1
147
- if rep <= 0
148
- " terminate loop if at end-of-block
149
- break
150
- endif
151
- " prepare for next line
152
- norm! jma
153
- let aline = line("'a")
154
- endwhile
155
- " call Dret("AlignMaps#CharJoiner")
156
- endfun
157
-
158
- " ---------------------------------------------------------------------
159
- " AlignMaps#Equals: supports \t= and \T= {{{2
160
- fun! AlignMaps#Equals() range
161
- " call Dfunc("AlignMaps#Equals()")
162
- 'a,'zs/\s\+\([*/+\-%|&\~^]\==\)/ \1/e
163
- 'a,'zs@ \+\([*/+\-%|&\~^]\)=@\1=@ge
164
- 'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge
165
- 'a,'zs/\([!<>:]\)=/\=submatch(1)."\<Char-0x0f>"/ge
166
- norm g'zk
167
- AlignCtrl mIp1P1=l =
168
- AlignCtrl g =
169
- 'a,'z-1Align
170
- 'a,'z-1s@\([*/+\-%|&\~^!=]\)\( \+\)=@\2\1=@ge
171
- 'a,'z-1s/\( \+\);/;\1/ge
172
- if &ft == "c" || &ft == "cpp"
173
- " call Decho("exception for ".&ft)
174
- 'a,'z-1v/^\s*\/[*/]/s/\/[*/]/@&@/e
175
- 'a,'z-1v/^\s*\/[*/]/s/\*\//@&/e
176
- if exists("g:mapleader")
177
- exe "norm 'zk"
178
- call AlignMaps#StdAlign(1)
179
- else
180
- exe "norm 'zk"
181
- call AlignMaps#StdAlign(1)
182
- endif
183
- 'y,'zs/^\(\s*\) @/\1/e
184
- endif
185
- 'a,'z-1s/\%x0f/=/ge
186
- 'y,'zs/ @//eg
187
- " call Dret("AlignMaps#Equals")
188
- endfun
189
-
190
- " ---------------------------------------------------------------------
191
- " AlignMaps#Afnc: useful for splitting one-line function beginnings {{{2
192
- " into one line per argument format
193
- fun! AlignMaps#Afnc()
194
- " call Dfunc("AlignMaps#Afnc()")
195
-
196
- " keep display quiet
197
- let chkeep = &ch
198
- let gdkeep = &gd
199
- let vekeep = &ve
200
- set ch=2 nogd ve=
201
-
202
- " will use marks y,z ; save current values
203
- let mykeep = SaveMark("'y")
204
- let mzkeep = SaveMark("'z")
205
-
206
- " Find beginning of function -- be careful to skip over comments
207
- let cmmntid = synIDtrans(hlID("Comment"))
208
- let stringid = synIDtrans(hlID("String"))
209
- exe "norm! ]]"
210
- while search(")","bW") != 0
211
- " call Decho("line=".line(".")." col=".col("."))
212
- let parenid= synIDtrans(synID(line("."),col("."),1))
213
- if parenid != cmmntid && parenid != stringid
214
- break
215
- endif
216
- endwhile
217
- norm! %my
218
- s/(\s*\(\S\)/(\r \1/e
219
- exe "norm! `y%"
220
- s/)\s*\(\/[*/]\)/)\r\1/e
221
- exe "norm! `y%mz"
222
- 'y,'zs/\s\+$//e
223
- 'y,'zs/^\s\+//e
224
- 'y+1,'zs/^/ /
225
-
226
- " insert newline after every comma only one parenthesis deep
227
- sil! exe "norm! `y\<right>h"
228
- let parens = 1
229
- let cmmnt = 0
230
- let cmmntline= -1
231
- while parens >= 1
232
- " call Decho("parens=".parens." @a=".@a)
233
- exe 'norm! ma "ay`a '
234
- if @a == "("
235
- let parens= parens + 1
236
- elseif @a == ")"
237
- let parens= parens - 1
238
-
239
- " comment bypass: /* ... */ or //...
240
- elseif cmmnt == 0 && @a == '/'
241
- let cmmnt= 1
242
- elseif cmmnt == 1
243
- if @a == '/'
244
- let cmmnt = 2 " //...
245
- let cmmntline= line(".")
246
- elseif @a == '*'
247
- let cmmnt= 3 " /*...
248
- else
249
- let cmmnt= 0
250
- endif
251
- elseif cmmnt == 2 && line(".") != cmmntline
252
- let cmmnt = 0
253
- let cmmntline= -1
254
- elseif cmmnt == 3 && @a == '*'
255
- let cmmnt= 4
256
- elseif cmmnt == 4
257
- if @a == '/'
258
- let cmmnt= 0 " ...*/
259
- elseif @a != '*'
260
- let cmmnt= 3
261
- endif
262
-
263
- elseif @a == "," && parens == 1 && cmmnt == 0
264
- exe "norm! i\<CR>\<Esc>"
265
- endif
266
- endwhile
267
- norm! `y%mz%
268
- sil! 'y,'zg/^\s*$/d
269
-
270
- " perform substitutes to mark fields for Align
271
- sil! 'y+1,'zv/^\//s/^\s\+\(\S\)/ \1/e
272
- sil! 'y+1,'zv/^\//s/\(\S\)\s\+/\1 /eg
273
- sil! 'y+1,'zv/^\//s/\* \+/*/ge
274
- sil! 'y+1,'zv/^\//s/\w\zs\s*\*/ */ge
275
- " func
276
- " ws <- declaration -> <-ptr -> <-var-> <-[array][] -> <-glop-> <-end->
277
- sil! 'y+1,'zv/^\//s/^\s*\(\(\K\k*\s*\)\+\)\s\+\([(*]*\)\s*\(\K\k*\)\s*\(\(\[.\{-}]\)*\)\s*\(.\{-}\)\=\s*\([,)]\)\s*$/ \1@#\3@\4\5@\7\8/e
278
- sil! 'y+1,'z+1g/^\s*\/[*/]/norm! kJ
279
- sil! 'y+1,'z+1s%/[*/]%@&@%ge
280
- sil! 'y+1,'z+1s%*/%@&%ge
281
- AlignCtrl mIp0P0=l @
282
- sil! 'y+1,'zAlign
283
- sil! 'y,'zs%@\(/[*/]\)@%\t\1 %e
284
- sil! 'y,'zs%@\*/% */%e
285
- sil! 'y,'zs/@\([,)]\)/\1/
286
- sil! 'y,'zs/@/ /
287
- AlignCtrl mIlrp0P0= # @
288
- sil! 'y+1,'zAlign
289
- sil! 'y+1,'zs/#/ /
290
- sil! 'y+1,'zs/@//
291
- sil! 'y+1,'zs/\(\s\+\)\([,)]\)/\2\1/e
292
-
293
- " Restore
294
- call RestoreMark(mykeep)
295
- call RestoreMark(mzkeep)
296
- let &ch= chkeep
297
- let &gd= gdkeep
298
- let &ve= vekeep
299
-
300
- " call Dret("AlignMaps#Afnc")
301
- endfun
302
-
303
- " ---------------------------------------------------------------------
304
- " AlignMaps#FixMultiDec: converts a type arg,arg,arg; line to multiple lines {{{2
305
- fun! AlignMaps#FixMultiDec()
306
- " call Dfunc("AlignMaps#FixMultiDec()")
307
-
308
- " save register x
309
- let xkeep = @x
310
- let curline = getline(".")
311
- " call Decho("curline<".curline.">")
312
-
313
- " Get the type. I'm assuming one type per line (ie. int x; double y; on one line will not be handled properly)
314
- let @x=substitute(curline,'^\(\s*[a-zA-Z_ \t][a-zA-Z0-9_ \t]*\)\s\+[(*]*\h.*$','\1','')
315
- " call Decho("@x<".@x.">")
316
-
317
- " transform line
318
- exe 's/,/;\r'.@x.' /ge'
319
-
320
- "restore register x
321
- let @x= xkeep
322
-
323
- " call Dret("AlignMaps#FixMultiDec : my=".line("'y")." mz=".line("'z"))
324
- endfun
325
-
326
- " ---------------------------------------------------------------------
327
- " Restore: {{{1
328
- let &cpo= s:keepcpo
329
- unlet s:keepcpo
330
- " vim: ts=4 fdm=marker
@@ -1,139 +0,0 @@
1
- " =============================================================================
2
- " File: autoload/ctrlp/bookmarkdir.vim
3
- " Description: Bookmarked directories extension
4
- " Author: Kien Nguyen <github.com/kien>
5
- " =============================================================================
6
-
7
- " Init {{{1
8
- if exists('g:loaded_ctrlp_bookmarkdir') && g:loaded_ctrlp_bookmarkdir
9
- fini
10
- en
11
- let g:loaded_ctrlp_bookmarkdir = 1
12
-
13
- cal add(g:ctrlp_ext_vars, {
14
- \ 'init': 'ctrlp#bookmarkdir#init()',
15
- \ 'accept': 'ctrlp#bookmarkdir#accept',
16
- \ 'lname': 'bookmarked dirs',
17
- \ 'sname': 'bkd',
18
- \ 'type': 'tabs',
19
- \ 'opmul': 1,
20
- \ 'nolim': 1,
21
- \ 'wipe': 'ctrlp#bookmarkdir#remove',
22
- \ })
23
-
24
- let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)
25
- " Utilities {{{1
26
- fu! s:getinput(str, ...)
27
- echoh Identifier
28
- cal inputsave()
29
- let input = call('input', a:0 ? [a:str] + a:000 : [a:str])
30
- cal inputrestore()
31
- echoh None
32
- retu input
33
- endf
34
-
35
- fu! s:cachefile()
36
- if !exists('s:cadir') || !exists('s:cafile')
37
- let s:cadir = ctrlp#utils#cachedir().ctrlp#utils#lash().'bkd'
38
- let s:cafile = s:cadir.ctrlp#utils#lash().'cache.txt'
39
- en
40
- retu s:cafile
41
- endf
42
-
43
- fu! s:writecache(lines)
44
- cal ctrlp#utils#writecache(a:lines, s:cadir, s:cafile)
45
- endf
46
-
47
- fu! s:getbookmarks()
48
- retu ctrlp#utils#readfile(s:cachefile())
49
- endf
50
-
51
- fu! s:savebookmark(name, cwd)
52
- let entries = filter(s:getbookmarks(), 's:parts(v:val)[1] != a:cwd')
53
- cal s:writecache(insert(entries, a:name.' '.a:cwd))
54
- endf
55
-
56
- fu! s:setentries()
57
- let time = getftime(s:cachefile())
58
- if !( exists('s:bookmarks') && time == s:bookmarks[0] )
59
- let s:bookmarks = [time, s:getbookmarks()]
60
- en
61
- endf
62
-
63
- fu! s:parts(str)
64
- let mlist = matchlist(a:str, '\v([^\t]+)\t(.*)$')
65
- retu mlist != [] ? mlist[1:2] : ['', '']
66
- endf
67
-
68
- fu! s:process(entries, type)
69
- retu map(a:entries, 's:modify(v:val, a:type)')
70
- endf
71
-
72
- fu! s:modify(entry, type)
73
- let [name, dir] = s:parts(a:entry)
74
- let dir = fnamemodify(dir, a:type)
75
- retu name.' '.( dir == '' ? '.' : dir )
76
- endf
77
-
78
- fu! s:msg(name, cwd)
79
- redr
80
- echoh Identifier | echon 'Bookmarked ' | echoh Constant
81
- echon a:name.' ' | echoh Directory | echon a:cwd
82
- echoh None
83
- endf
84
-
85
- fu! s:syntax()
86
- if !ctrlp#nosy()
87
- cal ctrlp#hicheck('CtrlPBookmark', 'Identifier')
88
- cal ctrlp#hicheck('CtrlPTabExtra', 'Comment')
89
- sy match CtrlPBookmark '^> [^\t]\+' contains=CtrlPLinePre
90
- sy match CtrlPTabExtra '\zs\t.*\ze$'
91
- en
92
- endf
93
- " Public {{{1
94
- fu! ctrlp#bookmarkdir#init()
95
- cal s:setentries()
96
- cal s:syntax()
97
- retu s:process(copy(s:bookmarks[1]), ':.')
98
- endf
99
-
100
- fu! ctrlp#bookmarkdir#accept(mode, str)
101
- let parts = s:parts(s:modify(a:str, ':p'))
102
- cal call('s:savebookmark', parts)
103
- if a:mode =~ 't\|v\|h'
104
- cal ctrlp#exit()
105
- en
106
- cal ctrlp#setdir(parts[1], a:mode =~ 't\|h' ? 'chd!' : 'lc!')
107
- if a:mode == 'e'
108
- cal ctrlp#switchtype(0)
109
- cal ctrlp#recordhist()
110
- cal ctrlp#prtclear()
111
- en
112
- endf
113
-
114
- fu! ctrlp#bookmarkdir#add(dir)
115
- let str = 'Directory to bookmark: '
116
- let cwd = a:dir != '' ? a:dir : s:getinput(str, getcwd(), 'dir')
117
- if cwd == '' | retu | en
118
- let cwd = fnamemodify(cwd, ':p')
119
- let name = s:getinput('Bookmark as: ', cwd)
120
- if name == '' | retu | en
121
- let name = tr(name, ' ', ' ')
122
- cal s:savebookmark(name, cwd)
123
- cal s:msg(name, cwd)
124
- endf
125
-
126
- fu! ctrlp#bookmarkdir#remove(entries)
127
- cal s:process(a:entries, ':p')
128
- cal s:writecache(a:entries == [] ? [] :
129
- \ filter(s:getbookmarks(), 'index(a:entries, v:val) < 0'))
130
- cal s:setentries()
131
- retu s:process(copy(s:bookmarks[1]), ':.')
132
- endf
133
-
134
- fu! ctrlp#bookmarkdir#id()
135
- retu s:id
136
- endf
137
- "}}}
138
-
139
- " vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2
@@ -1,238 +0,0 @@
1
- " =============================================================================
2
- " File: autoload/ctrlp/buffertag.vim
3
- " Description: Buffer Tag extension
4
- " Maintainer: Kien Nguyen <github.com/kien>
5
- " Credits: Much of the code was taken from tagbar.vim by Jan Larres, plus
6
- " a few lines from taglist.vim by Yegappan Lakshmanan and from
7
- " buffertag.vim by Takeshi Nishida.
8
- " =============================================================================
9
-
10
- " Init {{{1
11
- if exists('g:loaded_ctrlp_buftag') && g:loaded_ctrlp_buftag
12
- fini
13
- en
14
- let g:loaded_ctrlp_buftag = 1
15
-
16
- cal add(g:ctrlp_ext_vars, {
17
- \ 'init': 'ctrlp#buffertag#init(s:crfile)',
18
- \ 'accept': 'ctrlp#buffertag#accept',
19
- \ 'lname': 'buffer tags',
20
- \ 'sname': 'bft',
21
- \ 'exit': 'ctrlp#buffertag#exit()',
22
- \ 'type': 'tabs',
23
- \ 'opts': 'ctrlp#buffertag#opts()',
24
- \ })
25
-
26
- let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)
27
-
28
- let [s:pref, s:opts] = ['g:ctrlp_buftag_', {
29
- \ 'systemenc': ['s:enc', &enc],
30
- \ 'ctags_bin': ['s:bin', ''],
31
- \ 'types': ['s:usr_types', {}],
32
- \ }]
33
-
34
- let s:bins = [
35
- \ 'ctags-exuberant',
36
- \ 'exuberant-ctags',
37
- \ 'exctags',
38
- \ '/usr/local/bin/ctags',
39
- \ '/opt/local/bin/ctags',
40
- \ 'ctags',
41
- \ 'ctags.exe',
42
- \ 'tags',
43
- \ ]
44
-
45
- let s:types = {
46
- \ 'asm' : '%sasm%sasm%sdlmt',
47
- \ 'aspperl': '%sasp%sasp%sfsv',
48
- \ 'aspvbs' : '%sasp%sasp%sfsv',
49
- \ 'awk' : '%sawk%sawk%sf',
50
- \ 'beta' : '%sbeta%sbeta%sfsv',
51
- \ 'c' : '%sc%sc%sdgsutvf',
52
- \ 'cpp' : '%sc++%sc++%snvdtcgsuf',
53
- \ 'cs' : '%sc#%sc#%sdtncEgsipm',
54
- \ 'cobol' : '%scobol%scobol%sdfgpPs',
55
- \ 'eiffel' : '%seiffel%seiffel%scf',
56
- \ 'erlang' : '%serlang%serlang%sdrmf',
57
- \ 'expect' : '%stcl%stcl%scfp',
58
- \ 'fortran': '%sfortran%sfortran%spbceiklmntvfs',
59
- \ 'html' : '%shtml%shtml%saf',
60
- \ 'java' : '%sjava%sjava%spcifm',
61
- \ 'javascript': '%sjavascript%sjavascript%sf',
62
- \ 'lisp' : '%slisp%slisp%sf',
63
- \ 'lua' : '%slua%slua%sf',
64
- \ 'make' : '%smake%smake%sm',
65
- \ 'pascal' : '%spascal%spascal%sfp',
66
- \ 'perl' : '%sperl%sperl%sclps',
67
- \ 'php' : '%sphp%sphp%scdvf',
68
- \ 'python' : '%spython%spython%scmf',
69
- \ 'rexx' : '%srexx%srexx%ss',
70
- \ 'ruby' : '%sruby%sruby%scfFm',
71
- \ 'scheme' : '%sscheme%sscheme%ssf',
72
- \ 'sh' : '%ssh%ssh%sf',
73
- \ 'csh' : '%ssh%ssh%sf',
74
- \ 'zsh' : '%ssh%ssh%sf',
75
- \ 'slang' : '%sslang%sslang%snf',
76
- \ 'sml' : '%ssml%ssml%secsrtvf',
77
- \ 'sql' : '%ssql%ssql%scFPrstTvfp',
78
- \ 'tcl' : '%stcl%stcl%scfmp',
79
- \ 'vera' : '%svera%svera%scdefgmpPtTvx',
80
- \ 'verilog': '%sverilog%sverilog%smcPertwpvf',
81
- \ 'vim' : '%svim%svim%savf',
82
- \ 'yacc' : '%syacc%syacc%sl',
83
- \ }
84
-
85
- cal map(s:types, 'printf(v:val, "--language-force=", " --", "-types=")')
86
-
87
- if executable('jsctags')
88
- cal extend(s:types, { 'javascript': { 'args': '-f -', 'bin': 'jsctags' } })
89
- en
90
-
91
- fu! ctrlp#buffertag#opts()
92
- for [ke, va] in items(s:opts)
93
- let {va[0]} = exists(s:pref.ke) ? {s:pref.ke} : va[1]
94
- endfo
95
- " Ctags bin
96
- if empty(s:bin)
97
- for bin in s:bins | if executable(bin)
98
- let s:bin = bin
99
- brea
100
- en | endfo
101
- el
102
- let s:bin = expand(s:bin, 1)
103
- en
104
- " Types
105
- cal extend(s:types, s:usr_types)
106
- endf
107
- " Utilities {{{1
108
- fu! s:validfile(fname, ftype)
109
- if ( !empty(a:fname) || !empty(a:ftype) ) && filereadable(a:fname)
110
- \ && index(keys(s:types), a:ftype) >= 0 | retu 1 | en
111
- retu 0
112
- endf
113
-
114
- fu! s:exectags(cmd)
115
- if exists('+ssl')
116
- let [ssl, &ssl] = [&ssl, 0]
117
- en
118
- if &sh =~ 'cmd\.exe'
119
- let [sxq, &sxq, shcf, &shcf] = [&sxq, '"', &shcf, '/s /c']
120
- en
121
- let output = system(a:cmd)
122
- if &sh =~ 'cmd\.exe'
123
- let [&sxq, &shcf] = [sxq, shcf]
124
- en
125
- if exists('+ssl')
126
- let &ssl = ssl
127
- en
128
- retu output
129
- endf
130
-
131
- fu! s:exectagsonfile(fname, ftype)
132
- let [ags, ft] = ['-f - --sort=no --excmd=pattern --fields=nKs ', a:ftype]
133
- if type(s:types[ft]) == 1
134
- let ags .= s:types[ft]
135
- let bin = s:bin
136
- elsei type(s:types[ft]) == 4
137
- let ags = s:types[ft]['args']
138
- let bin = expand(s:types[ft]['bin'], 1)
139
- en
140
- if empty(bin) | retu '' | en
141
- let cmd = s:esctagscmd(bin, ags, a:fname)
142
- if empty(cmd) | retu '' | en
143
- let output = s:exectags(cmd)
144
- if v:shell_error || output =~ 'Warning: cannot open' | retu '' | en
145
- retu output
146
- endf
147
-
148
- fu! s:esctagscmd(bin, args, ...)
149
- if exists('+ssl')
150
- let [ssl, &ssl] = [&ssl, 0]
151
- en
152
- let fname = a:0 == 1 ? shellescape(a:1) : ''
153
- let cmd = shellescape(a:bin).' '.a:args.' '.fname
154
- if exists('+ssl')
155
- let &ssl = ssl
156
- en
157
- if has('iconv')
158
- let last = s:enc != &enc ? s:enc : !empty($LANG) ? $LANG : &enc
159
- let cmd = iconv(cmd, &enc, last)
160
- en
161
- retu cmd
162
- endf
163
-
164
- fu! s:process(fname, ftype)
165
- if !s:validfile(a:fname, a:ftype) | retu [] | endif
166
- let ftime = getftime(a:fname)
167
- if has_key(g:ctrlp_buftags, a:fname)
168
- \ && g:ctrlp_buftags[a:fname]['time'] >= ftime
169
- let lines = g:ctrlp_buftags[a:fname]['lines']
170
- el
171
- let data = s:exectagsonfile(a:fname, a:ftype)
172
- let [raw, lines] = [split(data, '\n\+'), []]
173
- for line in raw | if len(split(line, ';"')) == 2
174
- let parsed_line = s:parseline(line)
175
- if parsed_line != ''
176
- cal add(lines, parsed_line)
177
- en
178
- en | endfo
179
- let cache = { a:fname : { 'time': ftime, 'lines': lines } }
180
- cal extend(g:ctrlp_buftags, cache)
181
- en
182
- retu lines
183
- endf
184
-
185
- fu! s:parseline(line)
186
- let eval = '\v^([^\t]+)\t(.+)\t\/\^(.+)\$\/\;\"\t(.+)\tline(no)?\:(\d+)'
187
- let vals = matchlist(a:line, eval)
188
- if vals == [] | retu '' | en
189
- let [bufnr, bufname] = [bufnr('^'.vals[2].'$'), fnamemodify(vals[2], ':p:t')]
190
- retu vals[1].' '.vals[4].'|'.bufnr.':'.bufname.'|'.vals[6].'| '.vals[3]
191
- endf
192
-
193
- fu! s:syntax()
194
- if !ctrlp#nosy()
195
- cal ctrlp#hicheck('CtrlPTagKind', 'Title')
196
- cal ctrlp#hicheck('CtrlPBufName', 'Directory')
197
- cal ctrlp#hicheck('CtrlPTabExtra', 'Comment')
198
- sy match CtrlPTagKind '\zs[^\t|]\+\ze|\d\+:[^|]\+|\d\+|'
199
- sy match CtrlPBufName '|\d\+:\zs[^|]\+\ze|\d\+|'
200
- sy match CtrlPTabExtra '\zs\t.*\ze$' contains=CtrlPBufName,CtrlPTagKind
201
- en
202
- endf
203
- " Public {{{1
204
- fu! ctrlp#buffertag#init(fname)
205
- let bufs = exists('s:btmode') && s:btmode
206
- \ ? filter(ctrlp#buffers(), 'filereadable(v:val)')
207
- \ : [exists('s:bufname') ? s:bufname : a:fname]
208
- let lines = []
209
- for each in bufs
210
- let bname = fnamemodify(each, ':p')
211
- let tftype = get(split(getbufvar(bname, '&ft'), '\.'), 0, '')
212
- cal extend(lines, s:process(bname, tftype))
213
- endfo
214
- cal s:syntax()
215
- retu lines
216
- endf
217
-
218
- fu! ctrlp#buffertag#accept(mode, str)
219
- let vals = matchlist(a:str, '\v^[^\t]+\t+[^\t|]+\|(\d+)\:[^\t|]+\|(\d+)\|')
220
- if vals == [] | retu | en
221
- let [bufnm, linenr] = [fnamemodify(bufname(str2nr(vals[1])), ':p'), vals[2]]
222
- cal ctrlp#acceptfile(a:mode, bufnm, linenr)
223
- endf
224
-
225
- fu! ctrlp#buffertag#cmd(mode, ...)
226
- let s:btmode = a:mode
227
- if a:0 && !empty(a:1)
228
- let s:bufname = fnamemodify(a:1, ':p')
229
- en
230
- retu s:id
231
- endf
232
-
233
- fu! ctrlp#buffertag#exit()
234
- unl! s:btmode s:bufname
235
- endf
236
- "}}}
237
-
238
- " vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2