Added trac support

This commit is contained in:
Andrea Mistrali 2011-03-25 09:44:20 +00:00
parent ad45c77370
commit 0294ea6dab
13 changed files with 6583 additions and 3 deletions

View File

@ -1,2 +1,3 @@
textformat.vba: call delete('/Users/andre/.vim/autoload/textformat.vim')|call delete('/Users/andre/.vim/doc/textformat.txt')|call delete('/Users/andre/.vim/plugin/textformat.vim') textformat.vba: call delete('/Users/andre/.vim/autoload/textformat.vim')|call delete('/Users/andre/.vim/doc/textformat.txt')|call delete('/Users/andre/.vim/plugin/textformat.vim')
conque_2.0.vba: call delete('/Users/andre/.vim/doc/conque_term.txt')|call delete('/Users/andre/.vim/syntax/conque_term.vim')|call delete('/Users/andre/.vim/autoload/conque_term/conque_screen.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_win32_util.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_sole_shared_memory.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_sole_wrapper.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_sole_communicator.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_sole.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_globals.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_subprocess.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_sole_subprocess.py')|call delete('/Users/andre/.vim/autoload/conque_term.vim')|call delete('/Users/andre/.vim/plugin/conque_term.vim') conque_2.0.vba: call delete('/Users/andre/.vim/doc/conque_term.txt')|call delete('/Users/andre/.vim/syntax/conque_term.vim')|call delete('/Users/andre/.vim/autoload/conque_term/conque_screen.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_win32_util.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_sole_shared_memory.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_sole_wrapper.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_sole_communicator.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_sole.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_globals.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_subprocess.py')|call delete('/Users/andre/.vim/autoload/conque_term/conque_sole_subprocess.py')|call delete('/Users/andre/.vim/autoload/conque_term.vim')|call delete('/Users/andre/.vim/plugin/conque_term.vim')
Align.vba: call delete('/Users/andre/.vim/plugin/AlignPlugin.vim')|call delete('/Users/andre/.vim/plugin/AlignMapsPlugin.vim')|call delete('/Users/andre/.vim/plugin/cecutil.vim')|call delete('/Users/andre/.vim/doc/Align.txt')|call delete('/Users/andre/.vim/autoload/Align.vim')|call delete('/Users/andre/.vim/autoload/AlignMaps.vim')

1029
vim/autoload/Align.vim Normal file

File diff suppressed because it is too large Load Diff

330
vim/autoload/AlignMaps.vim Normal file
View File

