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,242 @@
|
|
1
|
+
" AlignMapsPlugin: Alignment maps based upon <Align.vim> and <AlignMaps.vim>
|
2
|
+
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
|
3
|
+
" Date: Mar 03, 2009
|
4
|
+
"
|
5
|
+
" NOTE: the code herein needs vim 6.0 or later
|
6
|
+
" needs <Align.vim> v6 or later
|
7
|
+
" needs <cecutil.vim> v5 or later
|
8
|
+
" Copyright: Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
|
9
|
+
" Permission is hereby granted to use and distribute this code,
|
10
|
+
" with or without modifications, provided that this copyright
|
11
|
+
" notice is copied with it. Like anything else that's free,
|
12
|
+
" AlignMaps.vim is provided *as is* and comes with no warranty
|
13
|
+
" of any kind, either expressed or implied. By using this
|
14
|
+
" plugin, you agree that in no event will the copyright
|
15
|
+
" holder be liable for any damages resulting from the use
|
16
|
+
" of this software.
|
17
|
+
"
|
18
|
+
" Usage: {{{1
|
19
|
+
" Use 'a to mark beginning of to-be-aligned region, Alternative: use V
|
20
|
+
" move cursor to end of region, and execute map. (linewise visual mode) to
|
21
|
+
" The maps also set up marks 'y and 'z, and retain mark region, execute same
|
22
|
+
" 'a at the beginning of region. map. Uses 'a, 'y, and 'z.
|
23
|
+
"
|
24
|
+
" The start/end wrappers save and restore marks 'y and 'z.
|
25
|
+
"
|
26
|
+
" Although the comments indicate the maps use a leading backslash,
|
27
|
+
" actually they use <Leader> (:he mapleader), so the user can
|
28
|
+
" specify that the maps start how he or she prefers.
|
29
|
+
"
|
30
|
+
" Note: these maps all use <Align.vim>.
|
31
|
+
"
|
32
|
+
" Romans 1:20 For the invisible things of Him since the creation of the {{{1
|
33
|
+
" world are clearly seen, being perceived through the things that are
|
34
|
+
" made, even His everlasting power and divinity; that they may be
|
35
|
+
" without excuse.
|
36
|
+
|
37
|
+
" ---------------------------------------------------------------------
|
38
|
+
" Load Once: {{{1
|
39
|
+
if &cp || exists("g:loaded_AlignMapsPlugin")
|
40
|
+
finish
|
41
|
+
endif
|
42
|
+
let s:keepcpo = &cpo
|
43
|
+
let g:loaded_AlignMapsPlugin = "v41"
|
44
|
+
set cpo&vim
|
45
|
+
|
46
|
+
" =====================================================================
|
47
|
+
" Maps: {{{1
|
48
|
+
|
49
|
+
" ---------------------------------------------------------------------
|
50
|
+
" WS: wrapper start map (internal) {{{2
|
51
|
+
" Produces a blank line above and below, marks with 'y and 'z
|
52
|
+
if !hasmapto('<Plug>WrapperStart')
|
53
|
+
map <unique> <SID>WS <Plug>AlignMapsWrapperStart
|
54
|
+
endif
|
55
|
+
nmap <silent> <script> <Plug>AlignMapsWrapperStart :set lz<CR>:call AlignMaps#WrapperStart(0)<CR>
|
56
|
+
vmap <silent> <script> <Plug>AlignMapsWrapperStart :<c-u>set lz<CR>:call AlignMaps#WrapperStart(1)<CR>
|
57
|
+
|
58
|
+
" ---------------------------------------------------------------------
|
59
|
+
" WE: wrapper end (internal) {{{2
|
60
|
+
" Removes guard lines, restores marks y and z, and restores search pattern
|
61
|
+
if !hasmapto('<Plug>WrapperEnd')
|
62
|
+
nmap <unique> <SID>WE <Plug>AlignMapsWrapperEnd
|
63
|
+
endif
|
64
|
+
nmap <silent> <script> <Plug>AlignMapsWrapperEnd :call AlignMaps#WrapperEnd()<CR>:set nolz<CR>
|
65
|
+
|
66
|
+
" ---------------------------------------------------------------------
|
67
|
+
" Complex C-code alignment maps: {{{2
|
68
|
+
if !hasmapto('<Plug>AM_a?') |map <unique> <Leader>a? <Plug>AM_a?|endif
|
69
|
+
if !hasmapto('<Plug>AM_a,') |map <unique> <Leader>a, <Plug>AM_a,|endif
|
70
|
+
if !hasmapto('<Plug>AM_a<') |map <unique> <Leader>a< <Plug>AM_a<|endif
|
71
|
+
if !hasmapto('<Plug>AM_a=') |map <unique> <Leader>a= <Plug>AM_a=|endif
|
72
|
+
if !hasmapto('<Plug>AM_a(') |map <unique> <Leader>a( <Plug>AM_a(|endif
|
73
|
+
if !hasmapto('<Plug>AM_abox') |map <unique> <Leader>abox <Plug>AM_abox|endif
|
74
|
+
if !hasmapto('<Plug>AM_acom') |map <unique> <Leader>acom <Plug>AM_acom|endif
|
75
|
+
if !hasmapto('<Plug>AM_adcom')|map <unique> <Leader>adcom <Plug>AM_adcom|endif
|
76
|
+
if !hasmapto('<Plug>AM_aocom')|map <unique> <Leader>aocom <Plug>AM_aocom|endif
|
77
|
+
if !hasmapto('<Plug>AM_ascom')|map <unique> <Leader>ascom <Plug>AM_ascom|endif
|
78
|
+
if !hasmapto('<Plug>AM_adec') |map <unique> <Leader>adec <Plug>AM_adec|endif
|
79
|
+
if !hasmapto('<Plug>AM_adef') |map <unique> <Leader>adef <Plug>AM_adef|endif
|
80
|
+
if !hasmapto('<Plug>AM_afnc') |map <unique> <Leader>afnc <Plug>AM_afnc|endif
|
81
|
+
if !hasmapto('<Plug>AM_afnc') |map <unique> <Leader>afnc <Plug>AM_afnc|endif
|
82
|
+
if !hasmapto('<Plug>AM_aunum')|map <unique> <Leader>aunum <Plug>AM_aenum|endif
|
83
|
+
if !hasmapto('<Plug>AM_aenum')|map <unique> <Leader>aenum <Plug>AM_aunum|endif
|
84
|
+
if exists("g:alignmaps_euronumber") && !exists("g:alignmaps_usanumber")
|
85
|
+
if !hasmapto('<Plug>AM_anum')|map <unique> <Leader>anum <Plug>AM_aenum|endif
|
86
|
+
else
|
87
|
+
if !hasmapto('<Plug>AM_anum')|map <unique> <Leader>anum <Plug>AM_aunum|endif
|
88
|
+
endif
|
89
|
+
|
90
|
+
map <silent> <script> <Plug>AM_a? <SID>WS:AlignCtrl mIp1P1lC ? : : : : <CR>:'a,.Align<CR>:'a,'z-1s/\(\s\+\)? /?\1/e<CR><SID>WE
|
91
|
+
map <silent> <script> <Plug>AM_a, <SID>WS:'y,'zs/\(\S\)\s\+/\1 /ge<CR>'yjma'zk:call AlignMaps#CharJoiner(",")<cr>:silent 'y,'zg/,/call AlignMaps#FixMultiDec()<CR>'z:exe "norm \<Plug>AM_adec"<cr><SID>WE
|
92
|
+
map <silent> <script> <Plug>AM_a< <SID>WS:AlignCtrl mIp1P1=l << >><CR>:'a,.Align<CR><SID>WE
|
93
|
+
map <silent> <script> <Plug>AM_a( <SID>WS:AlignCtrl mIp0P1=l<CR>:'a,.Align [(,]<CR>:sil 'y+1,'z-1s/\(\s\+\),/,\1/ge<CR><SID>WE
|
94
|
+
map <silent> <script> <Plug>AM_a= <SID>WS:AlignCtrl mIp1P1=l<CR>:AlignCtrl g :=<CR>:'a,'zAlign :\==<CR><SID>WE
|
95
|
+
map <silent> <script> <Plug>AM_abox <SID>WS:let g:alignmaps_iws=substitute(getline("'a"),'^\(\s*\).*$','\1','e')<CR>:'a,'z-1s/^\s\+//e<CR>:'a,'z-1s/^.*$/@&@/<CR>:AlignCtrl m=p01P0w @<CR>:'a,.Align<CR>:'a,'z-1s/@/ * /<CR>:'a,'z-1s/@$/*/<CR>'aYP:s/./*/g<CR>0r/'zkYp:s/./*/g<CR>0r A/<Esc>:exe "'a-1,'z-1s/^/".g:alignmaps_iws."/e"<CR><SID>WE
|
96
|
+
map <silent> <script> <Plug>AM_acom <SID>WS:'a,.s/\/[*/]\/\=/@&@/e<CR>:'a,.s/\*\//@&/e<CR>:'y,'zs/^\( *\) @/\1@/e<CR>'zk:call AlignMaps#StdAlign(2)<CR>:'y,'zs/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE
|
97
|
+
map <silent> <script> <Plug>AM_adcom <SID>WS:'a,.v/^\s*\/[/*]/s/\/[*/]\*\=/@&@/e<CR>:'a,.v/^\s*\/[/*]/s/\*\//@&/e<CR>:'y,'zv/^\s*\/[/*]/s/^\( *\) @/\1@/e<CR>'zk:call AlignMaps#StdAlign(3)<cr>:'y,'zv/^\s*\/[/*]/s/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE
|
98
|
+
map <silent> <script> <Plug>AM_aocom <SID>WS:AlignPush<CR>:AlignCtrl g /[*/]<CR>:exe "norm \<Plug>AM_acom"<cr>:AlignPop<CR><SID>WE
|
99
|
+
map <silent> <script> <Plug>AM_ascom <SID>WS:'a,.s/\/[*/]/@&@/e<CR>:'a,.s/\*\//@&/e<CR>:silent! 'a,.g/^\s*@\/[*/]/s/@//ge<CR>:AlignCtrl v ^\s*\/[*/]<CR>:AlignCtrl g \/[*/]<CR>'zk:call AlignMaps#StdAlign(2)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE
|
100
|
+
map <silent> <script> <Plug>AM_adec <SID>WS:'a,'zs/\([^ \t/(]\)\([*&]\)/\1 \2/e<CR>:'y,'zv/^\//s/\([^ \t]\)\s\+/\1 /ge<CR>:'y,'zv/^\s*[*/]/s/\([^/][*&]\)\s\+/\1/ge<CR>:'y,'zv/^\s*[*/]/s/^\(\s*\%(\K\k*\s\+\%([a-zA-Z_*(&]\)\@=\)\+\)\([*(&]*\)\s*\([a-zA-Z0-9_()]\+\)\s*\(\(\[.\{-}]\)*\)\s*\(=\)\=\s*\(.\{-}\)\=\s*;/\1@\2#@\3\4@\6@\7;@/e<CR>:'y,'zv/^\s*[*/]/s/\*\/\s*$/@*\//e<CR>:'y,'zv/^\s*[*/]/s/^\s\+\*/@@@@@* /e<CR>:'y,'zv/^\s*[*/]/s/^@@@@@\*\(.*[^*/]\)$/&@*/e<CR>'yjma'zk:AlignCtrl v ^\s*[*/#]<CR>:call AlignMaps#StdAlign(1)<cr>:'y,'zv/^\s*[*/]/s/@ //ge<CR>:'y,'zv/^\s*[*/]/s/\(\s*\);/;\1/e<CR>:'y,'zv/^#/s/# //e<CR>:'y,'zv/^\s\+[*/#]/s/\([^/*]\)\(\*\+\)\( \+\)/\1\3\2/e<CR>:'y,'zv/^\s\+[*/#]/s/\((\+\)\( \+\)\*/\2\1*/e<CR>:'y,'zv/^\s\+[*/#]/s/^\(\s\+\) \*/\1*/e<CR>:'y,'zv/^\s\+[*/#]/s/[ \t@]*$//e<CR>:'y,'zs/^[*]/ */e<CR><SID>WE
|
101
|
+
map <silent> <script> <Plug>AM_adef <SID>WS:AlignPush<CR>:AlignCtrl v ^\s*\(\/\*\<bar>\/\/\)<CR>:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/^\(\s*\)#\(\s\)*define\s*\(\I[a-zA-Z_0-9(),]*\)\s*\(.\{-}\)\($\<Bar>\/\*\)/#\1\2define @\3@\4@\5/e<CR>:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/\($\<Bar>\*\/\)/@&/e<CR>'zk:call AlignMaps#StdAlign(1)<cr>'yjma'zk:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/ @//g<CR><SID>WE
|
102
|
+
map <silent> <script> <Plug>AM_afnc :<c-u>set lz<CR>:silent call AlignMaps#Afnc()<CR>:set nolz<CR>
|
103
|
+
map <silent> <script> <Plug>AM_aunum <SID>WS:'a,'zs/\%([0-9.]\)\s\+\zs\([-+.]\=\d\)/@\1/ge<CR>:'a,'zs/\(\(^\|\s\)\d\+\)\(\s\+\)@/\1@\3@/ge<CR>:'a,'zs/\.@/\.0@/ge<CR>:AlignCtrl wmp0P0r<CR>:'a,'zAlign [.@]<CR>:'a,'zs/@/ /ge<CR>:'a,'zs/\(\.\)\(\s\+\)\([0-9.,eE+]\+\)/\1\3\2/ge<CR>:'a,'zs/\([eE]\)\(\s\+\)\([0-9+\-+]\+\)/\1\3\2/ge<CR><SID>WE
|
104
|
+
map <silent> <script> <Plug>AM_aenum <SID>WS:'a,'zs/\%([0-9.]\)\s\+\([-+]\=\d\)/\1@\2/ge<CR>:'a,'zs/\.@/\.0@/ge<CR>:AlignCtrl wmp0P0r<CR>:'a,'zAlign [,@]<CR>:'a,'zs/@/ /ge<CR>:'a,'zs/\(,\)\(\s\+\)\([-0-9.,eE+]\+\)/\1\3\2/ge<CR>:'a,'zs/\([eE]\)\(\s\+\)\([0-9+\-+]\+\)/\1\3\2/ge<CR><SID>WE
|
105
|
+
|
106
|
+
" ---------------------------------------------------------------------
|
107
|
+
" html table alignment {{{2
|
108
|
+
if !hasmapto('<Plug>AM_Htd')|map <unique> <Leader>Htd <Plug>AM_Htd|endif
|
109
|
+
map <silent> <script> <Plug>AM_Htd <SID>WS:'y,'zs%<[tT][rR]><[tT][dD][^>]\{-}>\<Bar></[tT][dD]><[tT][dD][^>]\{-}>\<Bar></[tT][dD]></[tT][rR]>%@&@%g<CR>'yjma'zk:AlignCtrl m=Ilp1P0 @<CR>:'a,.Align<CR>:'y,'zs/ @/@/<CR>:'y,'zs/@ <[tT][rR]>/<[tT][rR]>/ge<CR>:'y,'zs/@//ge<CR><SID>WE
|
110
|
+
|
111
|
+
" ---------------------------------------------------------------------
|
112
|
+
" character-based right-justified alignment maps {{{2
|
113
|
+
if !hasmapto('<Plug>AM_T|')|map <unique> <Leader>T| <Plug>AM_T||endif
|
114
|
+
if !hasmapto('<Plug>AM_T#') |map <unique> <Leader>T# <Plug>AM_T#|endif
|
115
|
+
if !hasmapto('<Plug>AM_T,') |map <unique> <Leader>T, <Plug>AM_T,o|endif
|
116
|
+
if !hasmapto('<Plug>AM_Ts,') |map <unique> <Leader>Ts, <Plug>AM_Ts,|endif
|
117
|
+
if !hasmapto('<Plug>AM_T:') |map <unique> <Leader>T: <Plug>AM_T:|endif
|
118
|
+
if !hasmapto('<Plug>AM_T;') |map <unique> <Leader>T; <Plug>AM_T;|endif
|
119
|
+
if !hasmapto('<Plug>AM_T<') |map <unique> <Leader>T< <Plug>AM_T<|endif
|
120
|
+
if !hasmapto('<Plug>AM_T=') |map <unique> <Leader>T= <Plug>AM_T=|endif
|
121
|
+
if !hasmapto('<Plug>AM_T?') |map <unique> <Leader>T? <Plug>AM_T?|endif
|
122
|
+
if !hasmapto('<Plug>AM_T@') |map <unique> <Leader>T@ <Plug>AM_T@|endif
|
123
|
+
if !hasmapto('<Plug>AM_Tab') |map <unique> <Leader>Tab <Plug>AM_Tab|endif
|
124
|
+
if !hasmapto('<Plug>AM_Tsp') |map <unique> <Leader>Tsp <Plug>AM_Tsp|endif
|
125
|
+
if !hasmapto('<Plug>AM_T~') |map <unique> <Leader>T~ <Plug>AM_T~|endif
|
126
|
+
|
127
|
+
map <silent> <script> <Plug>AM_T| <SID>WS:AlignCtrl mIp0P0=r <Bar><CR>:'a,.Align<CR><SID>WE
|
128
|
+
map <silent> <script> <Plug>AM_T# <SID>WS:AlignCtrl mIp0P0=r #<CR>:'a,.Align<CR><SID>WE
|
129
|
+
map <silent> <script> <Plug>AM_T, <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<CR><SID>WE
|
130
|
+
map <silent> <script> <Plug>AM_Ts, <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<CR>:'a,.s/\(\s*\),/,\1/ge<CR><SID>WE
|
131
|
+
map <silent> <script> <Plug>AM_T: <SID>WS:AlignCtrl mIp1P1=r :<CR>:'a,.Align<CR><SID>WE
|
132
|
+
map <silent> <script> <Plug>AM_T; <SID>WS:AlignCtrl mIp0P0=r ;<CR>:'a,.Align<CR><SID>WE
|
133
|
+
map <silent> <script> <Plug>AM_T< <SID>WS:AlignCtrl mIp0P0=r <<CR>:'a,.Align<CR><SID>WE
|
134
|
+
map <silent> <script> <Plug>AM_T= <SID>WS:'a,'z-1s/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'z-1s@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'z-1s/; */;@/e<CR>:'a,'z-1s/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'z-1s/!=/\x="!\<Char-0x0f>"/ge<CR>:AlignCtrl mIp1P1=r = @<CR>:AlignCtrl g =<CR>:'a,'z-1Align<CR>:'a,'z-1s/; *@/;/e<CR>:'a,'z-1s/; *$/;/e<CR>:'a,'z-1s@\([*/+\-%<Bar>&\~^]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1s/\( \+\);/;\1/ge<CR>:'a,'z-1s/\xff/=/ge<CR><SID>WE:exe "norm <Plug>acom"
|
135
|
+
map <silent> <script> <Plug>AM_T? <SID>WS:AlignCtrl mIp0P0=r ?<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
|
136
|
+
map <silent> <script> <Plug>AM_T@ <SID>WS:AlignCtrl mIp0P0=r @<CR>:'a,.Align<CR><SID>WE
|
137
|
+
map <silent> <script> <Plug>AM_Tab <SID>WS:'a,.s/^\(\t*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\t','@','g'),'\')/<CR>:AlignCtrl mI=r @<CR>:'a,.Align<CR>:'y+1,'z-1s/@/ /g<CR><SID>WE
|
138
|
+
map <silent> <script> <Plug>AM_Tsp <SID>WS:'a,.s/^\(\s*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\s\+','@','g'),'\')/<CR>:AlignCtrl mI=r @<CR>:'a,.Align<CR>:'y+1,'z-1s/@/ /g<CR><SID>WE
|
139
|
+
map <silent> <script> <Plug>AM_T~ <SID>WS:AlignCtrl mIp0P0=r ~<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
|
140
|
+
|
141
|
+
" ---------------------------------------------------------------------
|
142
|
+
" character-based left-justified alignment maps {{{2
|
143
|
+
if !hasmapto('<Plug>AM_t|') |map <unique> <Leader>t| <Plug>AM_t||endif
|
144
|
+
if !hasmapto('<Plug>AM_t#') |map <unique> <Leader>t# <Plug>AM_t#|endif
|
145
|
+
if !hasmapto('<Plug>AM_t,') |map <unique> <Leader>t, <Plug>AM_t,|endif
|
146
|
+
if !hasmapto('<Plug>AM_t:') |map <unique> <Leader>t: <Plug>AM_t:|endif
|
147
|
+
if !hasmapto('<Plug>AM_t;') |map <unique> <Leader>t; <Plug>AM_t;|endif
|
148
|
+
if !hasmapto('<Plug>AM_t<') |map <unique> <Leader>t< <Plug>AM_t<|endif
|
149
|
+
if !hasmapto('<Plug>AM_t=') |map <unique> <Leader>t= <Plug>AM_t=|endif
|
150
|
+
if !hasmapto('<Plug>AM_ts,') |map <unique> <Leader>ts, <Plug>AM_ts,|endif
|
151
|
+
if !hasmapto('<Plug>AM_ts:') |map <unique> <Leader>ts: <Plug>AM_ts:|endif
|
152
|
+
if !hasmapto('<Plug>AM_ts;') |map <unique> <Leader>ts; <Plug>AM_ts;|endif
|
153
|
+
if !hasmapto('<Plug>AM_ts<') |map <unique> <Leader>ts< <Plug>AM_ts<|endif
|
154
|
+
if !hasmapto('<Plug>AM_ts=') |map <unique> <Leader>ts= <Plug>AM_ts=|endif
|
155
|
+
if !hasmapto('<Plug>AM_w=') |map <unique> <Leader>w= <Plug>AM_w=|endif
|
156
|
+
if !hasmapto('<Plug>AM_t?') |map <unique> <Leader>t? <Plug>AM_t?|endif
|
157
|
+
if !hasmapto('<Plug>AM_t~') |map <unique> <Leader>t~ <Plug>AM_t~|endif
|
158
|
+
if !hasmapto('<Plug>AM_t@') |map <unique> <Leader>t@ <Plug>AM_t@|endif
|
159
|
+
if !hasmapto('<Plug>AM_m=') |map <unique> <Leader>m= <Plug>AM_m=|endif
|
160
|
+
if !hasmapto('<Plug>AM_tab') |map <unique> <Leader>tab <Plug>AM_tab|endif
|
161
|
+
if !hasmapto('<Plug>AM_tml') |map <unique> <Leader>tml <Plug>AM_tml|endif
|
162
|
+
if !hasmapto('<Plug>AM_tsp') |map <unique> <Leader>tsp <Plug>AM_tsp|endif
|
163
|
+
if !hasmapto('<Plug>AM_tsq') |map <unique> <Leader>tsq <Plug>AM_tsq|endif
|
164
|
+
if !hasmapto('<Plug>AM_tt') |map <unique> <Leader>tt <Plug>AM_tt|endif
|
165
|
+
|
166
|
+
map <silent> <script> <Plug>AM_t| <SID>WS:AlignCtrl mIp0P0=l <Bar><CR>:'a,.Align<CR><SID>WE
|
167
|
+
map <silent> <script> <Plug>AM_t# <SID>WS:AlignCtrl mIp0P0=l #<CR>:'a,.Align<CR><SID>WE
|
168
|
+
map <silent> <script> <Plug>AM_t, <SID>WS:AlignCtrl mIp0P1=l ,<CR>:'a,.Align<CR><SID>WE
|
169
|
+
map <silent> <script> <Plug>AM_t: <SID>WS:AlignCtrl mIp1P1=l :<CR>:'a,.Align<CR><SID>WE
|
170
|
+
map <silent> <script> <Plug>AM_t; <SID>WS:AlignCtrl mIp0P1=l ;<CR>:'a,.Align<CR>:sil 'y,'zs/\( *\);/;\1/ge<CR><SID>WE
|
171
|
+
map <silent> <script> <Plug>AM_t< <SID>WS:AlignCtrl mIp0P0=l <<CR>:'a,.Align<CR><SID>WE
|
172
|
+
map <silent> <script> <Plug>AM_t= <SID>WS:call AlignMaps#Equals()<CR><SID>WE
|
173
|
+
map <silent> <script> <Plug>AM_ts, <SID>WS:AlignCtrl mIp0P1=l #<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\)#/,\1/ge<CR><SID>WE
|
174
|
+
map <silent> <script> <Plug>AM_ts, <SID>WS:AlignCtrl mIp0P1=l ,<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\),/,\1/ge<CR><SID>WE
|
175
|
+
map <silent> <script> <Plug>AM_ts: <SID>WS:AlignCtrl mIp1P1=l :<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\):/:\1/ge<CR><SID>WE
|
176
|
+
map <silent> <script> <Plug>AM_ts; <SID>WS:AlignCtrl mIp1P1=l ;<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\);/;\1/ge<CR><SID>WE
|
177
|
+
map <silent> <script> <Plug>AM_ts< <SID>WS:AlignCtrl mIp1P1=l <<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\)</<\1/ge<CR><SID>WE
|
178
|
+
map <silent> <script> <Plug>AM_ts= <SID>WS:AlignCtrl mIp1P1=l =<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\)=/=\1/ge<CR><SID>WE
|
179
|
+
map <silent> <script> <Plug>AM_w= <SID>WS:'a,'zg/=/s/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'zg/=/s@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'zg/=/s/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'zg/=/s/!=/\="!\<Char-0x0f>"/ge<CR>'zk:AlignCtrl mWp1P1=l =<CR>:AlignCtrl g =<CR>:'a,'z-1g/=/Align<CR>:'a,'z-1g/=/s@\([*/+\-%<Bar>&\~^!=]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1g/=/s/\( \+\);/;\1/ge<CR>:'a,'z-1v/^\s*\/[*/]/s/\/[*/]/@&@/e<CR>:'a,'z-1v/^\s*\/[*/]/s/\*\//@&/e<CR>'zk:call AlignMaps#StdAlign(1)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'a,'z-1g/=/s/\xff/=/ge<CR>:'y,'zg/=/s/ @//eg<CR><SID>WE
|
180
|
+
map <silent> <script> <Plug>AM_t? <SID>WS:AlignCtrl mIp0P0=l ?<CR>:'a,.Align<CR>:.,'zs/ \( *\);/;\1/ge<CR><SID>WE
|
181
|
+
map <silent> <script> <Plug>AM_t~ <SID>WS:AlignCtrl mIp0P0=l ~<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
|
182
|
+
map <silent> <script> <Plug>AM_t@ <SID>WS::call AlignMaps#StdAlign(1)<cr>:<SID>WE
|
183
|
+
map <silent> <script> <Plug>AM_m= <SID>WS:'a,'zs/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'zs@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'zs/!=/\="!\<Char-0x0f>"/ge<CR>'zk:AlignCtrl mIp1P1=l =<CR>:AlignCtrl g =<CR>:'a,'z-1Align<CR>:'a,'z-1s@\([*/+\-%<Bar>&\~^!=]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1s/\( \+\);/;\1/ge<CR>:'a,'z-s/%\ze[^=]/ @%@ /e<CR>'zk:call AlignMaps#StdAlign(1)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'a,'z-1s/\xff/=/ge<CR>:'y,'zs/ @//eg<CR><SID>WE
|
184
|
+
map <silent> <script> <Plug>AM_tab <SID>WS:'a,.s/^\(\t*\)\(.*\)$/\=submatch(1).escape(substitute(submatch(2),'\t',"\<Char-0x0f>",'g'),'\')/<CR>:if &ts == 1<bar>exe "AlignCtrl mI=lp0P0 \<Char-0x0f>"<bar>else<bar>exe "AlignCtrl mI=l \<Char-0x0f>"<bar>endif<CR>:'a,.Align<CR>:exe "'y+1,'z-1s/\<Char-0x0f>/".((&ts == 1)? '\t' : ' ')."/g"<CR><SID>WE
|
185
|
+
map <silent> <script> <Plug>AM_tml <SID>WS:AlignCtrl mWp1P0=l \\\@<!\\\s*$<CR>:'a,.Align<CR><SID>WE
|
186
|
+
map <silent> <script> <Plug>AM_tsp <SID>WS:'a,.s/^\(\s*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\s\+','@','g'),'\')/<CR>:AlignCtrl mI=lp0P0 @<CR>:'a,.Align<CR>:'y+1,'z-1s/@/ /g<CR><SID>WE
|
187
|
+
map <silent> <script> <Plug>AM_tsq <SID>WS:'a,.AlignReplaceQuotedSpaces<CR>:'a,.s/^\(\s*\)\(.*\)/\=submatch(1).substitute(submatch(2),'\s\+','@','g')/<CR>:AlignCtrl mIp0P0=l @<CR>:'a,.Align<CR>:'y+1,'z-1s/[%@]/ /g<CR><SID>WE
|
188
|
+
map <silent> <script> <Plug>AM_tt <SID>WS:AlignCtrl mIp1P1=l \\\@<!& \\\\<CR>:'a,.Align<CR><SID>WE
|
189
|
+
|
190
|
+
" =====================================================================
|
191
|
+
" Menu Support: {{{1
|
192
|
+
" ma ..move.. use menu
|
193
|
+
" v V or ctrl-v ..move.. use menu
|
194
|
+
if has("menu") && has("gui_running") && &go =~ 'm' && !exists("s:firstmenu")
|
195
|
+
let s:firstmenu= 1
|
196
|
+
if !exists("g:DrChipTopLvlMenu")
|
197
|
+
let g:DrChipTopLvlMenu= "DrChip."
|
198
|
+
endif
|
199
|
+
if g:DrChipTopLvlMenu != ""
|
200
|
+
let s:mapleader = exists("g:mapleader")? g:mapleader : '\'
|
201
|
+
let s:emapleader= escape(s:mapleader,'\ ')
|
202
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.<<\ and\ >><tab>'.s:emapleader.'a< '.s:mapleader.'a<'
|
203
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Assignment\ =<tab>'.s:emapleader.'t= '.s:mapleader.'t='
|
204
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Assignment\ :=<tab>'.s:emapleader.'a= '.s:mapleader.'a='
|
205
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Backslashes<tab>'.s:emapleader.'tml '.s:mapleader.'tml'
|
206
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Breakup\ Comma\ Declarations<tab>'.s:emapleader.'a, '.s:mapleader.'a,'
|
207
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.C\ Comment\ Box<tab>'.s:emapleader.'abox '.s:mapleader.'abox'
|
208
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Commas<tab>'.s:emapleader.'t, '.s:mapleader.'t,'
|
209
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Commas<tab>'.s:emapleader.'ts, '.s:mapleader.'ts,'
|
210
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Commas\ With\ Strings<tab>'.s:emapleader.'tsq '.s:mapleader.'tsq'
|
211
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Comments<tab>'.s:emapleader.'acom '.s:mapleader.'acom'
|
212
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Comments\ Only<tab>'.s:emapleader.'aocom '.s:mapleader.'aocom'
|
213
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Declaration\ Comments<tab>'.s:emapleader.'adcom '.s:mapleader.'adcom'
|
214
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Declarations<tab>'.s:emapleader.'adec '.s:mapleader.'adec'
|
215
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Definitions<tab>'.s:emapleader.'adef '.s:mapleader.'adef'
|
216
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Function\ Header<tab>'.s:emapleader.'afnc '.s:mapleader.'afnc'
|
217
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Html\ Tables<tab>'.s:emapleader.'Htd '.s:mapleader.'Htd'
|
218
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.(\.\.\.)?\.\.\.\ :\ \.\.\.<tab>'.s:emapleader.'a? '.s:mapleader.'a?'
|
219
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Numbers<tab>'.s:emapleader.'anum '.s:mapleader.'anum'
|
220
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Numbers\ (American-Style)<tab>'.s:emapleader.'aunum <Leader>aunum '.s:mapleader.'aunum <Leader>aunum'
|
221
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Numbers\ (Euro-Style)<tab>'.s:emapleader.'aenum '.s:mapleader.'aenum'
|
222
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Spaces\ (Left\ Justified)<tab>'.s:emapleader.'tsp '.s:mapleader.'tsp'
|
223
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Spaces\ (Right\ Justified)<tab>'.s:emapleader.'Tsp '.s:mapleader.'Tsp'
|
224
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Statements\ With\ Percent\ Style\ Comments<tab>'.s:emapleader.'m= '.s:mapleader.'m='
|
225
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ <<tab>'.s:emapleader.'t< '.s:mapleader.'t<'
|
226
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ \|<tab>'.s:emapleader.'t\| '.s:mapleader.'t|'
|
227
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ @<tab>'.s:emapleader.'t@ '.s:mapleader.'t@'
|
228
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ #<tab>'.s:emapleader.'t# '.s:mapleader.'t#'
|
229
|
+
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Tabs<tab>'.s:emapleader.'tab '.s:mapleader.'tab'
|
230
|
+
unlet s:mapleader
|
231
|
+
unlet s:emapleader
|
232
|
+
endif
|
233
|
+
endif
|
234
|
+
|
235
|
+
" =====================================================================
|
236
|
+
" Restore: {{{1
|
237
|
+
let &cpo= s:keepcpo
|
238
|
+
unlet s:keepcpo
|
239
|
+
|
240
|
+
" ==============================================================================
|
241
|
+
" Modelines: {{{1
|
242
|
+
" vim: ts=4 nowrap fdm=marker
|
@@ -0,0 +1,41 @@
|
|
1
|
+
" AlignPlugin: tool to align multiple fields based on one or more separators
|
2
|
+
" Author: Charles E. Campbell, Jr.
|
3
|
+
" Date: Nov 02, 2008
|
4
|
+
" GetLatestVimScripts: 294 1 :AutoInstall: Align.vim
|
5
|
+
" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
|
6
|
+
" Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
|
7
|
+
" Permission is hereby granted to use and distribute this code,
|
8
|
+
" with or without modifications, provided that this copyright
|
9
|
+
" notice is copied with it. Like anything else that's free,
|
10
|
+
" Align.vim is provided *as is* and comes with no warranty
|
11
|
+
" of any kind, either expressed or implied. By using this
|
12
|
+
" plugin, you agree that in no event will the copyright
|
13
|
+
" holder be liable for any damages resulting from the use
|
14
|
+
" of this software.
|
15
|
+
"
|
16
|
+
" Romans 1:16,17a : For I am not ashamed of the gospel of Christ, for it is {{{1
|
17
|
+
" the power of God for salvation for everyone who believes; for the Jew first,
|
18
|
+
" and also for the Greek. For in it is revealed God's righteousness from
|
19
|
+
" faith to faith.
|
20
|
+
" ---------------------------------------------------------------------
|
21
|
+
" Load Once: {{{1
|
22
|
+
if &cp || exists("g:loaded_AlignPlugin")
|
23
|
+
finish
|
24
|
+
endif
|
25
|
+
let g:loaded_AlignPlugin = "v35"
|
26
|
+
let s:keepcpo = &cpo
|
27
|
+
set cpo&vim
|
28
|
+
|
29
|
+
" ---------------------------------------------------------------------
|
30
|
+
" Public Interface: {{{1
|
31
|
+
com! -bang -range -nargs=* Align <line1>,<line2>call Align#Align(<bang>0,<q-args>)
|
32
|
+
com! -range -nargs=0 AlignReplaceQuotedSpaces <line1>,<line2>call Align#AlignReplaceQuotedSpaces()
|
33
|
+
com! -nargs=* AlignCtrl call Align#AlignCtrl(<q-args>)
|
34
|
+
com! -nargs=0 AlignPush call Align#AlignPush()
|
35
|
+
com! -nargs=0 AlignPop call Align#AlignPop()
|
36
|
+
|
37
|
+
" ---------------------------------------------------------------------
|
38
|
+
" Restore: {{{1
|
39
|
+
let &cpo= s:keepcpo
|
40
|
+
unlet s:keepcpo
|
41
|
+
" vim: ts=4 fdm=marker
|
@@ -0,0 +1,592 @@
|
|
1
|
+
" Decho.vim: Debugging support for VimL
|
2
|
+
" Maintainer: Charles E. Campbell, Jr. PhD <cec@NgrOyphSon.gPsfAc.nMasa.gov>
|
3
|
+
" Date: Oct 23, 2008
|
4
|
+
" Version: 20
|
5
|
+
"
|
6
|
+
" Usage: {{{1
|
7
|
+
" Decho "a string"
|
8
|
+
" call Decho("another string")
|
9
|
+
" let g:decho_bufname = "ANewDBGBufName"
|
10
|
+
" let g:decho_bufenter= 1 " tells Decho to ignore BufEnter, WinEnter,
|
11
|
+
" " WinLeave events while Decho is working
|
12
|
+
" call Decho("one","thing","after","another")
|
13
|
+
" DechoOn : removes any first-column '"' from lines containing Decho
|
14
|
+
" DechoOff : inserts a '"' into the first-column in lines containing Decho
|
15
|
+
" DechoMsgOn : use echomsg instead of DBG buffer
|
16
|
+
" DechoMsgOff : turn debugging off
|
17
|
+
" DechoRemOn : turn remote Decho messaging on
|
18
|
+
" DechoRemOff : turn remote Decho messaging off
|
19
|
+
" DechoVarOn [varname] : use variable to write debugging messages to
|
20
|
+
" DechoVarOff : turn debugging off
|
21
|
+
" DechoTabOn : turn debugging on (uses a separate tab)
|
22
|
+
" DechoTabOff : turn debugging off
|
23
|
+
"
|
24
|
+
" GetLatestVimScripts: 120 1 :AutoInstall: Decho.vim
|
25
|
+
" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
|
26
|
+
|
27
|
+
" ---------------------------------------------------------------------
|
28
|
+
" Load Once: {{{1
|
29
|
+
if exists("g:loaded_Decho") || &cp
|
30
|
+
finish
|
31
|
+
endif
|
32
|
+
let g:loaded_Decho = "v20"
|
33
|
+
let s:keepcpo = &cpo
|
34
|
+
set cpo&vim
|
35
|
+
|
36
|
+
" ---------------------------------------------------------------------
|
37
|
+
" Default Values For Variables: {{{1
|
38
|
+
if !exists("g:decho_bufname")
|
39
|
+
let g:decho_bufname= "DBG"
|
40
|
+
endif
|
41
|
+
if !exists("s:decho_depth")
|
42
|
+
let s:decho_depth = 0
|
43
|
+
endif
|
44
|
+
if !exists("g:decho_winheight")
|
45
|
+
let g:decho_winheight= 5
|
46
|
+
endif
|
47
|
+
if !exists("g:decho_bufenter")
|
48
|
+
let g:decho_bufenter= 0
|
49
|
+
endif
|
50
|
+
if !exists("g:dechomode") || !exists("s:DECHOWIN")
|
51
|
+
let s:DECHOWIN = 1
|
52
|
+
let s:DECHOMSG = 2
|
53
|
+
let s:DECHOVAR = 3
|
54
|
+
let s:DECHOREM = 4
|
55
|
+
let s:DECHOTAB = 5
|
56
|
+
let g:dechomode= s:DECHOWIN
|
57
|
+
endif
|
58
|
+
if !exists("g:dechovarname")
|
59
|
+
let g:dechovarname = "g:dechovar"
|
60
|
+
endif
|
61
|
+
|
62
|
+
" ---------------------------------------------------------------------
|
63
|
+
" User Interface: {{{1
|
64
|
+
com! -nargs=+ -complete=expression Decho call Decho(<args>)
|
65
|
+
com! -nargs=+ -complete=expression Dredir call Dredir(<args>)
|
66
|
+
com! -nargs=0 -range=% DechoOn call DechoOn(<line1>,<line2>)
|
67
|
+
com! -nargs=0 -range=% DechoOff call DechoOff(<line1>,<line2>)
|
68
|
+
com! -nargs=0 Dhide call s:Dhide(1)
|
69
|
+
com! -nargs=0 Dshow call s:Dhide(0)
|
70
|
+
com! -nargs=0 DechoMsgOn call s:DechoMsg(1,expand("<sfile>"))
|
71
|
+
com! -nargs=0 DechoMsgOff call s:DechoMsg(0)
|
72
|
+
if has("clientserver") && executable("gvim")
|
73
|
+
com! -nargs=0 DechoRemOn call s:DechoRemote(1,expand("<sfile>"))
|
74
|
+
com! -nargs=0 DechoRemOff call s:DechoRemote(0)
|
75
|
+
endif
|
76
|
+
com! -nargs=? DechoSep call DechoSep(<args>)
|
77
|
+
com! -nargs=? Dsep call DechoSep(<args>)
|
78
|
+
com! -nargs=? DechoVarOn call s:DechoVarOn(expand("<sfile>"),<args>)
|
79
|
+
com! -nargs=0 DechoVarOff call s:DechoVarOff()
|
80
|
+
if v:version >= 700
|
81
|
+
com! -nargs=? DechoTabOn set lz|call s:DechoTab(1,expand("<sfile>"))|set nolz
|
82
|
+
com! -nargs=? DechoTabOff set lz|call s:DechoTab(0)|set nolz
|
83
|
+
endif
|
84
|
+
com! -nargs=0 DechoPause call DechoPause()
|
85
|
+
au Filetype Decho nmap <silent> <buffer> <F1> :setlocal noro ma<cr>
|
86
|
+
|
87
|
+
" ---------------------------------------------------------------------
|
88
|
+
" Decho: the primary debugging function: splits the screen as necessary and {{{1
|
89
|
+
" writes messages to a small window (g:decho_winheight lines)
|
90
|
+
" on the bottom of the screen
|
91
|
+
fun! Decho(...)
|
92
|
+
|
93
|
+
" make sure that SaveWinPosn() and RestoreWinPosn() are available
|
94
|
+
if !exists("g:loaded_cecutil")
|
95
|
+
runtime plugin/cecutil.vim
|
96
|
+
if !exists("g:loaded_cecutil") && exists("g:loaded_AsNeeded")
|
97
|
+
AN SWP
|
98
|
+
endif
|
99
|
+
if !exists("g:loaded_cecutil")
|
100
|
+
echoerr "***Decho*** need to load <cecutil.vim>"
|
101
|
+
return
|
102
|
+
endif
|
103
|
+
endif
|
104
|
+
|
105
|
+
" open DBG window (if dechomode is dechowin)
|
106
|
+
if g:dechomode == s:DECHOWIN
|
107
|
+
let swp = SaveWinPosn(0)
|
108
|
+
let curbuf= bufnr("%")
|
109
|
+
if g:decho_bufenter
|
110
|
+
let eikeep= &ei
|
111
|
+
let eakeep= &ea
|
112
|
+
set ei=BufEnter,WinEnter,WinLeave,ShellCmdPost,FocusGained noea
|
113
|
+
endif
|
114
|
+
|
115
|
+
" As needed, create/switch-to the DBG buffer
|
116
|
+
if !bufexists(g:decho_bufname) && bufnr("*/".g:decho_bufname."$") == -1
|
117
|
+
" if requested DBG-buffer doesn't exist, create a new one
|
118
|
+
" at the bottom of the screen.
|
119
|
+
exe "keepjumps silent! bot ".g:decho_winheight."new ".fnameescape(g:decho_bufname)
|
120
|
+
setlocal noswf
|
121
|
+
keepjumps silent! %d
|
122
|
+
|
123
|
+
elseif bufwinnr(g:decho_bufname) > 0
|
124
|
+
" if requested DBG-buffer exists in a window,
|
125
|
+
" go to that window (by window number)
|
126
|
+
exe "keepjumps ".bufwinnr(g:decho_bufname)."wincmd W"
|
127
|
+
exe "res ".g:decho_winheight
|
128
|
+
|
129
|
+
else
|
130
|
+
" user must have closed the DBG-buffer window.
|
131
|
+
" create a new one at the bottom of the screen.
|
132
|
+
exe "keepjumps silent bot ".g:decho_winheight."new"
|
133
|
+
setlocal noswf
|
134
|
+
exe "keepjumps b ".bufnr(g:decho_bufname)
|
135
|
+
endif
|
136
|
+
|
137
|
+
set ft=Decho
|
138
|
+
setlocal noswapfile noro nobl fo=n2croql
|
139
|
+
|
140
|
+
" make sure DBG window is on the bottom
|
141
|
+
wincmd J
|
142
|
+
endif
|
143
|
+
|
144
|
+
" Build Message
|
145
|
+
let i = 1
|
146
|
+
let msg= ""
|
147
|
+
while i <= a:0
|
148
|
+
try
|
149
|
+
exe "let msg=msg.a:".i
|
150
|
+
catch /^Vim\%((\a\+)\)\=:E730/
|
151
|
+
" looks like a:i is a list
|
152
|
+
exe "let msg=msg.string(a:".i.")"
|
153
|
+
endtry
|
154
|
+
if i < a:0
|
155
|
+
let msg=msg." "
|
156
|
+
endif
|
157
|
+
let i=i+1
|
158
|
+
endwhile
|
159
|
+
|
160
|
+
" Initialize message
|
161
|
+
let smsg = ""
|
162
|
+
let idepth = 0
|
163
|
+
while idepth < s:decho_depth
|
164
|
+
let smsg = "|".smsg
|
165
|
+
let idepth = idepth + 1
|
166
|
+
endwhile
|
167
|
+
|
168
|
+
" Handle special characters (\t \r \n)
|
169
|
+
" and append msg to smsg
|
170
|
+
let i = 1
|
171
|
+
while msg != ""
|
172
|
+
let chr = strpart(msg,0,1)
|
173
|
+
let msg = strpart(msg,1)
|
174
|
+
if char2nr(chr) < 32
|
175
|
+
let smsg = smsg.'^'.nr2char(64+char2nr(chr))
|
176
|
+
else
|
177
|
+
let smsg = smsg.chr
|
178
|
+
endif
|
179
|
+
endwhile
|
180
|
+
|
181
|
+
" echomsg "g:dechomode=".g:dechomode
|
182
|
+
if g:dechomode == s:DECHOMSG
|
183
|
+
" display message with echomsg
|
184
|
+
exe "echomsg '".substitute(smsg,"'","'.\"'\".'","ge")."'"
|
185
|
+
|
186
|
+
elseif g:dechomode == s:DECHOVAR
|
187
|
+
" "display" message by appending to variable named by g:dechovarname
|
188
|
+
let smsg= substitute(smsg,"'","''","ge")
|
189
|
+
if exists(g:dechovarname)
|
190
|
+
exe "let ".g:dechovarname."= ".g:dechovarname.".'\n".smsg."'"
|
191
|
+
else
|
192
|
+
exe "let ".g:dechovarname."= '".smsg."'"
|
193
|
+
endif
|
194
|
+
|
195
|
+
elseif g:dechomode == s:DECHOREM
|
196
|
+
" display message by appending it to remote DECHOREMOTE vim server
|
197
|
+
let smsg= substitute(smsg,"\<esc>","\<c-v>\<esc>","ge")
|
198
|
+
try
|
199
|
+
call remote_send("DECHOREMOTE",':set ma fo-=at'."\<cr>".'Go'.smsg."\<esc>".':set noma nomod'."\<cr>")
|
200
|
+
catch /^Vim\%((\a\+)\)\=:E241/
|
201
|
+
let g:dechomode= s:DECHOWIN
|
202
|
+
endtry
|
203
|
+
|
204
|
+
elseif g:dechomode == s:DECHOTAB
|
205
|
+
" display message by appending it to the debugging tab window
|
206
|
+
let eikeep= &ei
|
207
|
+
set ei=all
|
208
|
+
let g:dechotabcur = tabpagenr()
|
209
|
+
exe "silent! tabn ".g:dechotabnr
|
210
|
+
if expand("%") != "Decho Tab"
|
211
|
+
" looks like a new tab has been inserted -- look for the "Decho Tab" tab
|
212
|
+
let g:dechotabnr= 1
|
213
|
+
silent! tabn 1
|
214
|
+
while expand("%") != "Decho Tab"
|
215
|
+
let g:dechotabnr= g:dechotabnr + 1
|
216
|
+
if g:dechotabnr > tabpagenr("$")
|
217
|
+
" re-enable the "Decho Tab" tab -- looks like it was closed!
|
218
|
+
call s:DechoTab(1)
|
219
|
+
break
|
220
|
+
endif
|
221
|
+
exe "tabn".g:dechotabnr
|
222
|
+
endwhile
|
223
|
+
endif
|
224
|
+
" append message to "Decho Tab" tab
|
225
|
+
setlocal ma noro
|
226
|
+
call setline(line("$")+1,smsg)
|
227
|
+
setlocal noma nomod
|
228
|
+
" restore tab# to original user tab
|
229
|
+
exe "tabn ".g:dechotabcur
|
230
|
+
let &ei= eikeep
|
231
|
+
|
232
|
+
else
|
233
|
+
" Write Message to DBG buffer
|
234
|
+
setlocal ma
|
235
|
+
keepjumps $
|
236
|
+
keepjumps let res= append("$",smsg)
|
237
|
+
setlocal nomod
|
238
|
+
|
239
|
+
" Put cursor at bottom of DBG window, then return to original window
|
240
|
+
exe "res ".g:decho_winheight
|
241
|
+
keepjumps norm! G
|
242
|
+
if exists("g:decho_hide") && g:decho_hide > 0
|
243
|
+
setlocal hidden
|
244
|
+
q
|
245
|
+
endif
|
246
|
+
keepjumps wincmd p
|
247
|
+
if exists("swp")
|
248
|
+
call RestoreWinPosn(swp)
|
249
|
+
endif
|
250
|
+
|
251
|
+
if g:decho_bufenter
|
252
|
+
let &ei= eikeep
|
253
|
+
let &ea= eakeep
|
254
|
+
endif
|
255
|
+
endif
|
256
|
+
endfun
|
257
|
+
|
258
|
+
" ---------------------------------------------------------------------
|
259
|
+
" Dfunc: just like Decho, except that it also bumps up the depth {{{1
|
260
|
+
" It also appends a "{" to facilitate use of %
|
261
|
+
" Usage: call Dfunc("functionname([opt arglist])")
|
262
|
+
fun! Dfunc(...)
|
263
|
+
" Build Message
|
264
|
+
let i = 1
|
265
|
+
let msg= ""
|
266
|
+
while i <= a:0
|
267
|
+
exe "let msg=msg.a:".i
|
268
|
+
if i < a:0
|
269
|
+
let msg=msg." "
|
270
|
+
endif
|
271
|
+
let i=i+1
|
272
|
+
endwhile
|
273
|
+
let msg= msg." {"
|
274
|
+
call Decho(msg)
|
275
|
+
let s:decho_depth= s:decho_depth + 1
|
276
|
+
let s:Dfunclist_{s:decho_depth}= substitute(msg,'[( \t].*$','','')
|
277
|
+
endfun
|
278
|
+
|
279
|
+
" ---------------------------------------------------------------------
|
280
|
+
" Dret: just like Decho, except that it also bumps down the depth {{{1
|
281
|
+
" It also appends a "}" to facilitate use of %
|
282
|
+
" Usage: call Dret("functionname [optional return] [: optional extra info]")
|
283
|
+
fun! Dret(...)
|
284
|
+
" Build Message
|
285
|
+
let i = 1
|
286
|
+
let msg= ""
|
287
|
+
while i <= a:0
|
288
|
+
exe "let msg=msg.a:".i
|
289
|
+
if i < a:0
|
290
|
+
let msg=msg." "
|
291
|
+
endif
|
292
|
+
let i=i+1
|
293
|
+
endwhile
|
294
|
+
let msg= msg." }"
|
295
|
+
call Decho("return ".msg)
|
296
|
+
if s:decho_depth > 0
|
297
|
+
let retfunc= substitute(msg,'\s.*$','','e')
|
298
|
+
if retfunc != s:Dfunclist_{s:decho_depth}
|
299
|
+
echoerr "Dret: appears to be called by<".s:Dfunclist_{s:decho_depth}."> but returning from<".retfunc.">"
|
300
|
+
endif
|
301
|
+
unlet s:Dfunclist_{s:decho_depth}
|
302
|
+
let s:decho_depth= s:decho_depth - 1
|
303
|
+
endif
|
304
|
+
endfun
|
305
|
+
|
306
|
+
" ---------------------------------------------------------------------
|
307
|
+
" DechoOn: {{{1
|
308
|
+
fun! DechoOn(line1,line2)
|
309
|
+
let ickeep= &ic
|
310
|
+
set noic
|
311
|
+
let swp = SaveWinPosn(0)
|
312
|
+
let dbgpat = '\<D\%(echo\|func\|redir\|ret\|echo\%(Msg\|Rem\|Tab\|Var\)O\%(n\|ff\)\)\>'
|
313
|
+
if search(dbgpat,'cnw') == 0
|
314
|
+
echoerr "this file<".expand("%")."> does not contain any Decho/Dfunc/Dret commands or function calls!"
|
315
|
+
else
|
316
|
+
exe "keepjumps ".a:line1.",".a:line2.'g/'.dbgpat.'/s/^"\+//'
|
317
|
+
endif
|
318
|
+
call RestoreWinPosn(swp)
|
319
|
+
let &ic= ickeep
|
320
|
+
endfun
|
321
|
+
|
322
|
+
" ---------------------------------------------------------------------
|
323
|
+
" DechoOff: {{{1
|
324
|
+
fun! DechoOff(line1,line2)
|
325
|
+
let ickeep= &ic
|
326
|
+
set noic
|
327
|
+
let swp=SaveWinPosn(0)
|
328
|
+
let swp= SaveWinPosn(0)
|
329
|
+
exe "keepjumps ".a:line1.",".a:line2.'g/\<D\%(echo\|func\|redir\|ret\|echo\%(Msg\|Rem\|Tab\|Var\)O\%(n\|ff\)\)\>/s/^[^"]/"&/'
|
330
|
+
call RestoreWinPosn(swp)
|
331
|
+
let &ic= ickeep
|
332
|
+
endfun
|
333
|
+
|
334
|
+
" ---------------------------------------------------------------------
|
335
|
+
" DechoDepth: allow user to force depth value {{{1
|
336
|
+
fun! DechoDepth(depth)
|
337
|
+
let s:decho_depth= a:depth
|
338
|
+
endfun
|
339
|
+
|
340
|
+
" ---------------------------------------------------------------------
|
341
|
+
" s:DechoMsg: {{{2
|
342
|
+
fun! s:DechoMsg(onoff,...)
|
343
|
+
" call Dfunc("s:DechoMsg(onoff=".a:onoff.") a:0=".a:0)
|
344
|
+
if a:onoff
|
345
|
+
let g:dechomode = s:DECHOMSG
|
346
|
+
let g:dechofile = (a:0 > 0)? a:1 : ""
|
347
|
+
else
|
348
|
+
let g:dechomode= s:DECHOWIN
|
349
|
+
endif
|
350
|
+
" call Dret("s:DechoMsg")
|
351
|
+
endfun
|
352
|
+
|
353
|
+
" ---------------------------------------------------------------------
|
354
|
+
" Dhide: (un)hide DBG buffer {{{1
|
355
|
+
fun! <SID>Dhide(hide)
|
356
|
+
|
357
|
+
if !bufexists(g:decho_bufname) && bufnr("*/".g:decho_bufname."$") == -1
|
358
|
+
" DBG-buffer doesn't exist, simply set g:decho_hide
|
359
|
+
let g:decho_hide= a:hide
|
360
|
+
|
361
|
+
elseif bufwinnr(g:decho_bufname) > 0
|
362
|
+
" DBG-buffer exists in a window, so its not currently hidden
|
363
|
+
if a:hide == 0
|
364
|
+
" already visible!
|
365
|
+
let g:decho_hide= a:hide
|
366
|
+
else
|
367
|
+
" need to hide window. Goto window and make hidden
|
368
|
+
let curwin = winnr()
|
369
|
+
let dbgwin = bufwinnr(g:decho_bufname)
|
370
|
+
exe bufwinnr(g:decho_bufname)."wincmd W"
|
371
|
+
setlocal hidden
|
372
|
+
q
|
373
|
+
if dbgwin != curwin
|
374
|
+
" return to previous window
|
375
|
+
exe curwin."wincmd W"
|
376
|
+
endif
|
377
|
+
endif
|
378
|
+
|
379
|
+
else
|
380
|
+
" The DBG-buffer window is currently hidden.
|
381
|
+
if a:hide == 0
|
382
|
+
let curwin= winnr()
|
383
|
+
exe "silent bot ".g:decho_winheight."new"
|
384
|
+
setlocal bh=wipe
|
385
|
+
exe "b ".bufnr(g:decho_bufname)
|
386
|
+
exe curwin."wincmd W"
|
387
|
+
else
|
388
|
+
let g:decho_hide= a:hide
|
389
|
+
endif
|
390
|
+
endif
|
391
|
+
let g:decho_hide= a:hide
|
392
|
+
endfun
|
393
|
+
|
394
|
+
" ---------------------------------------------------------------------
|
395
|
+
" Dredir: this function performs a debugging redir by temporarily using {{{1
|
396
|
+
" register a in a redir @a of the given command. Register a's
|
397
|
+
" original contents are restored.
|
398
|
+
" Usage: Dredir(["string","string",...,]"cmd")
|
399
|
+
fun! Dredir(...)
|
400
|
+
if a:0 <= 0
|
401
|
+
return
|
402
|
+
endif
|
403
|
+
let icmd = 1
|
404
|
+
while icmd < a:0
|
405
|
+
call Decho(a:{icmd})
|
406
|
+
let icmd= icmd + 1
|
407
|
+
endwhile
|
408
|
+
let cmd= a:{icmd}
|
409
|
+
|
410
|
+
" save register a, initialize
|
411
|
+
let keep_rega = @a
|
412
|
+
let v:errmsg = ''
|
413
|
+
|
414
|
+
" do the redir of the command to the register a
|
415
|
+
try
|
416
|
+
redir @a
|
417
|
+
exe "keepjumps silent ".cmd
|
418
|
+
catch /.*/
|
419
|
+
let v:errmsg= substitute(v:exception,'^[^:]\+:','','e')
|
420
|
+
finally
|
421
|
+
redir END
|
422
|
+
if v:errmsg == ''
|
423
|
+
let output= @a
|
424
|
+
else
|
425
|
+
let output= v:errmsg
|
426
|
+
endif
|
427
|
+
let @a= keep_rega
|
428
|
+
endtry
|
429
|
+
|
430
|
+
" process output via Decho()
|
431
|
+
while output != ""
|
432
|
+
if output =~ "\n"
|
433
|
+
let redirline = substitute(output,'\n.*$','','e')
|
434
|
+
let output = substitute(output,'^.\{-}\n\(.*$\)$','\1','e')
|
435
|
+
else
|
436
|
+
let redirline = output
|
437
|
+
let output = ""
|
438
|
+
endif
|
439
|
+
call Decho("redir<".cmd.">: ".redirline)
|
440
|
+
endwhile
|
441
|
+
endfun
|
442
|
+
|
443
|
+
" ---------------------------------------------------------------------
|
444
|
+
" DechoSep: puts a separator with counter into debugging output {{{2
|
445
|
+
fun! DechoSep(...)
|
446
|
+
" call Dfunc("DechoSep() a:0=".a:0)
|
447
|
+
if !exists("s:dechosepcnt")
|
448
|
+
let s:dechosepcnt= 1
|
449
|
+
else
|
450
|
+
let s:dechosepcnt= s:dechosepcnt + 1
|
451
|
+
endif
|
452
|
+
let eikeep= &ei
|
453
|
+
set ei=all
|
454
|
+
call Decho("--sep".s:dechosepcnt."--".((a:0 > 0)? " ".a:1 : ""))
|
455
|
+
let &ei= eikeep
|
456
|
+
" call Dret("DechoSep")
|
457
|
+
endfun
|
458
|
+
|
459
|
+
" ---------------------------------------------------------------------
|
460
|
+
" DechoPause: puts a pause-until-<cr> into operation; will place a {{{2
|
461
|
+
" separator into the debug output for reporting
|
462
|
+
fun! DechoPause()
|
463
|
+
" call Dfunc("DechoPause()")
|
464
|
+
redraw!
|
465
|
+
call DechoSep("(pause)")
|
466
|
+
call inputsave()
|
467
|
+
call input("Press <cr> to continue")
|
468
|
+
call inputrestore()
|
469
|
+
" call Dret("DechoPause")
|
470
|
+
endfun
|
471
|
+
|
472
|
+
" ---------------------------------------------------------------------
|
473
|
+
" DechoRemote: supports sending debugging to a remote vim {{{1
|
474
|
+
if has("clientserver") && executable("gvim")
|
475
|
+
fun! s:DechoRemote(mode,...)
|
476
|
+
if a:mode == 0
|
477
|
+
" turn remote debugging off
|
478
|
+
if g:dechomode == s:DECHOREM
|
479
|
+
let g:dechomode= s:DECHOWIN
|
480
|
+
endif
|
481
|
+
|
482
|
+
elseif a:mode == 1
|
483
|
+
" turn remote debugging on
|
484
|
+
if g:dechomode != s:DECHOREM
|
485
|
+
let g:dechomode= s:DECHOREM
|
486
|
+
endif
|
487
|
+
let g:dechofile= (a:0 > 0)? a:1 : ""
|
488
|
+
if serverlist() !~ '\<DECHOREMOTE\>'
|
489
|
+
" " start up remote Decho server
|
490
|
+
" call Decho("start up DECHOREMOTE server")
|
491
|
+
if has("win32") && executable("start")
|
492
|
+
call system("start gvim --servername DECHOREMOTE")
|
493
|
+
else
|
494
|
+
call system("gvim --servername DECHOREMOTE")
|
495
|
+
endif
|
496
|
+
while 1
|
497
|
+
try
|
498
|
+
call remote_send("DECHOREMOTE",':silent set ft=Decho fo-=at'."\<cr>")
|
499
|
+
call remote_send("DECHOREMOTE",':file [Decho\ Remote\ Server]'."\<cr>")
|
500
|
+
call remote_send("DECHOREMOTE",":put ='-----------------------------'\<cr>")
|
501
|
+
call remote_send("DECHOREMOTE",":put ='Remote Decho Debugging Window'\<cr>")
|
502
|
+
call remote_send("DECHOREMOTE",":put ='-----------------------------'\<cr>")
|
503
|
+
call remote_send("DECHOREMOTE","1GddG")
|
504
|
+
call remote_send("DECHOREMOTE",':silent set noswf noma nomod nobl nonu ch=1 fo=n2croql nosi noai'."\<cr>")
|
505
|
+
call remote_send("DECHOREMOTE",':'."\<cr>")
|
506
|
+
call remote_send("DECHOREMOTE",':silent set ft=Decho'."\<cr>")
|
507
|
+
call remote_send("DECHOREMOTE",':silent syn on'."\<cr>")
|
508
|
+
break
|
509
|
+
catch /^Vim\%((\a\+)\)\=:E241/
|
510
|
+
sleep 200m
|
511
|
+
endtry
|
512
|
+
endwhile
|
513
|
+
endif
|
514
|
+
|
515
|
+
else
|
516
|
+
echohl Warning | echomsg "DechoRemote(".a:mode.") not supported" | echohl None
|
517
|
+
endif
|
518
|
+
|
519
|
+
endfun
|
520
|
+
endif
|
521
|
+
|
522
|
+
" ---------------------------------------------------------------------
|
523
|
+
" DechoVarOn: turu debugging-to-a-variable on. The variable is given {{{1
|
524
|
+
" by the user; DechoVarOn [varname]
|
525
|
+
fun! s:DechoVarOn(...)
|
526
|
+
let g:dechomode= s:DECHOVAR
|
527
|
+
|
528
|
+
if a:0 > 0
|
529
|
+
let g:dechofile= a:1
|
530
|
+
if a:2 =~ '^g:'
|
531
|
+
exe "let ".a:2.'= ""'
|
532
|
+
else
|
533
|
+
exe "let g:".a:2.'= ""'
|
534
|
+
endif
|
535
|
+
else
|
536
|
+
let g:dechovarname= "g:dechovar"
|
537
|
+
endif
|
538
|
+
endfun
|
539
|
+
|
540
|
+
" ---------------------------------------------------------------------
|
541
|
+
" DechoVarOff: {{{1
|
542
|
+
fun! s:DechoVarOff()
|
543
|
+
if exists("g:dechovarname")
|
544
|
+
if exists(g:dechovarname)
|
545
|
+
exe "unlet ".g:dechovarname
|
546
|
+
endif
|
547
|
+
endif
|
548
|
+
let g:dechomode= s:DECHOWIN
|
549
|
+
endfun
|
550
|
+
|
551
|
+
" --------------------------------------------------------------------
|
552
|
+
" DechoTab: {{{1
|
553
|
+
if v:version >= 700
|
554
|
+
fun! s:DechoTab(mode,...)
|
555
|
+
" call Dfunc("DechoTab(mode=".a:mode.") a:0=".a:0)
|
556
|
+
|
557
|
+
if a:mode
|
558
|
+
let g:dechomode = s:DECHOTAB
|
559
|
+
let g:dechofile = (a:0 > 0)? a:1 : ""
|
560
|
+
let dechotabcur = tabpagenr()
|
561
|
+
if !exists("g:dechotabnr")
|
562
|
+
let eikeep= &ei
|
563
|
+
set ei=all
|
564
|
+
tabnew
|
565
|
+
file Decho\ Tab
|
566
|
+
setlocal ma
|
567
|
+
put ='---------'
|
568
|
+
put ='Decho Tab '.g:dechofile
|
569
|
+
put ='---------'
|
570
|
+
norm! 1GddG
|
571
|
+
let g:dechotabnr = tabpagenr()
|
572
|
+
let &ei = ""
|
573
|
+
set ft=Decho
|
574
|
+
set ei=all
|
575
|
+
setlocal noma nomod nobl noswf ch=1 fo=n2croql
|
576
|
+
exe "tabn ".dechotabcur
|
577
|
+
let &ei= eikeep
|
578
|
+
endif
|
579
|
+
else
|
580
|
+
let g:dechomode= s:DECHOWIN
|
581
|
+
endif
|
582
|
+
|
583
|
+
" call Dret("DechoTab")
|
584
|
+
endfun
|
585
|
+
endif
|
586
|
+
|
587
|
+
" ---------------------------------------------------------------------
|
588
|
+
" End Plugin: {{{1
|
589
|
+
let &cpo= s:keepcpo
|
590
|
+
unlet s:keepcpo
|
591
|
+
" ---------------------------------------------------------------------
|
592
|
+
" vim: ts=4 fdm=marker
|