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.
- data/Rakefile +68 -0
- data/VERSION +1 -0
- data/bin/chroot-exec +12 -0
- data/bin/chroot-libs +18 -0
- data/bin/classify +37 -0
- data/bin/discover +137 -0
- data/bin/edit +74 -0
- data/bin/errf +32 -0
- data/bin/git-empty +8 -0
- data/bin/myex +90 -0
- data/bin/number_files +26 -0
- data/bin/same_files +37 -0
- data/bin/search +205 -0
- data/bin/sedit +3 -0
- data/bin/sshscreen +68 -0
- data/bin/term +21 -0
- data/bin/unquarantine_apps +8 -0
- data/bin/untest +17 -0
- data/bin/utils-install-config +10 -0
- data/bin/vacuum_firefox_sqlite +22 -0
- data/bin/xmp +74 -0
- data/lib/utils.rb +8 -0
- data/lib/utils/config.rb +23 -0
- data/lib/utils/config/gdb/asm +179 -0
- data/lib/utils/config/gdb/ruby +528 -0
- data/lib/utils/config/gdbinit +8 -0
- data/lib/utils/config/irbrc +455 -0
- data/lib/utils/config/rdebugrc +2 -0
- data/lib/utils/config/screenrc +143 -0
- data/lib/utils/config/vim/autoload/Align.vim +1029 -0
- data/lib/utils/config/vim/autoload/AlignMaps.vim +330 -0
- data/lib/utils/config/vim/autoload/rails.vim +4744 -0
- data/lib/utils/config/vim/autoload/rubycomplete.vim +801 -0
- data/lib/utils/config/vim/autoload/sqlcomplete.vim +741 -0
- data/lib/utils/config/vim/autoload/vimball.vim +750 -0
- data/lib/utils/config/vim/colors/flori.vim +113 -0
- data/lib/utils/config/vim/compiler/eruby.vim +40 -0
- data/lib/utils/config/vim/compiler/ruby.vim +67 -0
- data/lib/utils/config/vim/compiler/rubyunit.vim +34 -0
- data/lib/utils/config/vim/ftdetect/ragel.vim +2 -0
- data/lib/utils/config/vim/ftdetect/ruby.vim +17 -0
- data/lib/utils/config/vim/ftplugin/eruby.vim +100 -0
- data/lib/utils/config/vim/ftplugin/ruby.vim +260 -0
- data/lib/utils/config/vim/ftplugin/xml.vim +941 -0
- data/lib/utils/config/vim/indent/IndentAnything_html.vim +35 -0
- data/lib/utils/config/vim/indent/eruby.vim +77 -0
- data/lib/utils/config/vim/indent/javascript.vim +116 -0
- data/lib/utils/config/vim/indent/ruby.vim +377 -0
- data/lib/utils/config/vim/plugin/AlignMapsPlugin.vim +242 -0
- data/lib/utils/config/vim/plugin/AlignPlugin.vim +41 -0
- data/lib/utils/config/vim/plugin/Decho.vim +592 -0
- data/lib/utils/config/vim/plugin/IndentAnything.vim +675 -0
- data/lib/utils/config/vim/plugin/bufexplorer.vim +1144 -0
- data/lib/utils/config/vim/plugin/cecutil.vim +482 -0
- data/lib/utils/config/vim/plugin/fugitive.vim +1703 -0
- data/lib/utils/config/vim/plugin/lusty-explorer.vim +1509 -0
- data/lib/utils/config/vim/plugin/rails.vim +340 -0
- data/lib/utils/config/vim/plugin/rubyextra.vim +193 -0
- data/lib/utils/config/vim/plugin/surround.vim +628 -0
- data/lib/utils/config/vim/plugin/taglist.vim +4546 -0
- data/lib/utils/config/vim/plugin/test/IndentAnything/test.js +131 -0
- data/lib/utils/config/vim/plugin/vimballPlugin.vim +40 -0
- data/lib/utils/config/vim/syntax/Decho.vim +101 -0
- data/lib/utils/config/vim/syntax/eruby.vim +73 -0
- data/lib/utils/config/vim/syntax/javascript.vim +246 -0
- data/lib/utils/config/vim/syntax/ragel.vim +165 -0
- data/lib/utils/config/vim/syntax/ruby.vim +367 -0
- data/lib/utils/config/vimrc +461 -0
- data/lib/utils/file.rb +49 -0
- data/lib/utils/find.rb +54 -0
- data/lib/utils/md5.rb +23 -0
- data/lib/utils/patterns.rb +34 -0
- data/lib/utils/version.rb +8 -0
- data/utils.gemspec +33 -0
- 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
|