@ -0,0 +1,330 @@
" AlignMaps.vim : support functions for AlignMaps
" Author: Charles E. Campbell, Jr.
" Date: Mar 03, 2009
" Version: 41
" ---------------------------------------------------------------------
" Load Once: {{{1
if &cp || exists("g:loaded_AlignMaps")
finish
endif
let g:loaded_AlignMaps= "v41"
let s:keepcpo = &cpo
set cpo&vim
" =====================================================================
" Functions: {{{1
" ---------------------------------------------------------------------
" AlignMaps#WrapperStart: {{{2
fun! AlignMaps#WrapperStart(vis) range
" call Dfunc("AlignMaps#WrapperStart(vis=".a:vis.")")
if a:vis
norm! '<ma'>
endif
if line("'y") == 0 || line("'z") == 0 || !exists("s:alignmaps_wrapcnt") || s:alignmaps_wrapcnt <= 0
" call Decho("wrapper initialization")
let s:alignmaps_wrapcnt = 1
let s:alignmaps_keepgd = &gdefault
let s:alignmaps_keepsearch = @/
let s:alignmaps_keepch = &ch
let s:alignmaps_keepmy = SaveMark("'y")
let s:alignmaps_keepmz = SaveMark("'z")
let s:alignmaps_posn = SaveWinPosn(0)
" set up fencepost blank lines
put =''
norm! mz'a
put! =''
ky
let s:alignmaps_zline = line("'z")
exe "'y,'zs/@/\177/ge"
else
" call Decho("embedded wrapper")
let s:alignmaps_wrapcnt = s:alignmaps_wrapcnt + 1
norm! 'yjma'zk
endif
" change some settings to align-standard values
set nogd
set ch=2
AlignPush
norm! 'zk
" call Dret("AlignMaps#WrapperStart : alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
endfun
" ---------------------------------------------------------------------
" AlignMaps#WrapperEnd: {{{2
fun! AlignMaps#WrapperEnd() range
" call Dfunc("AlignMaps#WrapperEnd() alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
" remove trailing white space introduced by whatever in the modification zone
'y,'zs/ \+$//e
" restore AlignCtrl settings
AlignPop
let s:alignmaps_wrapcnt= s:alignmaps_wrapcnt - 1
if s:alignmaps_wrapcnt <= 0
" initial wrapper ending
exe "'y,'zs/\177/@/ge"
" if the 'z line hasn't moved, then go ahead and restore window position
let zstationary= s:alignmaps_zline == line("'z")
" remove fencepost blank lines.
" restore 'a
norm! 'yjmakdd'zdd
" restore original 'y, 'z, and window positioning
call RestoreMark(s:alignmaps_keepmy)
call RestoreMark(s:alignmaps_keepmz)
if zstationary > 0
call RestoreWinPosn(s:alignmaps_posn)
" call Decho("restored window positioning")
endif
" restoration of options
let &gd= s:alignmaps_keepgd
let &ch= s:alignmaps_keepch
let @/ = s:alignmaps_keepsearch
" remove script variables
unlet s:alignmaps_keepch
unlet s:alignmaps_keepsearch
unlet s:alignmaps_keepmy
unlet s:alignmaps_keepmz
unlet s:alignmaps_keepgd
unlet s:alignmaps_posn
endif
" call Dret("AlignMaps#WrapperEnd : alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
endfun
" ---------------------------------------------------------------------
" AlignMaps#StdAlign: some semi-standard align calls {{{2
fun! AlignMaps#StdAlign(mode) range
" call Dfunc("AlignMaps#StdAlign(mode=".a:mode.")")
if a:mode == 1
" align on @
" call Decho("align on @")
AlignCtrl mIp1P1=l @
'a,.Align
elseif a:mode == 2
" align on @, retaining all initial white space on each line
" call Decho("align on @, retaining all initial white space on each line")
AlignCtrl mWp1P1=l @
'a,.Align
elseif a:mode == 3
" like mode 2, but ignore /* */-style comments
" call Decho("like mode 2, but ignore /* */-style comments")
AlignCtrl v ^\s*/[/*]
AlignCtrl mWp1P1=l @
'a,.Align
else
echoerr "(AlignMaps) AlignMaps#StdAlign doesn't support mode#".a:mode
endif
" call Dret("AlignMaps#StdAlign")
endfun
" ---------------------------------------------------------------------
" AlignMaps#CharJoiner: joins lines which end in the given character (spaces {{{2
" at end are ignored)
fun! AlignMaps#CharJoiner(chr)
" call Dfunc("AlignMaps#CharJoiner(chr=".a:chr.")")
let aline = line("'a")
let rep = line(".") - aline
while rep > 0
norm! 'a
while match(getline(aline),a:chr . "\s*$") != -1 && rep >= 0
" while = at end-of-line, delete it and join with next
norm! 'a$
j!
let rep = rep - 1
endwhile
" update rep(eat) count
let rep = rep - 1
if rep <= 0
" terminate loop if at end-of-block
break
endif
" prepare for next line
norm! jma
let aline = line("'a")
endwhile
" call Dret("AlignMaps#CharJoiner")
endfun
" ---------------------------------------------------------------------
" AlignMaps#Equals: supports \t= and \T= {{{2
fun! AlignMaps#Equals() range
" call Dfunc("AlignMaps#Equals()")
'a,'zs/\s\+\([*/+\-%|&\~^]\==\)/ \1/e
'a,'zs@ \+\([*/+\-%|&\~^]\)=@\1=@ge
'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge
'a,'zs/\([!<>:]\)=/\=submatch(1)."\<Char-0x0f>"/ge
norm g'zk
AlignCtrl mIp1P1=l =
AlignCtrl g =
'a,'z-1Align
'a,'z-1s@\([*/+\-%|&\~^!=]\)\( \+\)=@\2\1=@ge
'a,'z-1s/\( \+\);/;\1/ge
if &ft == "c" || &ft == "cpp"
" call Decho("exception for ".&ft)
'a,'z-1v/^\s*\/[*/]/s/\/[*/]/@&@/e
'a,'z-1v/^\s*\/[*/]/s/\*\//@&/e
if exists("g:mapleader")
exe "norm 'zk"
call AlignMaps#StdAlign(1)
else
exe "norm 'zk"
call AlignMaps#StdAlign(1)
endif
'y,'zs/^\(\s*\) @/\1/e
endif
'a,'z-1s/\%x0f/=/ge
'y,'zs/ @//eg
" call Dret("AlignMaps#Equals")
endfun
" ---------------------------------------------------------------------
" AlignMaps#Afnc: useful for splitting one-line function beginnings {{{2
" into one line per argument format
fun! AlignMaps#Afnc()
" call Dfunc("AlignMaps#Afnc()")
" keep display quiet
let chkeep = &ch
let gdkeep = &gd
let vekeep = &ve
set ch=2 nogd ve=
" will use marks y,z ; save current values
let mykeep = SaveMark("'y")
let mzkeep = SaveMark("'z")
" Find beginning of function -- be careful to skip over comments
let cmmntid = synIDtrans(hlID("Comment"))
let stringid = synIDtrans(hlID("String"))
exe "norm! ]]"
while search(")","bW") != 0
" call Decho("line=".line(".")." col=".col("."))
let parenid= synIDtrans(synID(line("."),col("."),1))
if parenid != cmmntid && parenid != stringid
break
endif
endwhile
norm! %my
s/(\s*\(\S\)/(\r \1/e
exe "norm! `y%"
s/)\s*\(\/[*/]\)/)\r\1/e
exe "norm! `y%mz"
'y,'zs/\s\+$//e
'y,'zs/^\s\+//e
'y+1,'zs/^/ /
" insert newline after every comma only one parenthesis deep
sil! exe "norm! `y\<right>h"
let parens = 1
let cmmnt = 0
let cmmntline= -1
while parens >= 1
" call Decho("parens=".parens." @a=".@a)
exe 'norm! ma "ay`a '
if @a == "("
let parens= parens + 1
elseif @a == ")"
let parens= parens - 1
" comment bypass: /* ... */ or //...
elseif cmmnt == 0 && @a == '/'
let cmmnt= 1
elseif cmmnt == 1
if @a == '/'
let cmmnt = 2 " //...
let cmmntline= line(".")
elseif @a == '*'
let cmmnt= 3 " /*...
else
let cmmnt= 0
endif
elseif cmmnt == 2 && line(".") != cmmntline
let cmmnt = 0
let cmmntline= -1
elseif cmmnt == 3 && @a == '*'
let cmmnt= 4
elseif cmmnt == 4
if @a == '/'
let cmmnt= 0 " ...*/
elseif @a != '*'
let cmmnt= 3
endif
elseif @a == "," && parens == 1 && cmmnt == 0
exe "norm! i\<CR>\<Esc>"
endif
endwhile
norm! `y%mz%
sil! 'y,'zg/^\s*$/d
" perform substitutes to mark fields for Align
sil! 'y+1,'zv/^\//s/^\s\+\(\S\)/ \1/e
sil! 'y+1,'zv/^\//s/\(\S\)\s\+/\1 /eg
sil! 'y+1,'zv/^\//s/\* \+/*/ge
sil! 'y+1,'zv/^\//s/\w\zs\s*\*/ */ge
" func
" ws <- declaration -> <-ptr -> <-var-> <-[array][] -> <-glop-> <-end->
sil! 'y+1,'zv/^\//s/^\s*\(\(\K\k*\s*\)\+\)\s\+\([(*]*\)\s*\(\K\k*\)\s*\(\(\[.\{-}]\)*\)\s*\(.\{-}\)\=\s*\([,)]\)\s*$/ \1@#\3@\4\5@\7\8/e
sil! 'y+1,'z+1g/^\s*\/[*/]/norm! kJ
sil! 'y+1,'z+1s%/[*/]%@&@%ge
sil! 'y+1,'z+1s%*/%@&%ge
AlignCtrl mIp0P0=l @
sil! 'y+1,'zAlign
sil! 'y,'zs%@\(/[*/]\)@%\t\1 %e
sil! 'y,'zs%@\*/% */%e
sil! 'y,'zs/@\([,)]\)/\1/
sil! 'y,'zs/@/ /
AlignCtrl mIlrp0P0= # @
sil! 'y+1,'zAlign
sil! 'y+1,'zs/#/ /
sil! 'y+1,'zs/@//
sil! 'y+1,'zs/\(\s\+\)\([,)]\)/\2\1/e
" Restore
call RestoreMark(mykeep)
call RestoreMark(mzkeep)
let &ch= chkeep
let &gd= gdkeep
let &ve= vekeep
" call Dret("AlignMaps#Afnc")
endfun
" ---------------------------------------------------------------------
" AlignMaps#FixMultiDec: converts a type arg,arg,arg; line to multiple lines {{{2
fun! AlignMaps#FixMultiDec()
" call Dfunc("AlignMaps#FixMultiDec()")
" save register x
let xkeep = @x
let curline = getline(".")
" call Decho("curline<".curline.">")
" Get the type. I'm assuming one type per line (ie. int x; double y; on one line will not be handled properly)
let @x=substitute(curline,'^\(\s*[a-zA-Z_ \t][a-zA-Z0-9_ \t]*\)\s\+[(*]*\h.*$','\1','')
" call Decho("@x<".@x.">")
" transform line
exe 's/,/;\r'.@x.' /ge'
"restore register x
let @x= xkeep
" call Dret("AlignMaps#FixMultiDec : my=".line("'y")." mz=".line("'z"))
endfun
" ---------------------------------------------------------------------
" Restore: {{{1
let &cpo= s:keepcpo
unlet s:keepcpo
" vim: ts=4 fdm=marker

1469
vim/doc/Align.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@ -75,6 +75,46 @@
:NERDTreeFromBookmark NERD_tree.txt /*:NERDTreeFromBookmark* :NERDTreeFromBookmark NERD_tree.txt /*:NERDTreeFromBookmark*
:NERDTreeMirror NERD_tree.txt /*:NERDTreeMirror* :NERDTreeMirror NERD_tree.txt /*:NERDTreeMirror*
:NERDTreeToggle NERD_tree.txt /*:NERDTreeToggle* :NERDTreeToggle NERD_tree.txt /*:NERDTreeToggle*
:TChangesetOpen trac.txt /*:TChangesetOpen*
:TTAddComment trac.txt /*:TTAddComment*
:TTClearAllFilters trac.txt /*:TTClearAllFilters*
:TTClearFilter trac.txt /*:TTClearFilter*
:TTFilterComponent trac.txt /*:TTFilterComponent*
:TTFilterMilestone trac.txt /*:TTFilterMilestone*
:TTFilterNoMilestone trac.txt /*:TTFilterNoMilestone*
:TTFilterNoOwner trac.txt /*:TTFilterNoOwner*
:TTFilterOwner trac.txt /*:TTFilterOwner*
:TTFilterPriority trac.txt /*:TTFilterPriority*
:TTFilterResolution trac.txt /*:TTFilterResolution*
:TTFilterSeverity trac.txt /*:TTFilterSeverity*
:TTFilterStatus trac.txt /*:TTFilterStatus*
:TTFilterType trac.txt /*:TTFilterType*
:TTIgnoreComponent trac.txt /*:TTIgnoreComponent*
:TTIgnoreMilestone trac.txt /*:TTIgnoreMilestone*
:TTIgnoreNoMilestone trac.txt /*:TTIgnoreNoMilestone*
:TTIgnoreNoOwner trac.txt /*:TTIgnoreNoOwner*
:TTIgnoreOwner trac.txt /*:TTIgnoreOwner*
:TTIgnorePriority trac.txt /*:TTIgnorePriority*
:TTIgnoreResolution trac.txt /*:TTIgnoreResolution*
:TTIgnoreSeverity trac.txt /*:TTIgnoreSeverity*
:TTIgnoreStatus trac.txt /*:TTIgnoreStatus*
:TTIgnoreType trac.txt /*:TTIgnoreType*
:TTLServer trac.txt /*:TTLServer*
:TTListFilters trac.txt /*:TTListFilters*
:TTOpen trac.txt /*:TTOpen*
:TTPreview trac.txt /*:TTPreview*
:TTServer trac.txt /*:TTServer*
:TTSet trac.txt /*:TTSet*
:TTSortby trac.txt /*:TTSortby*
:TTUpdateDescrption trac.txt /*:TTUpdateDescrption*
:TTimelineOpen trac.txt /*:TTimelineOpen*
:TWAddAttachment trac.txt /*:TWAddAttachment*
:TWGetAttachment trac.txt /*:TWGetAttachment*
:TWOpen trac.txt /*:TWOpen*
:TWPreview trac.txt /*:TWPreview*
:TWSave trac.txt /*:TWSave*
:TWServer trac.txt /*:TWServer*
:TWVimDiff trac.txt /*:TWVimDiff*
:TlistAddFiles taglist.txt /*:TlistAddFiles* :TlistAddFiles taglist.txt /*:TlistAddFiles*
:TlistAddFilesRecursive taglist.txt /*:TlistAddFilesRecursive* :TlistAddFilesRecursive taglist.txt /*:TlistAddFilesRecursive*
:TlistClose taglist.txt /*:TlistClose* :TlistClose taglist.txt /*:TlistClose*
@ -108,6 +148,7 @@
:VCSUnlock vcscommand.txt /*:VCSUnlock* :VCSUnlock vcscommand.txt /*:VCSUnlock*
:VCSUpdate vcscommand.txt /*:VCSUpdate* :VCSUpdate vcscommand.txt /*:VCSUpdate*
:VCSVimDiff vcscommand.txt /*:VCSVimDiff* :VCSVimDiff vcscommand.txt /*:VCSVimDiff*
Align-copyright Align.txt /*Align-copyright*
ConqueTerm conque_term.txt /*ConqueTerm* ConqueTerm conque_term.txt /*ConqueTerm*
ConqueTerm_CWInsert conque_term.txt /*ConqueTerm_CWInsert* ConqueTerm_CWInsert conque_term.txt /*ConqueTerm_CWInsert*
ConqueTerm_CloseOnEnd conque_term.txt /*ConqueTerm_CloseOnEnd* ConqueTerm_CloseOnEnd conque_term.txt /*ConqueTerm_CloseOnEnd*
@ -210,6 +251,13 @@ NERD_commenter.txt NERD_commenter.txt /*NERD_commenter.txt*
NERD_tree.txt NERD_tree.txt /*NERD_tree.txt* NERD_tree.txt NERD_tree.txt /*NERD_tree.txt*
OpenFilemanager open_terminal.txt /*OpenFilemanager* OpenFilemanager open_terminal.txt /*OpenFilemanager*
OpenTerminal open_terminal.txt /*OpenTerminal* OpenTerminal open_terminal.txt /*OpenTerminal*
TSearch trac.txt /*TSearch*
TTAddAttachment trac.txt /*TTAddAttachment*
TTCreateDefect trac.txt /*TTCreateDefect*
TTCreateEnhancement trac.txt /*TTCreateEnhancement*
TTCreateTask trac.txt /*TTCreateTask*
TTLoadTicketSession trac.txt /*TTLoadTicketSession*
TTSaveTicketSession trac.txt /*TTSaveTicketSession*
Tlist_Get_Tag_Prototype_By_Line() taglist.txt /*Tlist_Get_Tag_Prototype_By_Line()* Tlist_Get_Tag_Prototype_By_Line() taglist.txt /*Tlist_Get_Tag_Prototype_By_Line()*
Tlist_Get_Tagname_By_Line() taglist.txt /*Tlist_Get_Tagname_By_Line()* Tlist_Get_Tagname_By_Line() taglist.txt /*Tlist_Get_Tagname_By_Line()*
Tlist_Set_App() taglist.txt /*Tlist_Set_App()* Tlist_Set_App() taglist.txt /*Tlist_Set_App()*
@ -234,6 +282,90 @@ VCSCommandSVNDiffOpt vcscommand.txt /*VCSCommandSVNDiffOpt*
VCSCommandSVNExec vcscommand.txt /*VCSCommandSVNExec* VCSCommandSVNExec vcscommand.txt /*VCSCommandSVNExec*
VCSCommandSplit vcscommand.txt /*VCSCommandSplit* VCSCommandSplit vcscommand.txt /*VCSCommandSplit*
VCSCommandVCSTypeOverride vcscommand.txt /*VCSCommandVCSTypeOverride* VCSCommandVCSTypeOverride vcscommand.txt /*VCSCommandVCSTypeOverride*
align Align.txt /*align*
align-align Align.txt /*align-align*
align-codepoint Align.txt /*align-codepoint*
align-command Align.txt /*align-command*
align-commands Align.txt /*align-commands*
align-concept Align.txt /*align-concept*
align-concepts Align.txt /*align-concepts*
align-contents Align.txt /*align-contents*
align-control Align.txt /*align-control*
align-history Align.txt /*align-history*
align-manual Align.txt /*align-manual*
align-maps Align.txt /*align-maps*
align-multibyte Align.txt /*align-multibyte*
align-option Align.txt /*align-option*
align-options Align.txt /*align-options*
align-strlen Align.txt /*align-strlen*
align-usage Align.txt /*align-usage*
align-userguide Align.txt /*align-userguide*
align-utf Align.txt /*align-utf*
align-utf8 Align.txt /*align-utf8*
align.txt Align.txt /*align.txt*
alignctrl Align.txt /*alignctrl*
alignctrl- Align.txt /*alignctrl-*
alignctrl-+ Align.txt /*alignctrl-+*
alignctrl-- Align.txt /*alignctrl--*
alignctrl-: Align.txt /*alignctrl-:*
alignctrl-< Align.txt /*alignctrl-<*
alignctrl-= Align.txt /*alignctrl-=*
alignctrl-> Align.txt /*alignctrl->*
alignctrl-C Align.txt /*alignctrl-C*
alignctrl-I Align.txt /*alignctrl-I*
alignctrl-P Align.txt /*alignctrl-P*
alignctrl-W Align.txt /*alignctrl-W*
alignctrl-c Align.txt /*alignctrl-c*
alignctrl-g Align.txt /*alignctrl-g*
alignctrl-l Align.txt /*alignctrl-l*
alignctrl-m Align.txt /*alignctrl-m*
alignctrl-no-option Align.txt /*alignctrl-no-option*
alignctrl-p Align.txt /*alignctrl-p*
alignctrl-r Align.txt /*alignctrl-r*
alignctrl-separators Align.txt /*alignctrl-separators*
alignctrl-settings Align.txt /*alignctrl-settings*
alignctrl-v Align.txt /*alignctrl-v*
alignctrl-w Align.txt /*alignctrl-w*
alignman Align.txt /*alignman*
alignmanual Align.txt /*alignmanual*
alignmap-Htd Align.txt /*alignmap-Htd*
alignmap-T= Align.txt /*alignmap-T=*
alignmap-Tsp Align.txt /*alignmap-Tsp*
alignmap-a( Align.txt /*alignmap-a(*
alignmap-a, Align.txt /*alignmap-a,*
alignmap-a< Align.txt /*alignmap-a<*
alignmap-a= Align.txt /*alignmap-a=*
alignmap-a? Align.txt /*alignmap-a?*
alignmap-abox Align.txt /*alignmap-abox*
alignmap-acom Align.txt /*alignmap-acom*
alignmap-adcom Align.txt /*alignmap-adcom*
alignmap-adec Align.txt /*alignmap-adec*
alignmap-adef Align.txt /*alignmap-adef*
alignmap-afnc Align.txt /*alignmap-afnc*
alignmap-anum Align.txt /*alignmap-anum*
alignmap-aocom Align.txt /*alignmap-aocom*
alignmap-ascom Align.txt /*alignmap-ascom*
alignmap-history Align.txt /*alignmap-history*
alignmap-m= Align.txt /*alignmap-m=*
alignmap-t# Align.txt /*alignmap-t#*
alignmap-t, Align.txt /*alignmap-t,*
alignmap-t: Align.txt /*alignmap-t:*
alignmap-t; Align.txt /*alignmap-t;*
alignmap-t< Align.txt /*alignmap-t<*
alignmap-t= Align.txt /*alignmap-t=*
alignmap-t? Align.txt /*alignmap-t?*
alignmap-tab Align.txt /*alignmap-tab*
alignmap-tml Align.txt /*alignmap-tml*
alignmap-ts, Align.txt /*alignmap-ts,*
alignmap-ts: Align.txt /*alignmap-ts:*
alignmap-ts< Align.txt /*alignmap-ts<*
alignmap-ts= Align.txt /*alignmap-ts=*
alignmap-tsp Align.txt /*alignmap-tsp*
alignmap-tsq Align.txt /*alignmap-tsq*
alignmap-tt Align.txt /*alignmap-tt*
alignmap-t~ Align.txt /*alignmap-t~*
alignmaps Align.txt /*alignmaps*
alignusage Align.txt /*alignusage*
b:VCSCommandCommand vcscommand.txt /*b:VCSCommandCommand* b:VCSCommandCommand vcscommand.txt /*b:VCSCommandCommand*
b:VCSCommandOriginalBuffer vcscommand.txt /*b:VCSCommandOriginalBuffer* b:VCSCommandOriginalBuffer vcscommand.txt /*b:VCSCommandOriginalBuffer*
b:VCSCommandSourceFile vcscommand.txt /*b:VCSCommandSourceFile* b:VCSCommandSourceFile vcscommand.txt /*b:VCSCommandSourceFile*
@ -312,6 +444,45 @@ textformat-history textformat.txt /*textformat-history*
textformat-keymap textformat.txt /*textformat-keymap* textformat-keymap textformat.txt /*textformat-keymap*
textformat-start textformat.txt /*textformat-start* textformat-start textformat.txt /*textformat-start*
textformat.txt textformat.txt /*textformat.txt* textformat.txt textformat.txt /*textformat.txt*
trac-changeset-view trac.txt /*trac-changeset-view*
trac-format trac.txt /*trac-format*
trac-format-blockquotes trac.txt /*trac-format-blockquotes*
trac-format-definition trac.txt /*trac-format-definition*
trac-format-discussion trac.txt /*trac-format-discussion*
trac-format-font trac.txt /*trac-format-font*
trac-format-headings trac.txt /*trac-format-headings*
trac-format-images trac.txt /*trac-format-images*
trac-format-links trac.txt /*trac-format-links*
trac-format-lists trac.txt /*trac-format-lists*
trac-format-macros trac.txt /*trac-format-macros*
trac-format-misc trac.txt /*trac-format-misc*
trac-format-nolink trac.txt /*trac-format-nolink*
trac-format-notes trac.txt /*trac-format-notes*
trac-format-paragraphs trac.txt /*trac-format-paragraphs*
trac-format-preformatted trac.txt /*trac-format-preformatted*
trac-format-processors trac.txt /*trac-format-processors*
trac-format-tables trac.txt /*trac-format-tables*
trac-format-traclinks trac.txt /*trac-format-traclinks*
trac-requirements trac.txt /*trac-requirements*
trac-search-view trac.txt /*trac-search-view*
trac-server trac.txt /*trac-server*
trac-setup trac.txt /*trac-setup*
trac-ticket-attachments trac.txt /*trac-ticket-attachments*
trac-ticket-changes trac.txt /*trac-ticket-changes*
trac-ticket-comments trac.txt /*trac-ticket-comments*
trac-ticket-create trac.txt /*trac-ticket-create*
trac-ticket-filters trac.txt /*trac-ticket-filters*
trac-ticket-session trac.txt /*trac-ticket-session*
trac-ticket-sorting trac.txt /*trac-ticket-sorting*
trac-ticket-view trac.txt /*trac-ticket-view*
trac-timeline-view trac.txt /*trac-timeline-view*
trac-wiki-attachments trac.txt /*trac-wiki-attachments*
trac-wiki-diff trac.txt /*trac-wiki-diff*
trac-wiki-editing trac.txt /*trac-wiki-editing*
trac-wiki-htmlpreview trac.txt /*trac-wiki-htmlpreview*
trac-wiki-save trac.txt /*trac-wiki-save*
trac-wiki-view trac.txt /*trac-wiki-view*
trac.txt trac.txt /*trac.txt*
vcscommand vcscommand.txt /*vcscommand* vcscommand vcscommand.txt /*vcscommand*
vcscommand-buffer-management vcscommand.txt /*vcscommand-buffer-management* vcscommand-buffer-management vcscommand.txt /*vcscommand-buffer-management*
vcscommand-buffer-variables vcscommand.txt /*vcscommand-buffer-variables* vcscommand-buffer-variables vcscommand.txt /*vcscommand-buffer-variables*

627
vim/doc/trac.txt Normal file
View File

@ -0,0 +1,627 @@
*trac.txt*
Vimtrac Usage Notes
1. System Requirements |trac-requirements|
2. Setup |trac-setup|
3. Server Selection |trac-server|
4. Wiki Viewing / Editing |trac-wiki-view|
4.1 Wiki Browsing/Editing |trac-wiki-editing|
4.2. Adding/ Retrieving an Attachment |trac-wiki-attachments|
4.3. HTML Preview |trac-wiki-htmlpreview|
4.4. Saving Wiki's |trac-wiki-save|
4.5 Wiki Vim Diffs |trac-wiki-diff|
5. Trac Ticket View |trac-ticket-view|
5.1 Ticket Filters |trac-ticket-filters|
5.1.1 Ticket Sorting |trac-ticket-sorting|
5.2. Adding Comments |trac-ticket-comments|
5.3. Changing ticket states |trac-ticket-changes|
5.4. Creating Tickets |trac-ticket-create|
5.5. Adding/Retrieving attachments |trac-ticket-attachments|
5.6 Ticket Sessions |trac-ticket-session|
6. Trac Search View |trac-search-view|
7. Changeset View |trac-changeset-view|
8. Timeline View |trac-timeline-view|
9. WikiFormatting |trac-wiki-formatting|
9.1 Font Styles |trac-format-font|
9.1 Notes: |trac-format-notes|
9.2 Headings |trac-format-headings|
9.3 Paragraphs |trac-format-paragraphs|
9.4 Lists |trac-format-lists|
9.4 Definition Lists |trac-format-definition|
9.5 Preformatted Text |trac-format-preformatted|
9.6 Blockquotes |trac-format-blockquotes|
9.7 Discussion Citations |trac-format-discussion|
9.8 Tables |trac-format-tables|
9.9 Links |trac-format-links|
9.9.1 Trac Links |trac-format-traclinks|
9.10 Escaping Links and WikiPageNames |trac-format-nolink|
9.11 Images |trac-format-images|
9.12 Macros |trac-format-macros|
9.13 Processors |trac-format-processors|
9.14 Miscellaneous |trac-format-misc|
================================================================================
1. System Requirements *trac-requirements*
You must have a working Trac repository version 0.10 or later complete with
the xmlrpc plugin and a user with suitable access rights.
Vim must be compiled with python support and your client must have python
2.4.4 or later
To use the summary view you need to have the Align plugin installed for the
layout.
http://www.vim.org/scripts/script.php?script_id=294
================================================================================
2. Setup *trac-setup*
You need to create a list of trac servers using this format in your vimrc.
"let g:tracServerList = {}
"let g:tracServerList['(Server Name)'] =
\'http://(user):(password)@(trac serverpath)/login/xmlrpc'
Check out
http://www.ascetinteractive.com.au/vimtrac/wiki/UsageNotes and
http://www.ascetinteractive.com.au/vimtrac/wiki/TricksAndTips
for more up to date notes
================================================================================
3. Server Selection *trac-server*
:TWServer [ServerName] *:TWServer*
:TTServer [ServerName] *:TTServer*
:TTLServer [ServerName] *:TTLServer*
Sets the current trac server where the
The <tab> key will cycle through available servers.
The wiki (TW), ticket (TT) and timeline (TTL) vaiations will open the
respective views
================================================================================
4. Wiki Viewing / Editing *trac-wiki-view*
The Trac Wiki view is for browsing an editing a trac websites wiki pages.
*:TWOpen*
To open the wiki view use the command :TWOpen [OptionalWikiPage]
If no page argument is given the plugin will open the main page WikiStart
by default
4.1. Browsing/Editing *trac-wiki-editing*
The WIKITOC_WINDOW will show a list of pages. Scrolling up and down and
Pressing <return> on a page will open the selected page in the WIKI_WINDOW
Pressing <space> over the page in the WIKITOC_WINDOW will display the page
in a browser
Trac sites usually have a bunch of in built pages Trac* or Wiki* you can
hide these from view by setting the global variable in your vimrc. let
g:tracHideTracWiki = 'yes'
At the moment this is done with a simple regexp so if you name your own
pages Trac... or Wiki... they will not appear on the Table of Contents.
You can also load a page by pressing the usual tag jump <c-]> to open the
page under the cursor. At the moment theres no page name validation so it
will throw an error if you try an open a nonexistant page.
4.2. Adding/ Retrieving an Attachment *trac-wiki-attachments*
:TWAddAttachment [file_path] *:TWAddAttachment*
adds an attachment to the current active wiki page
:TWGetAttachment [file] *:TWGetAttachment*
gets an attachment from the active Wiki Page and save it to the current
working directory.
If a Wiki page opened contains attachments The Wiki Attachment window will
appear. Attachments can be downloaded by hovering over the desired
attachment and pressing <enter>
4.3. HTML Preview *trac-wiki-htmlpreview*
:TTPreview *:TWPreview* *:TTPreview*
displays the current wiki in html preview (only tested on lynx set
g:tracBrowser)
You can also use the shortcut <leader>tp
4.4. Saving Wiki's *trac-wiki-save*
To save a page you can type in the command view
:TWSave [optional_wiki_update_comment] *:TWSave*
Alternatively you can quickly save a page with your regular :wq<cr> or :w<cr>
which I've mapped to perform the TWSave? command.
Exiting Trac Wiki View
Exiting is done by either the command
:TClose, :wq<cr> or :q<cr> in either of the wiki windows
4.5 Wiki Vim Diffs *trac-wiki-diff*
:TWVimDiff <revision no> *:TWVimDiff*
Opens a vertical split diff The current wiki's <revision no>. If theres
no argument supplied it will be the previous revision.
================================================================================
5. Trac Ticket View *trac-ticket-view*
The Trac ticket view is you browse trac tickets
Opening
:TTOpen [optional_ticket_id] *:TTOpen*
Browsing
You can scroll up and down the ticket list. Pressing enter will load the
ticket id under the cursor.
5.1 Ticket Filters *trac-ticket-filters*
:TTFilterMilestone [Milestone] *:TTFilterMilestone*
:TTFilterType [Type] *:TTFilterType*
:TTFilterStatus [Status] *:TTFilterStatus*
:TTFilterResolution [Resolution *:TTFilterResolution*
:TTFilterPriority [Priority] *:TTFilterPriority*
:TTFilterSeverity [Severity] *:TTFilterSeverity*
:TTFilterComponent [Component] *:TTFilterComponent*
:TTFilterOwner [Owner] *:TTFilterOwner*
For filtering on respective ticket attributes. Allows a tab complete option
for Filter acts as a whitelist ignoring all other tickets not matching the
attribute
:TTIgnoreMilestone [Milestone] *:TTIgnoreMilestone*
:TTIgnoreType [Type] *:TTIgnoreType*
:TTIgnoreStatus [Status] *:TTIgnoreStatus*
:TTIgnoreResolution [Resolution *:TTIgnoreResolution*
:TTIgnorePriority [Priority] *:TTIgnorePriority*
:TTIgnoreSeverity [Severity] *:TTIgnoreSeverity*
:TTIgnoreComponent [Component] *:TTIgnoreComponent*
:TTIgnoreOwner [Owner] *:TTIgnoreOwner*
The Opposite of TTFilter... acts as a blacklist filter on tickets.
:TTIgnoreNoMilestone [NoMilestone] *:TTIgnoreNoMilestone*
:TTIgnoreNoOwner [NoOwner] *:TTIgnoreNoOwner*
:TTFilterNoMilestone [NoMilestone] *:TTFilterNoMilestone*
:TTFilterNoOwner [NoOwner] *:TTFilterNoOwner*
Special filters for tickets not owned or categorised
:TTClearAllFilters *:TTClearAllFilters*
Resets the filter list to blank
:TTClearFilter [filter no] *:TTClearFilter*
Filter numbers and descriptions are displayed at the top of the ticket
list. Using this filter will remove the filter number
:TTListFilters *:TTListFilters*
5.1.2 Ticket Sorting *trac-ticket-sorting*
:TTSortby [sort_option] *:TTSortby*
Tickets can either be sorted according to milestone or priority. Milestones
will appear in order of due date and ticket priority is arranged according
to the trac-admin priority settings.
5.2. Adding Comments *trac-ticket-comments*
The TICKET_COMMENT window is for adding comments. To commit a comment write
the message first and then type
:TTAddComment *:TTAddComment*
5.3. Changing ticket states *trac-ticket-changes*
Trac current ticket option modifications (use tab complete)
:TTSetMilestone [Milestone] *:TTSet*
:TTSetType [Type]
:TTSetStatus [Status]
:TTSetResolution [Resolution]
:TTSetPriority [Priority]
:TTSetSeverity [Severity]
:TTSetComponent [Component]
:TTSetSummary [Summary]
The setting will immediately be sent to the server.
:TTUpdateDescrption *:TTUpdateDescrption*
Takes the text from the TICKET_COMMENT_WINDOW and updates a tickets
description. It will prompt for confirmation before committing
5.4. Creating Tickets *trac-ticket-create*
This is still a bit of a hack. If you add a description in the
TICKET_COMMENT window and type the command
:TTCreateTask [ticket_summary] *TTCreateTask*
:TTCreateDefect [ticket_summary] *TTCreateDefect*
:TTCreateEnhancement [ticket_summary] *TTCreateEnhancement*
A new ticket will be created with the default attributes (set in trac.ini).
When creating a ticket you can create a description initially in the
TICKET_COMMENT_WINDOW or alternatively you can add a description later
using |TTUpdateDescrption|.
5.5. Adding/Retrieving attachments *trac-ticket-attachments*
:TTAddAttachment [file_path] *TTAddAttachment*
Adds a ticket to the current open ticket
:TTGetAttachment [file]
Retrieves an atteched file and saves it to the current working directory.
File options for the current ticket may be viewed with <tab> completion.
5.6. Ticket Sessions *trac-ticket-session*
It's possible to associate a list of open files with a trac ticket on the
local server which can be handy for reopening tickets another day to make
further changes.
Note: the plugin needs a directory to write to by default it is
let g:tracSessionDirectory = expand ('$HOME') . '/.vimtrac_session'
TTSaveTicketSession *TTSaveTicketSession*
Saves the open files and line numbers to the active ticket. You must
have a ticket open in the ticket view for this to take effect.
TTLoadTicketSession *TTLoadTicketSession*
Loads the Tickets Session information
5.7. Exiting
:TClose
or :q<cr> in either of the Ticket windows will close the view
================================================================================
6. Trac Search View *trac-search-view*
*TSearch*
:TSearch [search_term]
Opening Trac Search View
Will open search view containing matching wiki/ticket/changesets along with
basic descrriptions
:TClose will close this view or a ticket/wiki view will open if an item is
selected
================================================================================
7. Changeset View *trac-changeset-view*
:TChangesetOpen [changeset_id] *:TChangesetOpen*
opens a unified diff changeset view in a split window
You can also open a changeset by pressing <enter> on a matching
Changeset:>> line in the Trac Seatch window
================================================================================
8. Timeline View *trac-timeline-view*
Timeline view requires feedparser.py installed.
http://www.feedparser.org/
The timeline view grabs the rss feed from a trac server.
:TTimelineOpen *:TTimelineOpen*
You can also open tickets, wikis and changesets by pressing <enter> on a
matching Changeset:>>, Wiki:>> and Ticket:>> line
================================================================================
9. Trac Wiki Formatting *trac-format*
This reference is based on the trac wiki information provided with trac.
(WikiFormatting) Made easier to read within vim. I'd suggest you read the
document in your browser and use this as a quick refresher
Access this file with :TWikiFormat
Wiki markup is a core feature in Trac, tightly integrating all the other
parts of Trac into a flexible and powerful whole.
Trac has a built in small and powerful wiki rendering engine. This wiki
engine implements an ever growing subset of the commands from other popular
Wikis, especially [http://moinmoin.wikiwikiweb.de/ MoinMoin].
This page demonstrates the formatting syntax available anywhere
WikiFormatting is allowed.
9.1 Font Styles *trac-format-font*
The Trac wiki supports the following font styles:
{{{
* '''bold''', '''!''' can be bold too''', and '''! '''
* ''italic''
* '''''bold italic'''''
* __underline__
* {{{monospace}}} or `monospace`
* ~~strike-through~~
* ^superscript^
* ,,subscript,,
}}}
9.1 Notes: *trac-format-notes*
`{{{...}}}` and {{{`...`}}} commands not only select a monospace font, but
also treat their content as verbatim text, meaning that no further wiki
processing is done on this text.
{{{ ! }}} tells wiki parser to not take the following characters as wiki
format, so pay attention to put a space after !, e.g. when ending bold.
9.2 Headings *trac-format-headings*
You can create heading by starting a line with one up to five ''equal''
characters ("=") followed by a single space and the headline text. The line
should end with a space followed by the same number of ''='' characters.
The heading might optionally be followed by an explicit id. If not, an
implicit but nevertheless readable id will be generated.
Example:
{{{
= Heading =
== Subheading ==
=== About ''this'' ===
=== Explicit id === #using-explicit-id-in-heading
}}}
9.3 Paragraphs *trac-format-paragraphs*
A new text paragraph is created whenever two blocks of text are separated
by one or more empty lines.
A forced line break can also be inserted, using:
{{{
Line 1[[BR]]Line 2
}}}
9.4 Lists *trac-format-lists*
The wiki supports both ordered/numbered and unordered lists.
Example:
{{{
* Item 1
* Item 1.1
* Item 2
1. Item 1
a. Item 1.a
a. Item 1.b
i. Item 1.b.i
i. Item 1.b.ii
1. Item 2
And numbered lists can also be given an explicit number:
3. Item 3
}}}
Note that there must be one or more spaces preceding the list item markers,
otherwise the list will be treated as a normal paragraph.
9.4 Definition Lists *trac-format-definition*
The wiki also supports definition lists.
Example:
{{{
llama::
some kind of mammal, with hair
ppython::
some kind of reptile, without hair
(can you spot the typo?)
}}}
Note that you need a space in front of the defined term.
9.5 Preformatted Text *trac-format-preformatted*
Block containing preformatted text are suitable for source code snippets,
notes and examples. Use three ''curly braces'' wrapped around the text to
define a block quote. The curly braces need to be on a separate line.
Example:
{{{
{{{
def HelloWorld():
print "Hello World"
}}}
}}}
9.6 Blockquotes *trac-format-blockquotes*
In order to mark a paragraph as blockquote, indent that paragraph with two
spaces.
Example:
{{{
This text is a quote from someone else.
}}}
9.7 Discussion Citations *trac-format-discussion*
To delineate a citation in an ongoing discussion thread, such as the ticket
comment area, e-mail-like citation marks (">", ">>", etc.) may be used.
Example:
{{{
>> Someone's original text
> Someone else's reply text
My reply text
}}}
''Note: Some WikiFormatting elements, such as lists and preformatted text,
are lost in the citation area. Some reformatting may be necessary to
create a clear citation.''
9.8 Tables *trac-format-tables*
Simple tables can be created like this:
{{{
||Cell 1||Cell 2||Cell 3||
||Cell 4||Cell 5||Cell 6||
}}}
Note that more complex tables can be created using
[wiki:WikiRestructuredText#BiggerReSTExample reStructuredText].
9.9 Links *trac-format-links*
Hyperlinks are automatically created for WikiPageNames and URLs.
!WikiPageLinks can be disabled by prepending an exclamation mark "!"
character, such as {{{!WikiPageLink}}}.
Example:
{{{
TitleIndex, http://www.edgewall.com/, !NotAlink
}}}
Links can be given a more descriptive title by writing the link followed by
a space and a title and all this inside square brackets. If the
descriptive title is omitted, then the explicit prefix is discarded, unless
the link is an external link. This can be useful for wiki pages not
adhering to the WikiPageNames convention.
Example:
{{{
* [http://www.edgewall.com/ Edgewall Software]
* [wiki:TitleIndex Title Index]
* [wiki:ISO9000]
}}}
9.9.1 Trac Links *trac-format-traclinks*
Wiki pages can link directly to other parts of the Trac system. Pages can
refer to tickets, reports, changesets, milestones, source files and other
Wiki pages using the following notations:
{{{
* Tickets: #1 or ticket:1
* Reports: {1} or report:1
* Changesets: r1, [1] or changeset:1
* ...
}}}
See TracLinks for more in-depth information.
9.10 Escaping Links and WikiPageNames *trac-format-nolink*
You may avoid making hyperlinks out of TracLinks by preceding an expression
with a single "!" (exclamation mark).
Example:
{{{
!NoHyperLink
!#42 is not a link
}}}
9.11 Images *trac-format-images*
Urls ending with `.png`, `.gif` or `.jpg` are no longer automatically
interpreted as image links, and converted to `<img>` tags.
You now have to use the ![[Image]] macro (see below).
9.12 Macros *trac-format-macros*
Macros are ''custom functions'' to insert dynamic content in a page.
Example:
{{{
[[Timestamp]]
}}}
See WikiMacros for more information, and a list of installed macros.
9.13 Processors *trac-format-processors*
Trac supports alternative markup formats using WikiProcessors. For example,
processors are used to write pages in
[wiki:WikiRestructuredText reStructuredText] or [wiki:WikiHtml HTML].
Example 1:
{{{
#!html
<pre class="wiki">{{{
#!html
&lt;h1 style="text-align: right; color: blue"&gt;HTML Test&lt;/h1&gt;
}}}</pre>
}}}
Example:
{{{
#!html
<pre class="wiki">{{{
#!python
class Test:
def __init__(self):
print "Hello World"
if __name__ == '__main__':
Test()
}}}</pre>
}}}
Perl:
{{{
#!perl
my ($test) = 0;
if ($test > 0) {
print "hello";
}
}}}
See WikiProcessors for more information.
9.14 Miscellaneous *trac-format-misc*
Four or more dashes will be replaced by a horizontal line (<HR>)
Example:
{{{
----
}}}
See also: TracLinks, TracGuide, WikiHtml, WikiMacros, WikiProcessors,
TracSyntaxColoring.

View File

@ -0,0 +1,242 @@
" AlignMapsPlugin: Alignment maps based upon <Align.vim> and <AlignMaps.vim>
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
" Date: Mar 03, 2009
"
" NOTE: the code herein needs vim 6.0 or later
" needs <Align.vim> v6 or later
" needs <cecutil.vim> v5 or later
" Copyright: Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
" AlignMaps.vim is provided *as is* and comes with no warranty
" of any kind, either expressed or implied. By using this
" plugin, you agree that in no event will the copyright
" holder be liable for any damages resulting from the use
" of this software.
"
" Usage: {{{1
" Use 'a to mark beginning of to-be-aligned region, Alternative: use V
" move cursor to end of region, and execute map. (linewise visual mode) to
" The maps also set up marks 'y and 'z, and retain mark region, execute same
" 'a at the beginning of region. map. Uses 'a, 'y, and 'z.
"
" The start/end wrappers save and restore marks 'y and 'z.
"
" Although the comments indicate the maps use a leading backslash,
" actually they use <Leader> (:he mapleader), so the user can
" specify that the maps start how he or she prefers.
"
" Note: these maps all use <Align.vim>.
"
" Romans 1:20 For the invisible things of Him since the creation of the {{{1
" world are clearly seen, being perceived through the things that are
" made, even His everlasting power and divinity; that they may be
" without excuse.
" ---------------------------------------------------------------------
" Load Once: {{{1
if &cp || exists("g:loaded_AlignMapsPlugin")
finish
endif
let s:keepcpo = &cpo
let g:loaded_AlignMapsPlugin = "v41"
set cpo&vim
" =====================================================================
" Maps: {{{1
" ---------------------------------------------------------------------
" WS: wrapper start map (internal) {{{2
" Produces a blank line above and below, marks with 'y and 'z
if !hasmapto('<Plug>WrapperStart')
map <unique> <SID>WS <Plug>AlignMapsWrapperStart
endif
nmap <silent> <script> <Plug>AlignMapsWrapperStart :set lz<CR>:call AlignMaps#WrapperStart(0)<CR>
vmap <silent> <script> <Plug>AlignMapsWrapperStart :<c-u>set lz<CR>:call AlignMaps#WrapperStart(1)<CR>
" ---------------------------------------------------------------------
" WE: wrapper end (internal) {{{2
" Removes guard lines, restores marks y and z, and restores search pattern
if !hasmapto('<Plug>WrapperEnd')
nmap <unique> <SID>WE <Plug>AlignMapsWrapperEnd
endif
nmap <silent> <script> <Plug>AlignMapsWrapperEnd :call AlignMaps#WrapperEnd()<CR>:set nolz<CR>
" ---------------------------------------------------------------------
" Complex C-code alignment maps: {{{2
if !hasmapto('<Plug>AM_a?') |map <unique> <Leader>a? <Plug>AM_a?|endif
if !hasmapto('<Plug>AM_a,') |map <unique> <Leader>a, <Plug>AM_a,|endif
if !hasmapto('<Plug>AM_a<') |map <unique> <Leader>a< <Plug>AM_a<|endif
if !hasmapto('<Plug>AM_a=') |map <unique> <Leader>a= <Plug>AM_a=|endif
if !hasmapto('<Plug>AM_a(') |map <unique> <Leader>a( <Plug>AM_a(|endif
if !hasmapto('<Plug>AM_abox') |map <unique> <Leader>abox <Plug>AM_abox|endif
if !hasmapto('<Plug>AM_acom') |map <unique> <Leader>acom <Plug>AM_acom|endif
if !hasmapto('<Plug>AM_adcom')|map <unique> <Leader>adcom <Plug>AM_adcom|endif
if !hasmapto('<Plug>AM_aocom')|map <unique> <Leader>aocom <Plug>AM_aocom|endif
if !hasmapto('<Plug>AM_ascom')|map <unique> <Leader>ascom <Plug>AM_ascom|endif
if !hasmapto('<Plug>AM_adec') |map <unique> <Leader>adec <Plug>AM_adec|endif
if !hasmapto('<Plug>AM_adef') |map <unique> <Leader>adef <Plug>AM_adef|endif
if !hasmapto('<Plug>AM_afnc') |map <unique> <Leader>afnc <Plug>AM_afnc|endif
if !hasmapto('<Plug>AM_afnc') |map <unique> <Leader>afnc <Plug>AM_afnc|endif
if !hasmapto('<Plug>AM_aunum')|map <unique> <Leader>aunum <Plug>AM_aenum|endif
if !hasmapto('<Plug>AM_aenum')|map <unique> <Leader>aenum <Plug>AM_aunum|endif
if exists("g:alignmaps_euronumber") && !exists("g:alignmaps_usanumber")
if !hasmapto('<Plug>AM_anum')|map <unique> <Leader>anum <Plug>AM_aenum|endif
else
if !hasmapto('<Plug>AM_anum')|map <unique> <Leader>anum <Plug>AM_aunum|endif
endif
map <silent> <script> <Plug>AM_a? <SID>WS:AlignCtrl mIp1P1lC ? : : : : <CR>:'a,.Align<CR>:'a,'z-1s/\(\s\+\)? /?\1/e<CR><SID>WE
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
map <silent> <script> <Plug>AM_a< <SID>WS:AlignCtrl mIp1P1=l << >><CR>:'a,.Align<CR><SID>WE
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
map <silent> <script> <Plug>AM_a= <SID>WS:AlignCtrl mIp1P1=l<CR>:AlignCtrl g :=<CR>:'a,'zAlign :\==<CR><SID>WE
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
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
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
map <silent> <script> <Plug>AM_aocom <SID>WS:AlignPush<CR>:AlignCtrl g /[*/]<CR>:exe "norm \<Plug>AM_acom"<cr>:AlignPop<CR><SID>WE
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
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
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
map <silent> <script> <Plug>AM_afnc :<c-u>set lz<CR>:silent call AlignMaps#Afnc()<CR>:set nolz<CR>
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
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
" ---------------------------------------------------------------------
" html table alignment {{{2
if !hasmapto('<Plug>AM_Htd')|map <unique> <Leader>Htd <Plug>AM_Htd|endif
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
" ---------------------------------------------------------------------
" character-based right-justified alignment maps {{{2
if !hasmapto('<Plug>AM_T|')|map <unique> <Leader>T| <Plug>AM_T||endif
if !hasmapto('<Plug>AM_T#') |map <unique> <Leader>T# <Plug>AM_T#|endif
if !hasmapto('<Plug>AM_T,') |map <unique> <Leader>T, <Plug>AM_T,o|endif
if !hasmapto('<Plug>AM_Ts,') |map <unique> <Leader>Ts, <Plug>AM_Ts,|endif
if !hasmapto('<Plug>AM_T:') |map <unique> <Leader>T: <Plug>AM_T:|endif
if !hasmapto('<Plug>AM_T;') |map <unique> <Leader>T; <Plug>AM_T;|endif
if !hasmapto('<Plug>AM_T<') |map <unique> <Leader>T< <Plug>AM_T<|endif
if !hasmapto('<Plug>AM_T=') |map <unique> <Leader>T= <Plug>AM_T=|endif
if !hasmapto('<Plug>AM_T?') |map <unique> <Leader>T? <Plug>AM_T?|endif
if !hasmapto('<Plug>AM_T@') |map <unique> <Leader>T@ <Plug>AM_T@|endif
if !hasmapto('<Plug>AM_Tab') |map <unique> <Leader>Tab <Plug>AM_Tab|endif
if !hasmapto('<Plug>AM_Tsp') |map <unique> <Leader>Tsp <Plug>AM_Tsp|endif
if !hasmapto('<Plug>AM_T~') |map <unique> <Leader>T~ <Plug>AM_T~|endif
map <silent> <script> <Plug>AM_T| <SID>WS:AlignCtrl mIp0P0=r <Bar><CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T# <SID>WS:AlignCtrl mIp0P0=r #<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T, <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_Ts, <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<CR>:'a,.s/\(\s*\),/,\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_T: <SID>WS:AlignCtrl mIp1P1=r :<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T; <SID>WS:AlignCtrl mIp0P0=r ;<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T< <SID>WS:AlignCtrl mIp0P0=r <<CR>:'a,.Align<CR><SID>WE
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"
map <silent> <script> <Plug>AM_T? <SID>WS:AlignCtrl mIp0P0=r ?<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_T@ <SID>WS:AlignCtrl mIp0P0=r @<CR>:'a,.Align<CR><SID>WE
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
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
map <silent> <script> <Plug>AM_T~ <SID>WS:AlignCtrl mIp0P0=r ~<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
" ---------------------------------------------------------------------
" character-based left-justified alignment maps {{{2
if !hasmapto('<Plug>AM_t|') |map <unique> <Leader>t| <Plug>AM_t||endif
if !hasmapto('<Plug>AM_t#') |map <unique> <Leader>t# <Plug>AM_t#|endif
if !hasmapto('<Plug>AM_t,') |map <unique> <Leader>t, <Plug>AM_t,|endif
if !hasmapto('<Plug>AM_t:') |map <unique> <Leader>t: <Plug>AM_t:|endif
if !hasmapto('<Plug>AM_t;') |map <unique> <Leader>t; <Plug>AM_t;|endif
if !hasmapto('<Plug>AM_t<') |map <unique> <Leader>t< <Plug>AM_t<|endif
if !hasmapto('<Plug>AM_t=') |map <unique> <Leader>t= <Plug>AM_t=|endif
if !hasmapto('<Plug>AM_ts,') |map <unique> <Leader>ts, <Plug>AM_ts,|endif
if !hasmapto('<Plug>AM_ts:') |map <unique> <Leader>ts: <Plug>AM_ts:|endif
if !hasmapto('<Plug>AM_ts;') |map <unique> <Leader>ts; <Plug>AM_ts;|endif
if !hasmapto('<Plug>AM_ts<') |map <unique> <Leader>ts< <Plug>AM_ts<|endif
if !hasmapto('<Plug>AM_ts=') |map <unique> <Leader>ts= <Plug>AM_ts=|endif
if !hasmapto('<Plug>AM_w=') |map <unique> <Leader>w= <Plug>AM_w=|endif
if !hasmapto('<Plug>AM_t?') |map <unique> <Leader>t? <Plug>AM_t?|endif
if !hasmapto('<Plug>AM_t~') |map <unique> <Leader>t~ <Plug>AM_t~|endif
if !hasmapto('<Plug>AM_t@') |map <unique> <Leader>t@ <Plug>AM_t@|endif
if !hasmapto('<Plug>AM_m=') |map <unique> <Leader>m= <Plug>AM_m=|endif
if !hasmapto('<Plug>AM_tab') |map <unique> <Leader>tab <Plug>AM_tab|endif
if !hasmapto('<Plug>AM_tml') |map <unique> <Leader>tml <Plug>AM_tml|endif
if !hasmapto('<Plug>AM_tsp') |map <unique> <Leader>tsp <Plug>AM_tsp|endif
if !hasmapto('<Plug>AM_tsq') |map <unique> <Leader>tsq <Plug>AM_tsq|endif
" if !hasmapto('<Plug>AM_tt') |map <unique> <Leader>tt <Plug>AM_tt|endif
map <silent> <script> <Plug>AM_t| <SID>WS:AlignCtrl mIp0P0=l <Bar><CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t# <SID>WS:AlignCtrl mIp0P0=l #<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t, <SID>WS:AlignCtrl mIp0P1=l ,<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t: <SID>WS:AlignCtrl mIp1P1=l :<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t; <SID>WS:AlignCtrl mIp0P1=l ;<CR>:'a,.Align<CR>:sil 'y,'zs/\( *\);/;\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_t< <SID>WS:AlignCtrl mIp0P0=l <<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t= <SID>WS:call AlignMaps#Equals()<CR><SID>WE
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
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
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
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
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
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
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
map <silent> <script> <Plug>AM_t? <SID>WS:AlignCtrl mIp0P0=l ?<CR>:'a,.Align<CR>:.,'zs/ \( *\);/;\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_t~ <SID>WS:AlignCtrl mIp0P0=l ~<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_t@ <SID>WS::call AlignMaps#StdAlign(1)<cr>:<SID>WE
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
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
map <silent> <script> <Plug>AM_tml <SID>WS:AlignCtrl mWp1P0=l \\\@<!\\\s*$<CR>:'a,.Align<CR><SID>WE
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
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
map <silent> <script> <Plug>AM_tt <SID>WS:AlignCtrl mIp1P1=l \\\@<!& \\\\<CR>:'a,.Align<CR><SID>WE
" =====================================================================
" Menu Support: {{{1
" ma ..move.. use menu
" v V or ctrl-v ..move.. use menu
if has("menu") && has("gui_running") && &go =~ 'm' && !exists("s:firstmenu")
let s:firstmenu= 1
if !exists("g:DrChipTopLvlMenu")
let g:DrChipTopLvlMenu= "DrChip."
endif
if g:DrChipTopLvlMenu != ""
let s:mapleader = exists("g:mapleader")? g:mapleader : '\'
let s:emapleader= escape(s:mapleader,'\ ')
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.<<\ and\ >><tab>'.s:emapleader.'a< '.s:mapleader.'a<'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Assignment\ =<tab>'.s:emapleader.'t= '.s:mapleader.'t='
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Assignment\ :=<tab>'.s:emapleader.'a= '.s:mapleader.'a='
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Backslashes<tab>'.s:emapleader.'tml '.s:mapleader.'tml'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Breakup\ Comma\ Declarations<tab>'.s:emapleader.'a, '.s:mapleader.'a,'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.C\ Comment\ Box<tab>'.s:emapleader.'abox '.s:mapleader.'abox'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Commas<tab>'.s:emapleader.'t, '.s:mapleader.'t,'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Commas<tab>'.s:emapleader.'ts, '.s:mapleader.'ts,'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Commas\ With\ Strings<tab>'.s:emapleader.'tsq '.s:mapleader.'tsq'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Comments<tab>'.s:emapleader.'acom '.s:mapleader.'acom'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Comments\ Only<tab>'.s:emapleader.'aocom '.s:mapleader.'aocom'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Declaration\ Comments<tab>'.s:emapleader.'adcom '.s:mapleader.'adcom'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Declarations<tab>'.s:emapleader.'adec '.s:mapleader.'adec'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Definitions<tab>'.s:emapleader.'adef '.s:mapleader.'adef'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Function\ Header<tab>'.s:emapleader.'afnc '.s:mapleader.'afnc'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Html\ Tables<tab>'.s:emapleader.'Htd '.s:mapleader.'Htd'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.(\.\.\.)?\.\.\.\ :\ \.\.\.<tab>'.s:emapleader.'a? '.s:mapleader.'a?'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Numbers<tab>'.s:emapleader.'anum '.s:mapleader.'anum'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Numbers\ (American-Style)<tab>'.s:emapleader.'aunum <Leader>aunum '.s:mapleader.'aunum <Leader>aunum'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Numbers\ (Euro-Style)<tab>'.s:emapleader.'aenum '.s:mapleader.'aenum'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Spaces\ (Left\ Justified)<tab>'.s:emapleader.'tsp '.s:mapleader.'tsp'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Spaces\ (Right\ Justified)<tab>'.s:emapleader.'Tsp '.s:mapleader.'Tsp'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Statements\ With\ Percent\ Style\ Comments<tab>'.s:emapleader.'m= '.s:mapleader.'m='
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ <<tab>'.s:emapleader.'t< '.s:mapleader.'t<'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ \|<tab>'.s:emapleader.'t\| '.s:mapleader.'t|'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ @<tab>'.s:emapleader.'t@ '.s:mapleader.'t@'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ #<tab>'.s:emapleader.'t# '.s:mapleader.'t#'
exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Tabs<tab>'.s:emapleader.'tab '.s:mapleader.'tab'
unlet s:mapleader
unlet s:emapleader
endif
endif
" =====================================================================
" Restore: {{{1
let &cpo= s:keepcpo
unlet s:keepcpo
" ==============================================================================
" Modelines: {{{1
" vim: ts=4 nowrap fdm=marker

View File

@ -0,0 +1,41 @@
" AlignPlugin: tool to align multiple fields based on one or more separators
" Author: Charles E. Campbell, Jr.
" Date: Nov 02, 2008
" GetLatestVimScripts: 294 1 :AutoInstall: Align.vim
" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
" Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
" Align.vim is provided *as is* and comes with no warranty
" of any kind, either expressed or implied. By using this
" plugin, you agree that in no event will the copyright
" holder be liable for any damages resulting from the use
" of this software.
"
" Romans 1:16,17a : For I am not ashamed of the gospel of Christ, for it is {{{1
" the power of God for salvation for everyone who believes; for the Jew first,
" and also for the Greek. For in it is revealed God's righteousness from
" faith to faith.
" ---------------------------------------------------------------------
" Load Once: {{{1
if &cp || exists("g:loaded_AlignPlugin")
finish
endif
let g:loaded_AlignPlugin = "v35"
let s:keepcpo = &cpo
set cpo&vim
" ---------------------------------------------------------------------
" Public Interface: {{{1
com! -bang -range -nargs=* Align <line1>,<line2>call Align#Align(<bang>0,<q-args>)
com! -range -nargs=0 AlignReplaceQuotedSpaces <line1>,<line2>call Align#AlignReplaceQuotedSpaces()
com! -nargs=* AlignCtrl call Align#AlignCtrl(<q-args>)
com! -nargs=0 AlignPush call Align#AlignPush()
com! -nargs=0 AlignPop call Align#AlignPop()
" ---------------------------------------------------------------------
" Restore: {{{1
let &cpo= s:keepcpo
unlet s:keepcpo
" vim: ts=4 fdm=marker

510
vim/plugin/cecutil.vim Normal file
View File

@ -0,0 +1,510 @@
" cecutil.vim : save/restore window position
" save/restore mark position
" save/restore selected user maps
" Author: Charles E. Campbell, Jr.
" Version: 18b ASTRO-ONLY
" Date: Aug 27, 2008
"
" Saving Restoring Destroying Marks: {{{1
" call SaveMark(markname) let savemark= SaveMark(markname)
" call RestoreMark(markname) call RestoreMark(savemark)
" call DestroyMark(markname)
" commands: SM RM DM
"
" Saving Restoring Destroying Window Position: {{{1
" call SaveWinPosn() let winposn= SaveWinPosn()
" call RestoreWinPosn() call RestoreWinPosn(winposn)
" \swp : save current window/buffer's position
" \rwp : restore current window/buffer's previous position
" commands: SWP RWP
"
" Saving And Restoring User Maps: {{{1
" call SaveUserMaps(mapmode,maplead,mapchx,suffix)
" call RestoreUserMaps(suffix)
"
" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
"
" You believe that God is one. You do well. The demons also {{{1
" believe, and shudder. But do you want to know, vain man, that
" faith apart from works is dead? (James 2:19,20 WEB)
" ---------------------------------------------------------------------
" Load Once: {{{1
if &cp || exists("g:loaded_cecutil")
finish
endif
let g:loaded_cecutil = "v18b"
let s:keepcpo = &cpo
set cpo&vim
"DechoTabOn
" =======================
" Public Interface: {{{1
" =======================
" ---------------------------------------------------------------------
" Map Interface: {{{2
if !hasmapto('<Plug>SaveWinPosn')
map <unique> <Leader>swp <Plug>SaveWinPosn
endif
if !hasmapto('<Plug>RestoreWinPosn')
map <unique> <Leader>rwp <Plug>RestoreWinPosn
endif
nmap <silent> <Plug>SaveWinPosn :call SaveWinPosn()<CR>
nmap <silent> <Plug>RestoreWinPosn :call RestoreWinPosn()<CR>
" ---------------------------------------------------------------------
" Command Interface: {{{2
com! -bar -nargs=0 SWP call SaveWinPosn()
com! -bar -nargs=0 RWP call RestoreWinPosn()
com! -bar -nargs=1 SM call SaveMark(<q-args>)
com! -bar -nargs=1 RM call RestoreMark(<q-args>)
com! -bar -nargs=1 DM call DestroyMark(<q-args>)
if v:version < 630
let s:modifier= "sil "
else
let s:modifier= "sil keepj "
endif
" ===============
" Functions: {{{1
" ===============
" ---------------------------------------------------------------------
" SaveWinPosn: {{{2
" let winposn= SaveWinPosn() will save window position in winposn variable
" call SaveWinPosn() will save window position in b:cecutil_winposn{b:cecutil_iwinposn}
" let winposn= SaveWinPosn(0) will *only* save window position in winposn variable (no stacking done)
fun! SaveWinPosn(...)
" call Dfunc("SaveWinPosn() a:0=".a:0)
if line(".") == 1 && getline(1) == ""
" call Dfunc("SaveWinPosn : empty buffer")
return ""
endif
let so_keep = &l:so
let siso_keep = &siso
let ss_keep = &l:ss
setlocal so=0 siso=0 ss=0
let swline = line(".")
let swcol = col(".")
let swwline = winline() - 1
let swwcol = virtcol(".") - wincol()
let savedposn = "call GoWinbufnr(".winbufnr(0).")|silent ".swline
let savedposn = savedposn."|".s:modifier."norm! 0z\<cr>"
if swwline > 0
let savedposn= savedposn.":".s:modifier."norm! ".swwline."\<c-y>\<cr>"
endif
if swwcol > 0
let savedposn= savedposn.":".s:modifier."norm! 0".swwcol."zl\<cr>"
endif
let savedposn = savedposn.":".s:modifier."call cursor(".swline.",".swcol.")\<cr>"
" save window position in
" b:cecutil_winposn_{iwinposn} (stack)
" only when SaveWinPosn() is used
if a:0 == 0
if !exists("b:cecutil_iwinposn")
let b:cecutil_iwinposn= 1
else
let b:cecutil_iwinposn= b:cecutil_iwinposn + 1
endif
" call Decho("saving posn to SWP stack")
let b:cecutil_winposn{b:cecutil_iwinposn}= savedposn
endif
let &l:so = so_keep
let &siso = siso_keep
let &l:ss = ss_keep
" if exists("b:cecutil_iwinposn") " Decho
" call Decho("b:cecutil_winpos{".b:cecutil_iwinposn."}[".b:cecutil_winposn{b:cecutil_iwinposn}."]")
" else " Decho
" call Decho("b:cecutil_iwinposn doesn't exist")
" endif " Decho
" call Dret("SaveWinPosn [".savedposn."]")
return savedposn
endfun
" ---------------------------------------------------------------------
" RestoreWinPosn: {{{2
" call RestoreWinPosn()
" call RestoreWinPosn(winposn)
fun! RestoreWinPosn(...)
" call Dfunc("RestoreWinPosn() a:0=".a:0)
" call Decho("getline(1)<".getline(1).">")
" call Decho("line(.)=".line("."))
if line(".") == 1 && getline(1) == ""
" call Dfunc("RestoreWinPosn : empty buffer")
return ""
endif
let so_keep = &l:so
let siso_keep = &l:siso
let ss_keep = &l:ss
setlocal so=0 siso=0 ss=0
if a:0 == 0 || a:1 == ""
" use saved window position in b:cecutil_winposn{b:cecutil_iwinposn} if it exists
if exists("b:cecutil_iwinposn") && exists("b:cecutil_winposn{b:cecutil_iwinposn}")
" call Decho("using stack b:cecutil_winposn{".b:cecutil_iwinposn."}<".b:cecutil_winposn{b:cecutil_iwinposn}.">")
try
exe "silent! ".b:cecutil_winposn{b:cecutil_iwinposn}
catch /^Vim\%((\a\+)\)\=:E749/
" ignore empty buffer error messages
endtry
" normally drop top-of-stack by one
" but while new top-of-stack doesn't exist
" drop top-of-stack index by one again
if b:cecutil_iwinposn >= 1
unlet b:cecutil_winposn{b:cecutil_iwinposn}
let b:cecutil_iwinposn= b:cecutil_iwinposn - 1
while b:cecutil_iwinposn >= 1 && !exists("b:cecutil_winposn{b:cecutil_iwinposn}")
let b:cecutil_iwinposn= b:cecutil_iwinposn - 1
endwhile
if b:cecutil_iwinposn < 1
unlet b:cecutil_iwinposn
endif
endif
else
echohl WarningMsg
echomsg "***warning*** need to SaveWinPosn first!"
echohl None
endif
else " handle input argument
" call Decho("using input a:1<".a:1.">")
" use window position passed to this function
exe "silent ".a:1
" remove a:1 pattern from b:cecutil_winposn{b:cecutil_iwinposn} stack
if exists("b:cecutil_iwinposn")
let jwinposn= b:cecutil_iwinposn
while jwinposn >= 1 " search for a:1 in iwinposn..1
if exists("b:cecutil_winposn{jwinposn}") " if it exists
if a:1 == b:cecutil_winposn{jwinposn} " and the pattern matches
unlet b:cecutil_winposn{jwinposn} " unlet it
if jwinposn == b:cecutil_iwinposn " if at top-of-stack
let b:cecutil_iwinposn= b:cecutil_iwinposn - 1 " drop stacktop by one
endif
endif
endif
let jwinposn= jwinposn - 1
endwhile
endif
endif
" Seems to be something odd: vertical motions after RWP
" cause jump to first column. The following fixes that.
" Note: was using wincol()>1, but with signs, a cursor
" at column 1 yields wincol()==3. Beeping ensued.
if virtcol('.') > 1
silent norm! hl
elseif virtcol(".") < virtcol("$")
silent norm! lh
endif
let &l:so = so_keep
let &l:siso = siso_keep
let &l:ss = ss_keep
" call Dret("RestoreWinPosn")
endfun
" ---------------------------------------------------------------------
" GoWinbufnr: go to window holding given buffer (by number) {{{2
" Prefers current window; if its buffer number doesn't match,
" then will try from topleft to bottom right
fun! GoWinbufnr(bufnum)
" call Dfunc("GoWinbufnr(".a:bufnum.")")
if winbufnr(0) == a:bufnum
" call Dret("GoWinbufnr : winbufnr(0)==a:bufnum")
return
endif
winc t
let first=1
while winbufnr(0) != a:bufnum && (first || winnr() != 1)
winc w
let first= 0
endwhile
" call Dret("GoWinbufnr")
endfun
" ---------------------------------------------------------------------
" SaveMark: sets up a string saving a mark position. {{{2
" For example, SaveMark("a")
" Also sets up a global variable, g:savemark_{markname}
fun! SaveMark(markname)
" call Dfunc("SaveMark(markname<".a:markname.">)")
let markname= a:markname
if strpart(markname,0,1) !~ '\a'
let markname= strpart(markname,1,1)
endif
" call Decho("markname=".markname)
let lzkeep = &lz
set lz
if 1 <= line("'".markname) && line("'".markname) <= line("$")
let winposn = SaveWinPosn(0)
exe s:modifier."norm! `".markname
let savemark = SaveWinPosn(0)
let g:savemark_{markname} = savemark
let savemark = markname.savemark
call RestoreWinPosn(winposn)
else
let g:savemark_{markname} = ""
let savemark = ""
endif
let &lz= lzkeep
" call Dret("SaveMark : savemark<".savemark.">")
return savemark
endfun
" ---------------------------------------------------------------------
" RestoreMark: {{{2
" call RestoreMark("a") -or- call RestoreMark(savemark)
fun! RestoreMark(markname)
" call Dfunc("RestoreMark(markname<".a:markname.">)")
if strlen(a:markname) <= 0
" call Dret("RestoreMark : no such mark")
return
endif
let markname= strpart(a:markname,0,1)
if markname !~ '\a'
" handles 'a -> a styles
let markname= strpart(a:markname,1,1)
endif
" call Decho("markname=".markname." strlen(a:markname)=".strlen(a:markname))
let lzkeep = &lz
set lz
let winposn = SaveWinPosn(0)
if strlen(a:markname) <= 2
if exists("g:savemark_{markname}") && strlen(g:savemark_{markname}) != 0
" use global variable g:savemark_{markname}
" call Decho("use savemark list")
call RestoreWinPosn(g:savemark_{markname})
exe "norm! m".markname
endif
else
" markname is a savemark command (string)
" call Decho("use savemark command")
let markcmd= strpart(a:markname,1)
call RestoreWinPosn(markcmd)
exe "norm! m".markname
endif
call RestoreWinPosn(winposn)
let &lz = lzkeep
" call Dret("RestoreMark")
endfun
" ---------------------------------------------------------------------
" DestroyMark: {{{2
" call DestroyMark("a") -- destroys mark
fun! DestroyMark(markname)
" call Dfunc("DestroyMark(markname<".a:markname.">)")
" save options and set to standard values
let reportkeep= &report
let lzkeep = &lz
set lz report=10000
let markname= strpart(a:markname,0,1)
if markname !~ '\a'
" handles 'a -> a styles
let markname= strpart(a:markname,1,1)
endif
" call Decho("markname=".markname)
let curmod = &mod
let winposn = SaveWinPosn(0)
1
let lineone = getline(".")
exe "k".markname
d
put! =lineone
let &mod = curmod
call RestoreWinPosn(winposn)
" restore options to user settings
let &report = reportkeep
let &lz = lzkeep
" call Dret("DestroyMark")
endfun
" ---------------------------------------------------------------------
" QArgSplitter: to avoid \ processing by <f-args>, <q-args> is needed. {{{2
" However, <q-args> doesn't split at all, so this one returns a list
" with splits at all whitespace (only!), plus a leading length-of-list.
" The resulting list: qarglist[0] corresponds to a:0
" qarglist[i] corresponds to a:{i}
fun! QArgSplitter(qarg)
" call Dfunc("QArgSplitter(qarg<".a:qarg.">)")
let qarglist = split(a:qarg)
let qarglistlen = len(qarglist)
let qarglist = insert(qarglist,qarglistlen)
" call Dret("QArgSplitter ".string(qarglist))
return qarglist
endfun
" ---------------------------------------------------------------------
" ListWinPosn: {{{2
"fun! ListWinPosn() " Decho
" if !exists("b:cecutil_iwinposn") || b:cecutil_iwinposn == 0 " Decho
" call Decho("nothing on SWP stack") " Decho
" else " Decho
" let jwinposn= b:cecutil_iwinposn " Decho
" while jwinposn >= 1 " Decho
" if exists("b:cecutil_winposn{jwinposn}") " Decho
" call Decho("winposn{".jwinposn."}<".b:cecutil_winposn{jwinposn}.">") " Decho
" else " Decho
" call Decho("winposn{".jwinposn."} -- doesn't exist") " Decho
" endif " Decho
" let jwinposn= jwinposn - 1 " Decho
" endwhile " Decho
" endif " Decho
"endfun " Decho
"com! -nargs=0 LWP call ListWinPosn() " Decho
" ---------------------------------------------------------------------
" SaveUserMaps: this function sets up a script-variable (s:restoremap) {{{2
" which can be used to restore user maps later with
" call RestoreUserMaps()
"
" mapmode - see :help maparg for details (n v o i c l "")
" ex. "n" = Normal
" The letters "b" and "u" are optional prefixes;
" The "u" means that the map will also be unmapped
" The "b" means that the map has a <buffer> qualifier
" ex. "un" = Normal + unmapping
" ex. "bn" = Normal + <buffer>
" ex. "bun" = Normal + <buffer> + unmapping
" ex. "ubn" = Normal + <buffer> + unmapping
" maplead - see mapchx
" mapchx - "<something>" handled as a single map item.
" ex. "<left>"
" - "string" a string of single letters which are actually
" multiple two-letter maps (using the maplead:
" maplead . each_character_in_string)
" ex. maplead="\" and mapchx="abc" saves user mappings for
" \a, \b, and \c
" Of course, if maplead is "", then for mapchx="abc",
" mappings for a, b, and c are saved.
" - :something handled as a single map item, w/o the ":"
" ex. mapchx= ":abc" will save a mapping for "abc"
" suffix - a string unique to your plugin
" ex. suffix= "DrawIt"
fun! SaveUserMaps(mapmode,maplead,mapchx,suffix)
" call Dfunc("SaveUserMaps(mapmode<".a:mapmode."> maplead<".a:maplead."> mapchx<".a:mapchx."> suffix<".a:suffix.">)")
if !exists("s:restoremap_{a:suffix}")
" initialize restoremap_suffix to null string
let s:restoremap_{a:suffix}= ""
endif
" set up dounmap: if 1, then save and unmap (a:mapmode leads with a "u")
" if 0, save only
let mapmode = a:mapmode
let dounmap = 0
let dobuffer = ""
while mapmode =~ '^[bu]'
if mapmode =~ '^u'
let dounmap= 1
let mapmode= strpart(a:mapmode,1)
elseif mapmode =~ '^b'
let dobuffer= "<buffer> "
let mapmode= strpart(a:mapmode,1)
endif
endwhile
" call Decho("dounmap=".dounmap." dobuffer<".dobuffer.">")
" save single map :...something...
if strpart(a:mapchx,0,1) == ':'
" call Decho("save single map :...something...")
let amap= strpart(a:mapchx,1)
if amap == "|" || amap == "\<c-v>"
let amap= "\<c-v>".amap
endif
let amap = a:maplead.amap
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:silent! ".mapmode."unmap ".dobuffer.amap
if maparg(amap,mapmode) != ""
let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:".mapmode."map ".dobuffer.amap." ".maprhs
endif
if dounmap
exe "silent! ".mapmode."unmap ".dobuffer.amap
endif
" save single map <something>
elseif strpart(a:mapchx,0,1) == '<'
" call Decho("save single map <something>")
let amap = a:mapchx
if amap == "|" || amap == "\<c-v>"
let amap= "\<c-v>".amap
" call Decho("amap[[".amap."]]")
endif
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".dobuffer.amap
if maparg(a:mapchx,mapmode) != ""
let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".amap." ".dobuffer.maprhs
endif
if dounmap
exe "silent! ".mapmode."unmap ".dobuffer.amap
endif
" save multiple maps
else
" call Decho("save multiple maps")
let i= 1
while i <= strlen(a:mapchx)
let amap= a:maplead.strpart(a:mapchx,i-1,1)
if amap == "|" || amap == "\<c-v>"
let amap= "\<c-v>".amap
endif
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".dobuffer.amap
if maparg(amap,mapmode) != ""
let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".amap." ".dobuffer.maprhs
endif
if dounmap
exe "silent! ".mapmode."unmap ".dobuffer.amap
endif
let i= i + 1
endwhile
endif
" call Dret("SaveUserMaps : restoremap_".a:suffix.": ".s:restoremap_{a:suffix})
endfun
" ---------------------------------------------------------------------
" RestoreUserMaps: {{{2
" Used to restore user maps saved by SaveUserMaps()
fun! RestoreUserMaps(suffix)
" call Dfunc("RestoreUserMaps(suffix<".a:suffix.">)")
if exists("s:restoremap_{a:suffix}")
let s:restoremap_{a:suffix}= substitute(s:restoremap_{a:suffix},'|\s*$','','e')
if s:restoremap_{a:suffix} != ""
" call Decho("exe ".s:restoremap_{a:suffix})
exe "silent! ".s:restoremap_{a:suffix}
endif
unlet s:restoremap_{a:suffix}
endif
" call Dret("RestoreUserMaps")
endfun
" ==============
" Restore: {{{1
" ==============
let &cpo= s:keepcpo
unlet s:keepcpo
" ================
" Modelines: {{{1
" ================
" vim: ts=4 fdm=marker

