utils 0.0.0

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 (75) hide show
  1. data/Rakefile +68 -0
  2. data/VERSION +1 -0
  3. data/bin/chroot-exec +12 -0
  4. data/bin/chroot-libs +18 -0
  5. data/bin/classify +37 -0
  6. data/bin/discover +137 -0
  7. data/bin/edit +74 -0
  8. data/bin/errf +32 -0
  9. data/bin/git-empty +8 -0
  10. data/bin/myex +90 -0
  11. data/bin/number_files +26 -0
  12. data/bin/same_files +37 -0
  13. data/bin/search +205 -0
  14. data/bin/sedit +3 -0
  15. data/bin/sshscreen +68 -0
  16. data/bin/term +21 -0
  17. data/bin/unquarantine_apps +8 -0
  18. data/bin/untest +17 -0
  19. data/bin/utils-install-config +10 -0
  20. data/bin/vacuum_firefox_sqlite +22 -0
  21. data/bin/xmp +74 -0
  22. data/lib/utils.rb +8 -0
  23. data/lib/utils/config.rb +23 -0
  24. data/lib/utils/config/gdb/asm +179 -0
  25. data/lib/utils/config/gdb/ruby +528 -0
  26. data/lib/utils/config/gdbinit +8 -0
  27. data/lib/utils/config/irbrc +455 -0
  28. data/lib/utils/config/rdebugrc +2 -0
  29. data/lib/utils/config/screenrc +143 -0
  30. data/lib/utils/config/vim/autoload/Align.vim +1029 -0
  31. data/lib/utils/config/vim/autoload/AlignMaps.vim +330 -0
  32. data/lib/utils/config/vim/autoload/rails.vim +4744 -0
  33. data/lib/utils/config/vim/autoload/rubycomplete.vim +801 -0
  34. data/lib/utils/config/vim/autoload/sqlcomplete.vim +741 -0
  35. data/lib/utils/config/vim/autoload/vimball.vim +750 -0
  36. data/lib/utils/config/vim/colors/flori.vim +113 -0
  37. data/lib/utils/config/vim/compiler/eruby.vim +40 -0
  38. data/lib/utils/config/vim/compiler/ruby.vim +67 -0
  39. data/lib/utils/config/vim/compiler/rubyunit.vim +34 -0
  40. data/lib/utils/config/vim/ftdetect/ragel.vim +2 -0
  41. data/lib/utils/config/vim/ftdetect/ruby.vim +17 -0
  42. data/lib/utils/config/vim/ftplugin/eruby.vim +100 -0
  43. data/lib/utils/config/vim/ftplugin/ruby.vim +260 -0
  44. data/lib/utils/config/vim/ftplugin/xml.vim +941 -0
  45. data/lib/utils/config/vim/indent/IndentAnything_html.vim +35 -0
  46. data/lib/utils/config/vim/indent/eruby.vim +77 -0
  47. data/lib/utils/config/vim/indent/javascript.vim +116 -0
  48. data/lib/utils/config/vim/indent/ruby.vim +377 -0
  49. data/lib/utils/config/vim/plugin/AlignMapsPlugin.vim +242 -0
  50. data/lib/utils/config/vim/plugin/AlignPlugin.vim +41 -0
  51. data/lib/utils/config/vim/plugin/Decho.vim +592 -0
  52. data/lib/utils/config/vim/plugin/IndentAnything.vim +675 -0
  53. data/lib/utils/config/vim/plugin/bufexplorer.vim +1144 -0
  54. data/lib/utils/config/vim/plugin/cecutil.vim +482 -0
  55. data/lib/utils/config/vim/plugin/fugitive.vim +1703 -0
  56. data/lib/utils/config/vim/plugin/lusty-explorer.vim +1509 -0
  57. data/lib/utils/config/vim/plugin/rails.vim +340 -0
  58. data/lib/utils/config/vim/plugin/rubyextra.vim +193 -0
  59. data/lib/utils/config/vim/plugin/surround.vim +628 -0
  60. data/lib/utils/config/vim/plugin/taglist.vim +4546 -0
  61. data/lib/utils/config/vim/plugin/test/IndentAnything/test.js +131 -0
  62. data/lib/utils/config/vim/plugin/vimballPlugin.vim +40 -0
  63. data/lib/utils/config/vim/syntax/Decho.vim +101 -0
  64. data/lib/utils/config/vim/syntax/eruby.vim +73 -0
  65. data/lib/utils/config/vim/syntax/javascript.vim +246 -0
  66. data/lib/utils/config/vim/syntax/ragel.vim +165 -0
  67. data/lib/utils/config/vim/syntax/ruby.vim +367 -0
  68. data/lib/utils/config/vimrc +461 -0
  69. data/lib/utils/file.rb +49 -0
  70. data/lib/utils/find.rb +54 -0
  71. data/lib/utils/md5.rb +23 -0
  72. data/lib/utils/patterns.rb +34 -0
  73. data/lib/utils/version.rb +8 -0
  74. data/utils.gemspec +33 -0
  75. metadata +183 -0