1573
vim/plugin/trac.py Normal file

File diff suppressed because it is too large Load Diff

511
vim/plugin/trac.vim Normal file
View File

@ -0,0 +1,511 @@
" Trac client: A interface to a Trac Wiki Repository
"
" Script Info and Documentation {{{
"=============================================================================
" Copyright: Copyright (C) 2008 Michael Brown
" License: The MIT License
"
" Permission is hereby granted, free of charge, to any person obtaining
" a copy of this software and associated documentation files
" (the "Software"), to deal in the Software without restriction,
" including without limitation the rights to use, copy, modify,
" merge, publish, distribute, sublicense, and/or sell copies of the
" Software, and to permit persons to whom the Software is furnished
" to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included
" in all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
" Name Of File: trac.vim , trac.py
" Description: Wiki Client to the Trac Project Manager (trac.edgewall.org)
" Maintainer: Michael Brown <michael <at> ascetinteractive.com>
" Contributors: Brad Fritz
" Last Change:
" URL:
" Version: 0.3.6
"
" Usage:
"
" You must have a working Trac repository version 0.10 or later
" complete with the xmlrpc plugin and a user with suitable
" access rights.
"
" To use the summary view you need to have the Align plugin
" installed for the layout.
"
" http://www.vim.org/scripts/script.php?script_id=294
"
" Fill in the server login details in the config section below.
"
" Defatult key mappings:
"
" <leader>to : Opens the Trac wiki view
" <leader>tq : Closes the Trac wiki View
" <leader>tw : Writes the Current Wiki Page (Uses default update
" Comment)
"
" or
"
" :TServer <server name - Sets the current trac Server
" (use tab complete)
" :TClose - Close VimTrac to the normal View
"
" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Trac Wiki Commands
"
" :TWOpen <WikiPage> - Open the wiki View
" :TWSave "<Comment>" - Saves the Active Wiki Page
"
" In the Wiki TOC View Pages can be loaded by hitting <enter>
"
" In the Wiki View Window a Page Will go to the wiki page if
" you hit ctrl+] but will throw an error if you arent on a
" proper link.
"
" Wikis can now be saved with :w and :wq.
" In all Trac windows :q will return to the normal view
"
" Wiki Syntax will work with this wiki syntax file
" http://www.vim.org/scripts/script.php?script_id=725
"
" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Trac Ticket Commands
"
" :TTOpen <Ticket ID> - Open Trac Ticket Browser
"
" Trac current ticket option modifications (use tab complete)
"
" :TTSetMilestone <Milestone>
" :TTSetType <Type
" :TTSetStatus <Status>
" :TTSetResolution <Resolution>
" :TTSetPriority <Priority >
" :TTSetSeverity <Severity >
" :TTSetComponent <Component>
" :TTSetSummary <Summary >
"
"
" :TTAddComment - Add the comment to the current
" ticket
"
"
" In the Ticket List window j and k jump to next ticket
" enter will select a ticket if it is hovering over a number
"
" Bugs:
"
" Ocassionally when a wiki page/ticket is loaded it will throw an error.
" Just try and load it again
"
" Please log any issues at http://www.ascetinteractive.com.au/vimtrac
"
" To Do:
" - Complete Error handling for missing Files/Trac Error States
" - Add a new Wiki Page Option
" - Improve the toc scrolling (highlight current line)
" - Improve Ticket Viewing option
" - Add support for multiple trac servers
"
"}}}
"Configuration
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Load trac.py either from the runtime directory (usually
" /usr/local/share/vim/vim71/plugin/ if you're running Vim 7.1) or from the
" home vim directory (usually ~/.vim/plugin/).
"
if g:tracServerList == {}
finish
endif
if !has("python")
call confirm('Trac.vim needs vim python 2.4.4 support. Wont load', 'OK')
finish
endif
if filereadable($VIMRUNTIME."/plugin/trac.py")
pyfile $VIMRUNTIME/plugin/trac.py
elseif filereadable($HOME."/.vim/plugin/trac.py")
pyfile $HOME/.vim/plugin/trac.py
else
call confirm('trac.vim: Unable to find trac.py. Place it in either your home vim directory or in the Vim runtime directory.', 'OK')
finish
endif
python import sys
python if sys.version_info[:3] < (2,4,4):vim.command('let g:tracPythonVersionFlag = 1')
if exists('g:tracPythonVersionFlag')
call confirm ( "Trac.vim requires python 2.4.4 or later to work correctly" )
finish
endif
if !exists('g:tracDefaultComment')
let g:tracDefaultComment = 'VimTrac update' " DEFAULT COMMENT CHANGE
endif
if !exists('g:tracHideTracWiki')
let g:tracHideTracWiki = 'yes' " SET TO yes/no IF YOU WANT TO HIDE
" ALL THE INTERNAL TRAC WIKI PAGES (^Wiki*/^Trac*)
endif
if !exists('g:tracTempHtml')
let g:tracTempHtml = '/tmp/trac_wiki.html'
endif
if !exists('g:tracSessionDirectory')
let g:tracSessionDirectory = expand ('$HOME') . '/.vimtrac_session'
endif
if !exists('g:tracBrowser')
let g:tracBrowser = 'lynx' " For Setting up Browser view (terminal)
"let g:tracBrowser = 'firefox' " For Setting up Browser view (linux gui - not tested)
"let g:tracBrowser = '"C:\Program Files\Mozilla Firefox\firefox.exe"' "GVim on Windows not tested
endif
if !exists('g:tracServerList')
let g:tracServerList = {}
"Add Server Repositories as Dictionary entries
let g:tracServerList['Vim Trac'] = 'http://vimtracuser:wibble@www.ascetinteractive.com.au/vimtrac/login/xmlrpc'
let g:tracServerList['(ServerName)'] = 'http://(User):(Pass)@(ServerPath)/login/xmlrpc'
endif
"This can be modified to speed up queries
if !exists('g:tracTicketClause')
let g:tracTicketClause = 'status!=closed'
endif
"Set this to 1 if you wan the ticket view to ignore attribute changes which
"can clutter up the view
"
if !exists('g:tracTicketBriefDescription')
let g:tracTicketBriefDescription = 1
endif
"Layouts can be modified here
if !exists('g:tracWikiStyle')
let g:tracWikiStyle = 'full' " 'bottom' 'top' 'full'
endif
if !exists('g:tracSearchStyle')
let g:tracSearchStyle = 'left' " 'right'
endif
if !exists('g:tracTimelineStyle')
let g:tracTimelineStyle = 'bottom' " 'left' 'right'
endif
" Ticket view styles note the summary style needs the Align plugin
if !exists('g:tracTicketStyle')
let g:tracTicketStyle = 'summary' " 'full' 'top' 'left' 'right' 'full'
endif
"Leader Short CUTS (Uncomment or add and customise to yout vimrc)
"Open Wiki
" map <leader>to :TWOpen<cr>
" Save Wiki
" map <leader>tw :TWSave<cr>
" Close wiki/ticket view
" map <leader>tq :TClose<cr>
" resize
" map <leader>tt :python trac_window_resize()<cr>
" preview window
" map <leader>tp :python trac_preview()<cr>
"
" map <leader>tp :python trac.ticket.summary_view()<cr>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"End Configuration
"
"
"Commmand Declarations
"
"NOTE: Due to the command list increasing as of version 0.3 of the plugin several command names
"have been renamed. The ':Trac' command prefix has been cut down to :T and the first inital of
"the module eg :TW... for TracWiki commands :TT... for Trac ticket commands
"
"The trac.py file no longer references these commands directly so you are free
"to change them if they clash with another plugin.
"
"WIKI MODULE COMMANDS
let g:tracDefaultView = 'wiki' " 'ticket' 'timeline'
com! -nargs=+ -complete=customlist,ComTracServers TWServer python trac.set_current_server (<q-args>)
com! -nargs=+ -complete=customlist,ComTracServers TTServer python trac.set_current_server (<q-args>, False, 'ticket')
com! -nargs=+ -complete=customlist,ComTracServers TTLServer python trac.set_current_server (<q-args>, False ,'timeline')
"QuickTicket Option (modify this command for your own servers) - Note Ticket #12
com! -nargs=+ TQTaskOnVimTrac python trac.ticket.create(<q-args> , 'task' , 'Vim Trac')
com! -nargs=+ TQDefectOnVimTrac python trac.ticket.create(<q-args> , 'defect' , 'Vim Trac')
com! -nargs=+ TQEnhanceOnVimTrac python trac.ticket.create(<q-args> , 'enhancement' , 'Vim Trac')
com! -nargs=? -complete=customlist,ComWiki TWOpen python trac.wiki_view (<f-args>)
fun LoadWikiCommands()
"NOTE: TWSave is referenced in trac.py
com! -nargs=* TWSave python trac.wiki.save(<q-args>)
com! -nargs=? TWCreate python trac.wiki_view (<f-args>, True)
com! -nargs=? -complete=customlist,ComAttachments TWGetAttachment python trac.get_attachment (<f-args>)
com! -nargs=? -complete=file TWAddAttachment python trac.add_attachment(<f-args>)
"HTML Preview/Dumps
com! -nargs=0 TWPreview python trac.preview(False)
com! -nargs=0 TWDump python trac.preview(True)
com! -nargs=? TWVimDiff python trac.wiki.vim_diff(<f-args>)
endfun
fun UnloadWikiCommands()
try
delc TWSave
delc TWCreate
delc TWGetAttachment
delc TWAddAttachment
delc TWPreview
delc TWDump
delc TWVimDiff
endtry
endfun
"TICKET MODULE COMMANDS
com! -nargs=? TTOpen python trac.ticket_view (<f-args>)
fun LoadTicketCommands()
"Trac Ticket modifications
com! -nargs=+ TTCreateTask python trac.ticket.create(<q-args>, 'task')
com! -nargs=+ TTCreateDefect python trac.ticket.create(<q-args>, 'defect')
com! -nargs=+ TTCreateEnhancement python trac.ticket.create(<q-args>, 'enhancement')
com! -nargs=0 TTAddComment python trac.ticket.add_comment()
"Ticket Attributes
com! -nargs=? -complete=customlist,ComMilestone TTSetMilestone python trac.ticket.set_attr(<f-args>, 'milestone' )
com! -nargs=? -complete=customlist,ComType TTSetType python trac.ticket.set_attr(<f-args>, 'type' )
com! -nargs=? -complete=customlist,ComStatus TTSetStatus python trac.ticket.set_attr(<f-args>, 'status' )
com! -nargs=? -complete=customlist,ComResolution TTSetResolution python trac.ticket.set_attr(<f-args>, 'resolution' )
com! -nargs=? -complete=customlist,ComPriority TTSetPriority python trac.ticket.set_attr(<f-args>, 'priority' )
com! -nargs=? -complete=customlist,ComSeverity TTSetSeverity python trac.ticket.set_attr(<f-args>, 'severity' )
com! -nargs=? -complete=customlist,ComComponent TTSetComponent python trac.ticket.set_attr(<f-args>, 'component' )
com! -nargs=? TTSetOwner python trac.ticket.set_attr(<f-args>, 'owner' )
com! -nargs=+ TTSetSummary python trac.ticket.set_summary(<q-args>)
com! -nargs=0 TTUpdateDescrption python trac.ticket.update_description()
com! -nargs=? -complete=customlist,ComMilestone TTFilterMilestone python trac.ticket.filter.add(<f-args>, 'milestone' )
com! -nargs=? -complete=customlist,ComType TTFilterType python trac.ticket.filter.add(<f-args>, 'type' )
com! -nargs=? -complete=customlist,ComStatus TTFilterStatus python trac.ticket.filter.add(<f-args>, 'status' )
com! -nargs=? -complete=customlist,ComResolution TTFilterResolution python trac.ticket.filter.add(<f-args>, 'resolution' )
com! -nargs=? -complete=customlist,ComPriority TTFilterPriority python trac.ticket.filter.add(<f-args>, 'priority' )
com! -nargs=? -complete=customlist,ComSeverity TTFilterSeverity python trac.ticket.filter.add(<f-args>, 'severity' )
com! -nargs=? -complete=customlist,ComComponent TTFilterComponent python trac.ticket.filter.add(<f-args>, 'component' )
com! -nargs=? TTFilterOwner python trac.ticket.filter.add(<f-args>, 'owner' )
com! -nargs=? -complete=customlist,ComMilestone TTFilterNoMilestone python trac.ticket.filter.add('', 'milestone' )
com! -nargs=? TTFilterNoOwner python trac.ticket.filter.add('', 'owner' )
com! -nargs=? -complete=customlist,ComMilestone TTIgnoreMilestone python trac.ticket.filter.add(<f-args>, 'milestone' ,False)
com! -nargs=? -complete=customlist,ComType TTIgnoreType python trac.ticket.filter.add(<f-args>, 'type' ,False)
com! -nargs=? -complete=customlist,ComStatus TTIgnoreStatus python trac.ticket.filter.add(<f-args>, 'status' ,False)
com! -nargs=? -complete=customlist,ComResolution TTIgnoreResolution python trac.ticket.filter.add(<f-args>, 'resolution' ,False)
com! -nargs=? -complete=customlist,ComPriority TTIgnorePriority python trac.ticket.filter.add(<f-args>, 'priority' ,False)
com! -nargs=? -complete=customlist,ComSeverity TTIgnoreSeverity python trac.ticket.filter.add(<f-args>, 'severity' ,False)
com! -nargs=? -complete=customlist,ComComponent TTIgnoreComponent python trac.ticket.filter.add(<f-args>, 'component' ,False)
com! -nargs=? TTIgnoreOwner python trac.ticket.filter.add(<f-args>, 'owner' ,False)
com! -nargs=? -complete=customlist,ComMilestone TTIgnoreNoMilestone python trac.ticket.filter.add('', 'milestone' ,False)
com! -nargs=? TTIgnoreNoOwner python trac.ticket.filter.add('', 'owner' ,False)
com! -nargs=0 TTClearAllFilters python trac.ticket.filter.clear()
com! -nargs=* TTClearFilter python trac.ticket.filter.delete(<f-args>)
com! -nargs=* TTListFilters python trac.ticket.filter.list()
"Ticket Sorting
com! -nargs=? -complete=customlist,ComSort TTSortby python trac.ticket.sort.set_sortby(<f-args>)
"Ticket Attachments
com! -nargs=? -complete=customlist,ComAttachments TTGetAttachment python trac.get_attachment (<f-args>)
com! -nargs=? -complete=file TTAddAttachment python trac.add_attachment(<f-args>)
"Html Preview
com! -nargs=0 TTPreview python trac.preview()
com! -nargs=0 TTLoadTicketSession python trac.ticket.session_load()
com! -nargs=0 TTSaveTicketSession python trac.ticket.session_save()
com! -nargs=? -complete=customlist,ComComponent TTSaveCompSession python trac.ticket.session_component_save(<q-args>)
com! -nargs=* -complete=customlist,ComComponent TTLoadCompSession python trac.ticket.session_component_load(<q-args>)
"Ticket resolution
com! -nargs=* TTCloseTicket python trac.ticket.close_ticket(<q-args>)
com! -nargs=* TTResolveFixed python trac.ticket.resolve_ticket(<q-args>,'fixed')
com! -nargs=* TTResolveWontfix python trac.ticket.resolve_ticket(<q-args>,'wontfix')
com! -nargs=* TTResolveDuplicate python trac.ticket.resolve_ticket(<q-args>,'duplicate')
com! -nargs=* TTResolveInvalid python trac.ticket.resolve_ticket(<q-args>,'invalid')
com! -nargs=* TTResolveWorksForMe python trac.ticket.resolve_ticket(<q-args>,'worksforme')
endfun
fun UnloadTicketCommands()
"Trac Ticket modifications
try
delc TTCreateTask
delc TTCreateDefect
delc TTCreateEnhancement
delc TTAddComment
"Ticket Attributes
delc TTSetMilestone
delc TTSetStatus
delc TTSetType
delc TTSetResolution
delc TTSetPriority
delc TTSetSeverity
delc TTSetComponent
delc TTSetOwner
delc TTSetSummary
delc TTUpdateDescrption
delc TTFilterMilestone
delc TTFilterType
delc TTFilterStatus
delc TTFilterResolution
delc TTFilterPriority
delc TTFilterSeverity
delc TTFilterComponent
delc TTFilterOwner
delc TTClearFilter
delc TTClearAllFilters
delc TTSortby
delc TTIgnoreMilestone
delc TTIgnoreType
delc TTIgnoreStatus
delc TTIgnoreResolution
delc TTIgnorePriority
delc TTIgnoreSeverity
delc TTIgnoreComponent
delc TTIgnoreOwner
delc TTIgnoreNoMilestone
delc TTIgnoreNoOwner
"Ticket Attachments
delc TTGetAttachment
delc TTAddAttachment
"Html Preview
delc TTPreview
delc TTLoadTicketSession
delc TTSaveTicketSession
delc TTCloseTicket
delc TTListFilters
delc TTFilterNoMilestone
delc TTFilterNoOwner
"resolution
delc TTResolveFixed
delc TTResolveWontfix
delc TTResolveDuplicate
delc TTResolveInvalid
delc TTResolveWorksForMe
endtry
endfun
"MISCELLANEOUS
com! -nargs=+ TSearch python trac.search_view(<q-args>)
com! -nargs=1 TChangesetOpen python trac.changeset_view(<f-args>, True)
com! -nargs=0 TTimelineOpen python trac.timeline_view()
com! -nargs=0 TClose python trac.normal_view(<f-args>)
"FUNCTION COMPLETES
fun ComTracServers (A,L,P)
return filter (keys(g:tracServerList), 'v:val =~ "^'.a:A.'"')
endfun
let g:tracOptions = 1
fun ComAttachments (A,L,P)
python trac.list_attachments()
return filter (split (g:tracOptions, '|' ), 'v:val =~ "^' . a:A . '"')
endfun
fun ComWiki (A,L,P)
python trac.wiki.get_options()
return filter (split (g:tracOptions, '|' ), 'v:val =~ "^' . a:A . '"')
endfun
"COMMAND COMPLETES
fun ComMilestone (A,L,P)
python trac.ticket.get_options(0)
return filter (split (g:tracOptions, '|' ), 'v:val =~ "^' . a:A . '"')
endfun
fun ComType (A,L,P)
python trac.ticket.get_options(1)
return filter (split (g:tracOptions, '|' ), 'v:val =~ "^' . a:A . '"')
endfun
fun ComStatus (A,L,P)
python trac.ticket.get_options(2)
return filter (split (g:tracOptions, '|' ), 'v:val =~ "^' . a:A . '"')
endfun
fun ComResolution (A,L,P)
python trac.ticket.get_options(3)
return filter (split (g:tracOptions, '|' ), 'v:val =~ "^' . a:A . '"')
endfun
fun ComPriority (A,L,P)
python trac.ticket.get_options(4)
return filter (split (g:tracOptions, '|' ), 'v:val =~ "^' . a:A . '"')
endfun
fun ComSeverity (A,L,P)
python trac.ticket.get_options(5)
return filter (split (g:tracOptions, '|' ), 'v:val =~ "^' . a:A . '"')
endfun
fun ComComponent (A,L,P)
python trac.ticket.get_options(6)
return filter (split (g:tracOptions, '|' ), 'v:val =~ "^' . a:A . '"')
endfun
fun ComSort (A,L,P)
return filter (['priority','milestone'], 'v:val =~ "^' . a:A . '"')
endfun
"Callback Function for Minibufexplorer et al windows that dont like being
"closed by the :only command
"TODO add other common plugins that may be affected
"see OpenCloseCallbacks in the wiki
fun TracOpenViewCallback()
try
CMiniBufExplorer
catch
return 0
endt
return 1
endfun
fun TracCloseViewCallback()
try
MiniBufExplorer
catch
return 0
endt
return 1
endfun
python trac_init()

77
vim/syntax/wiki.vim Normal file
View File

@ -0,0 +1,77 @@
" Vim syntax file
" Language: wiki
" Maintainer: Andreas Kneib <aporia@web.de>
" Improved By: Mathias Panzenböck <grosser.meister.morti@gmx.at>
" Last Change: 2003 Aug 05
" Little syntax file to use a wiki-editor with VIM
" (if your browser allow this action)
" To use this syntax file:
" 1. mkdir ~/.vim/syntax
" 2. mv ~/wiki.vim ~/.vim/syntax/wiki.vim
" 3. :set syntax=wiki
"
" Quit if syntax file is already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
if version < 508
command! -nargs=+ WikiHiLink hi link <args>
else
command! -nargs=+ WikiHiLink hi def link <args>
endif
syn match wikiWord "\<[A-Z][^A-Z ]\+[A-Z][^A-Z ][^A-Z ]*\>"
syn match wikiLine "^----$"
syn region wikiLink start=+\[+hs=s+1 end=+\]+he=e-1
"" This RegEx don't work very well. But I'm to clueless, to make it better. ;)
"syn region wikiExtLink start=+\([^\[]\|^\)\[[^\[]+hs=s+1 end=+[^\]]\]\([^\]\|$]\)+he=e-1
"syn region wikiLink start=+\([^\[]\|^\)\[\[[^\[]+hs=s+1 end=+[^\]]\]\]\([^\]\|$]\)+he=e-1
syn match wikiStar "[*]"
syn region wikiCurly start="{\{3\}" end="}\{3\}"
syn region wikiHead start="^= " end="[=] *"
syn region wikiSubhead start="^== " end="==[ ]*"
syn match wikiCurlyError "}"
syn region wikiBold start=+'''+ end=+'''+ contains=wikiBoldItalic
syn region wikiBoldItalic contained start=+\([^']\|^\)''[^']+ end=+[^']''\([^']\|$\)+
syn region wikiItalic start=+\([^']\|^\)''[^']+hs=s+1 end=+[^']''\([^']\|$\)+he=e-1 contains=wikiItalicBold
syn region wikiItalicBold contained start=+'''+ end=+'''+
" The default highlighting.
if version >= 508 || !exists("did_wiki_syn_inits")
if version < 508
let did_wiki_syn_inits = 1
endif
WikiHiLink wikiCurlyError Error
WikiHiLink wikiHead Type
WikiHiLink wikiSubhead PreProc
WikiHiLink wikiCurly Statement
WikiHiLink wikiStar String
WikiHiLink wikiExtLink Special
WikiHiLink wikiLink Special
WikiHiLink wikiLine PreProc
WikiHiLink wikiWord Keyword
hi def wikiBold term=bold cterm=bold gui=bold
hi def wikiBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
hi def wikiItalic term=italic cterm=italic gui=italic
hi def wikiItalicBold term=bold,italic cterm=bold,italic gui=bold,italic
endif
delcommand WikiHiLink
let b:current_syntax = "wiki"
"EOF vim: tw=78:ft=vim:ts=8

View File

@ -23,8 +23,8 @@ set shiftwidth=4
set smarttab set smarttab
set expandtab set expandtab
set softtabstop=4 set softtabstop=4
set autoindent " set autoindent
set smartindent " set smartindent
" For highlighted numbers: " For highlighted numbers:
let python_highlight_numbers = 1 let python_highlight_numbers = 1
@ -93,7 +93,6 @@ function! CleverTab()
inoremap <Tab> <C-R>=CleverTab()<CR> inoremap <Tab> <C-R>=CleverTab()<CR>
set completeopt=longest set completeopt=longest
" Emacs like indenting. Pressing Tab indents line " Emacs like indenting. Pressing Tab indents line
" Not in python, there it is managed by GetPythonIndent " Not in python, there it is managed by GetPythonIndent
set indentkeys=0{,0},0),:,0#,!^F,o,O,e,!<Tab>,!^F set indentkeys=0{,0},0),:,0#,!^F,o,O,e,!<Tab>,!^F