@@ -0,0 +1,482 @@
1
+ " cecutil.vim : save/restore window position
2
+ " save/restore mark position
3
+ " save/restore selected user maps
4
+ " Author: Charles E. Campbell, Jr.
5
+ " Version: 17
6
+ " Date: Sep 04, 2007
7
+ "
8
+ " Saving Restoring Destroying Marks: {{{1
9
+ " call SaveMark(markname) let savemark= SaveMark(markname)
10
+ " call RestoreMark(markname) call RestoreMark(savemark)
11
+ " call DestroyMark(markname)
12
+ " commands: SM RM DM
13
+ "
14
+ " Saving Restoring Destroying Window Position: {{{1
15
+ " call SaveWinPosn() let winposn= SaveWinPosn()
16
+ " call RestoreWinPosn() call RestoreWinPosn(winposn)
17
+ " \swp : save current window/buffer's position
18
+ " \rwp : restore current window/buffer's previous position
19
+ " commands: SWP RWP
20
+ "
21
+ " Saving And Restoring User Maps: {{{1
22
+ " call SaveUserMaps(mapmode,maplead,mapchx,suffix)
23
+ " call RestoreUserMaps(suffix)
24
+ "
25
+ " GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
26
+ "
27
+ " You believe that God is one. You do well. The demons also {{{1
28
+ " believe, and shudder. But do you want to know, vain man, that
29
+ " faith apart from works is dead? (James 2:19,20 WEB)
30
+
31
+ " Load Once: {{{1
32
+ if &cp || exists("g:loaded_cecutil")
33
+ finish
34
+ endif
35
+ let g:loaded_cecutil = "v17"
36
+ let s:keepcpo = &cpo
37
+ set cpo&vim
38
+ "DechoVarOn
39
+
40
+ " -----------------------
41
+ " Public Interface: {{{1
42
+ " -----------------------
43
+
44
+ " Map Interface: {{{2
45
+ if !hasmapto('<Plug>SaveWinPosn')
46
+ map <unique> <Leader>swp <Plug>SaveWinPosn
47
+ endif
48
+ if !hasmapto('<Plug>RestoreWinPosn')
49
+ map <unique> <Leader>rwp <Plug>RestoreWinPosn
50
+ endif
51
+ nmap <silent> <Plug>SaveWinPosn :call SaveWinPosn()<CR>
52
+ nmap <silent> <Plug>RestoreWinPosn :call RestoreWinPosn()<CR>
53
+
54
+ " Command Interface: {{{2
55
+ com! -bar -nargs=0 SWP call SaveWinPosn()
56
+ com! -bar -nargs=0 RWP call RestoreWinPosn()
57
+ com! -bar -nargs=1 SM call SaveMark(<q-args>)
58
+ com! -bar -nargs=1 RM call RestoreMark(<q-args>)
59
+ com! -bar -nargs=1 DM call DestroyMark(<q-args>)
60
+
61
+ if v:version < 630
62
+ let s:modifier= "sil "
63
+ else
64
+ let s:modifier= "sil keepj "
65
+ endif
66
+
67
+ " ---------------------------------------------------------------------
68
+ " SaveWinPosn: {{{1
69
+ " let winposn= SaveWinPosn() will save window position in winposn variable
70
+ " call SaveWinPosn() will save window position in b:cecutil_winposn{b:cecutil_iwinposn}
71
+ " let winposn= SaveWinPosn(0) will *only* save window position in winposn variable (no stacking done)
72
+ fun! SaveWinPosn(...)
73
+ " call Dfunc("SaveWinPosn() a:0=".a:0)
74
+ if line(".") == 1 && getline(1) == ""
75
+ " call Dfunc("SaveWinPosn : empty buffer")
76
+ return ""
77
+ endif
78
+ let so_keep = &so
79
+ let siso_keep = &siso
80
+ let ss_keep = &ss
81
+ set so=0 siso=0 ss=0
82
+
83
+ let swline = line(".")
84
+ let swcol = col(".")
85
+ let swwline = winline() - 1
86
+ let swwcol = virtcol(".") - wincol()
87
+ let savedposn = "call GoWinbufnr(".winbufnr(0).")|silent ".swline
88
+ let savedposn = savedposn."|".s:modifier."norm! 0z\<cr>"
89
+ if swwline > 0
90
+ let savedposn= savedposn.":".s:modifier."norm! ".swwline."\<c-y>\<cr>"
91
+ endif
92
+ if swwcol > 0
93
+ let savedposn= savedposn.":".s:modifier."norm! 0".swwcol."zl\<cr>"
94
+ endif
95
+ let savedposn = savedposn.":".s:modifier."call cursor(".swline.",".swcol.")\<cr>"
96
+
97
+ " save window position in
98
+ " b:cecutil_winposn_{iwinposn} (stack)
99
+ " only when SaveWinPosn() is used
100
+ if a:0 == 0
101
+ if !exists("b:cecutil_iwinposn")
102
+ let b:cecutil_iwinposn= 1
103
+ else
104
+ let b:cecutil_iwinposn= b:cecutil_iwinposn + 1
105
+ endif
106
+ " call Decho("saving posn to SWP stack")
107
+ let b:cecutil_winposn{b:cecutil_iwinposn}= savedposn
108
+ endif
109
+
110
+ let &so = so_keep
111
+ let &siso = siso_keep
112
+ let &ss = ss_keep
113
+
114
+ " if exists("b:cecutil_iwinposn") " Decho
115
+ " call Decho("b:cecutil_winpos{".b:cecutil_iwinposn."}[".b:cecutil_winposn{b:cecutil_iwinposn}."]")
116
+ " else " Decho
117
+ " call Decho("b:cecutil_iwinposn doesn't exist")
118
+ " endif " Decho
119
+ " call Dret("SaveWinPosn [".savedposn."]")
120
+ return savedposn
121
+ endfun
122
+
123
+ " ---------------------------------------------------------------------
124
+ " RestoreWinPosn: {{{1
125
+ fun! RestoreWinPosn(...)
126
+ " call Dfunc("RestoreWinPosn() a:0=".a:0)
127
+ " call Decho("getline(1)<".getline(1).">")
128
+ " call Decho("line(.)=".line("."))
129
+ if line(".") == 1 && getline(1) == ""
130
+ " call Dfunc("RestoreWinPosn : empty buffer")
131
+ return ""
132
+ endif
133
+ let so_keep = &so
134
+ let siso_keep = &siso
135
+ let ss_keep = &ss
136
+ set so=0 siso=0 ss=0
137
+
138
+ if a:0 == 0 || a:1 == ""
139
+ " use saved window position in b:cecutil_winposn{b:cecutil_iwinposn} if it exists
140
+ if exists("b:cecutil_iwinposn") && exists("b:cecutil_winposn{b:cecutil_iwinposn}")
141
+ " call Decho("using stack b:cecutil_winposn{".b:cecutil_iwinposn."}<".b:cecutil_winposn{b:cecutil_iwinposn}.">")
142
+ try
143
+ exe "silent! ".b:cecutil_winposn{b:cecutil_iwinposn}
144
+ catch /^Vim\%((\a\+)\)\=:E749/
145
+ " ignore empty buffer error messages
146
+ endtry
147
+ " normally drop top-of-stack by one
148
+ " but while new top-of-stack doesn't exist
149
+ " drop top-of-stack index by one again
150
+ if b:cecutil_iwinposn >= 1
151
+ unlet b:cecutil_winposn{b:cecutil_iwinposn}
152
+ let b:cecutil_iwinposn= b:cecutil_iwinposn - 1
153
+ while b:cecutil_iwinposn >= 1 && !exists("b:cecutil_winposn{b:cecutil_iwinposn}")
154
+ let b:cecutil_iwinposn= b:cecutil_iwinposn - 1
155
+ endwhile
156
+ if b:cecutil_iwinposn < 1
157
+ unlet b:cecutil_iwinposn
158
+ endif
159
+ endif
160
+ else
161
+ echohl WarningMsg
162
+ echomsg "***warning*** need to SaveWinPosn first!"
163
+ echohl None
164
+ endif
165
+
166
+ else " handle input argument
167
+ " call Decho("using input a:1<".a:1.">")
168
+ " use window position passed to this function
169
+ exe "silent ".a:1
170
+ " remove a:1 pattern from b:cecutil_winposn{b:cecutil_iwinposn} stack
171
+ if exists("b:cecutil_iwinposn")
172
+ let jwinposn= b:cecutil_iwinposn
173
+ while jwinposn >= 1 " search for a:1 in iwinposn..1
174
+ if exists("b:cecutil_winposn{jwinposn}") " if it exists
175
+ if a:1 == b:cecutil_winposn{jwinposn} " and the pattern matches
176
+ unlet b:cecutil_winposn{jwinposn} " unlet it
177
+ if jwinposn == b:cecutil_iwinposn " if at top-of-stack
178
+ let b:cecutil_iwinposn= b:cecutil_iwinposn - 1 " drop stacktop by one
179
+ endif
180
+ endif
181
+ endif
182
+ let jwinposn= jwinposn - 1
183
+ endwhile
184
+ endif
185
+ endif
186
+
187
+ " seems to be something odd: vertical motions after RWP
188
+ " cause jump to first column. Following fixes that
189
+ if wincol() > 1
190
+ silent norm! hl
191
+ elseif virtcol(".") < virtcol("$")
192
+ silent norm! lh
193
+ endif
194
+
195
+ let &so = so_keep
196
+ let &siso = siso_keep
197
+ let &ss = ss_keep
198
+
199
+ " call Dret("RestoreWinPosn")
200
+ endfun
201
+
202
+ " ---------------------------------------------------------------------
203
+ " GoWinbufnr: go to window holding given buffer (by number) {{{1
204
+ " Prefers current window; if its buffer number doesn't match,
205
+ " then will try from topleft to bottom right
206
+ fun! GoWinbufnr(bufnum)
207
+ " call Dfunc("GoWinbufnr(".a:bufnum.")")
208
+ if winbufnr(0) == a:bufnum
209
+ " call Dret("GoWinbufnr : winbufnr(0)==a:bufnum")
210
+ return
211
+ endif
212
+ winc t
213
+ let first=1
214
+ while winbufnr(0) != a:bufnum && (first || winnr() != 1)
215
+ winc w
216
+ let first= 0
217
+ endwhile
218
+ " call Dret("GoWinbufnr")
219
+ endfun
220
+
221
+ " ---------------------------------------------------------------------
222
+ " SaveMark: sets up a string saving a mark position. {{{1
223
+ " For example, SaveMark("a")
224
+ " Also sets up a global variable, g:savemark_{markname}
225
+ fun! SaveMark(markname)
226
+ " call Dfunc("SaveMark(markname<".a:markname.">)")
227
+ let markname= a:markname
228
+ if strpart(markname,0,1) !~ '\a'
229
+ let markname= strpart(markname,1,1)
230
+ endif
231
+ " call Decho("markname=".markname)
232
+
233
+ let lzkeep = &lz
234
+ set lz
235
+
236
+ if 1 <= line("'".markname) && line("'".markname) <= line("$")
237
+ let winposn = SaveWinPosn(0)
238
+ exe s:modifier."norm! `".markname
239
+ let savemark = SaveWinPosn(0)
240
+ let g:savemark_{markname} = savemark
241
+ let savemark = markname.savemark
242
+ call RestoreWinPosn(winposn)
243
+ else
244
+ let g:savemark_{markname} = ""
245
+ let savemark = ""
246
+ endif
247
+
248
+ let &lz= lzkeep
249
+
250
+ " call Dret("SaveMark : savemark<".savemark.">")
251
+ return savemark
252
+ endfun
253
+
254
+ " ---------------------------------------------------------------------
255
+ " RestoreMark: {{{1
256
+ " call RestoreMark("a") -or- call RestoreMark(savemark)
257
+ fun! RestoreMark(markname)
258
+ " call Dfunc("RestoreMark(markname<".a:markname.">)")
259
+
260
+ if strlen(a:markname) <= 0
261
+ " call Dret("RestoreMark : no such mark")
262
+ return
263
+ endif
264
+ let markname= strpart(a:markname,0,1)
265
+ if markname !~ '\a'
266
+ " handles 'a -> a styles
267
+ let markname= strpart(a:markname,1,1)
268
+ endif
269
+ " call Decho("markname=".markname." strlen(a:markname)=".strlen(a:markname))
270
+
271
+ let lzkeep = &lz
272
+ set lz
273
+ let winposn = SaveWinPosn(0)
274
+
275
+ if strlen(a:markname) <= 2
276
+ if exists("g:savemark_{markname}") && strlen(g:savemark_{markname}) != 0
277
+ " use global variable g:savemark_{markname}
278
+ " call Decho("use savemark list")
279
+ call RestoreWinPosn(g:savemark_{markname})
280
+ exe "norm! m".markname
281
+ endif
282
+ else
283
+ " markname is a savemark command (string)
284
+ " call Decho("use savemark command")
285
+ let markcmd= strpart(a:markname,1)
286
+ call RestoreWinPosn(markcmd)
287
+ exe "norm! m".markname
288
+ endif
289
+
290
+ call RestoreWinPosn(winposn)
291
+ let &lz = lzkeep
292
+
293
+ " call Dret("RestoreMark")
294
+ endfun
295
+
296
+ " ---------------------------------------------------------------------
297
+ " DestroyMark: {{{1
298
+ " call DestroyMark("a") -- destroys mark
299
+ fun! DestroyMark(markname)
300
+ " call Dfunc("DestroyMark(markname<".a:markname.">)")
301
+
302
+ " save options and set to standard values
303
+ let reportkeep= &report
304
+ let lzkeep = &lz
305
+ set lz report=10000
306
+
307
+ let markname= strpart(a:markname,0,1)
308
+ if markname !~ '\a'
309
+ " handles 'a -> a styles
310
+ let markname= strpart(a:markname,1,1)
311
+ endif
312
+ " call Decho("markname=".markname)
313
+
314
+ let curmod = &mod
315
+ let winposn = SaveWinPosn(0)
316
+ 1
317
+ let lineone = getline(".")
318
+ exe "k".markname
319
+ d
320
+ put! =lineone
321
+ let &mod = curmod
322
+ call RestoreWinPosn(winposn)
323
+
324
+ " restore options to user settings
325
+ let &report = reportkeep
326
+ let &lz = lzkeep
327
+
328
+ " call Dret("DestroyMark")
329
+ endfun
330
+
331
+ " ---------------------------------------------------------------------
332
+ " QArgSplitter: to avoid \ processing by <f-args>, <q-args> is needed. {{{1
333
+ " However, <q-args> doesn't split at all, so this one returns a list
334
+ " with splits at all whitespace (only!), plus a leading length-of-list.
335
+ " The resulting list: qarglist[0] corresponds to a:0
336
+ " qarglist[i] corresponds to a:{i}
337
+ fun! QArgSplitter(qarg)
338
+ " call Dfunc("QArgSplitter(qarg<".a:qarg.">)")
339
+ let qarglist = split(a:qarg)
340
+ let qarglistlen = len(qarglist)
341
+ let qarglist = insert(qarglist,qarglistlen)
342
+ " call Dret("QArgSplitter ".string(qarglist))
343
+ return qarglist
344
+ endfun
345
+
346
+ " ---------------------------------------------------------------------
347
+ " ListWinPosn:
348
+ "fun! ListWinPosn() " Decho
349
+ " if !exists("b:cecutil_iwinposn") || b:cecutil_iwinposn == 0 " Decho
350
+ " call Decho("nothing on SWP stack") " Decho
351
+ " else " Decho
352
+ " let jwinposn= b:cecutil_iwinposn " Decho
353
+ " while jwinposn >= 1 " Decho
354
+ " if exists("b:cecutil_winposn{jwinposn}") " Decho
355
+ " call Decho("winposn{".jwinposn."}<".b:cecutil_winposn{jwinposn}.">") " Decho
356
+ " else " Decho
357
+ " call Decho("winposn{".jwinposn."} -- doesn't exist") " Decho
358
+ " endif " Decho
359
+ " let jwinposn= jwinposn - 1 " Decho
360
+ " endwhile " Decho
361
+ " endif " Decho
362
+ "endfun " Decho
363
+ "com! -nargs=0 LWP call ListWinPosn() " Decho
364
+
365
+ " ---------------------------------------------------------------------
366
+ " SaveUserMaps: this function sets up a script-variable (s:restoremap) {{{1
367
+ " which can be used to restore user maps later with
368
+ " call RestoreUserMaps()
369
+ "
370
+ " mapmode - see :help maparg for its list
371
+ " ex. "n" = Normal
372
+ " If the first letter is u, then unmapping will be done
373
+ " ex. "un" = Normal + unmapping
374
+ " maplead - see mapchx
375
+ " mapchx - "<something>" handled as a single map item.
376
+ " ex. "<left>"
377
+ " - "string" a string of single letters which are actually
378
+ " multiple two-letter maps (using the maplead:
379
+ " maplead . each_character_in_string)
380
+ " ex. maplead="\" and mapchx="abc" saves user mappings for
381
+ " \a, \b, and \c
382
+ " Of course, if maplead is "", then for mapchx="abc",
383
+ " mappings for a, b, and c are saved.
384
+ " - :something handled as a single map item, w/o the ":"
385
+ " ex. mapchx= ":abc" will save a mapping for "abc"
386
+ " suffix - a string unique to your plugin
387
+ " ex. suffix= "DrawIt"
388
+ fun! SaveUserMaps(mapmode,maplead,mapchx,suffix)
389
+ " call Dfunc("SaveUserMaps(mapmode<".a:mapmode."> maplead<".a:maplead."> mapchx<".a:mapchx."> suffix<".a:suffix.">)")
390
+
391
+ if !exists("s:restoremap_{a:suffix}")
392
+ " initialize restoremap_suffix to null string
393
+ let s:restoremap_{a:suffix}= ""
394
+ endif
395
+
396
+ " set up dounmap: if 1, then save and unmap (a:mapmode leads with a "u")
397
+ " if 0, save only
398
+ if a:mapmode =~ '^u'
399
+ let dounmap= 1
400
+ let mapmode= strpart(a:mapmode,1)
401
+ else
402
+ let dounmap= 0
403
+ let mapmode= a:mapmode
404
+ endif
405
+
406
+ " save single map :...something...
407
+ if strpart(a:mapchx,0,1) == ':'
408
+ let amap= strpart(a:mapchx,1)
409
+ if amap == "|" || amap == "\<c-v>"
410
+ let amap= "\<c-v>".amap
411
+ endif
412
+ let amap = a:maplead.amap
413
+ let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:silent! ".mapmode."unmap ".amap
414
+ if maparg(amap,mapmode) != ""
415
+ let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
416
+ let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:".mapmode."map ".amap." ".maprhs
417
+ endif
418
+ if dounmap
419
+ exe "silent! ".mapmode."unmap ".amap
420
+ endif
421
+
422
+ " save single map <something>
423
+ elseif strpart(a:mapchx,0,1) == '<'
424
+ let amap = a:mapchx
425
+ if amap == "|" || amap == "\<c-v>"
426
+ let amap= "\<c-v>".amap
427
+ endif
428
+ let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".amap
429
+ if maparg(a:mapchx,mapmode) != ""
430
+ let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
431
+ let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".amap." ".maprhs
432
+ endif
433
+ if dounmap
434
+ exe "silent! ".mapmode."unmap ".amap
435
+ endif
436
+
437
+ " save multiple maps
438
+ else
439
+ let i= 1
440
+ while i <= strlen(a:mapchx)
441
+ let amap= a:maplead.strpart(a:mapchx,i-1,1)
442
+ if amap == "|" || amap == "\<c-v>"
443
+ let amap= "\<c-v>".amap
444
+ endif
445
+ let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".amap
446
+ if maparg(amap,mapmode) != ""
447
+ let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
448
+ let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".amap." ".maprhs
449
+ endif
450
+ if dounmap
451
+ exe "silent! ".mapmode."unmap ".amap
452
+ endif
453
+ let i= i + 1
454
+ endwhile
455
+ endif
456
+ " call Dret("SaveUserMaps : restoremap_".a:suffix.": ".s:restoremap_{a:suffix})
457
+ endfun
458
+
459
+ " ---------------------------------------------------------------------
460
+ " RestoreUserMaps: {{{1
461
+ " Used to restore user maps saved by SaveUserMaps()
462
+ fun! RestoreUserMaps(suffix)
463
+ " call Dfunc("RestoreUserMaps(suffix<".a:suffix.">)")
464
+ if exists("s:restoremap_{a:suffix}")
465
+ let s:restoremap_{a:suffix}= substitute(s:restoremap_{a:suffix},'|\s*$','','e')
466
+ if s:restoremap_{a:suffix} != ""
467
+ " call Decho("exe ".s:restoremap_{a:suffix})
468
+ exe "silent! ".s:restoremap_{a:suffix}
469
+ endif
470
+ unlet s:restoremap_{a:suffix}
471
+ endif
472
+ " call Dret("RestoreUserMaps")
473
+ endfun
474
+
475
+ " ---------------------------------------------------------------------
476
+ " Restore: {{{1
477
+ let &cpo= s:keepcpo
478
+ unlet s:keepcpo
479
+
480
+ " ---------------------------------------------------------------------
481
+ " Modelines: {{{1
482
+ " vim: ts=4 fdm=marker