GetLatestVimScripts
git-svn-id: https://vimsuite.svn.sourceforge.net/svnroot/vimsuite/trunk@223 eb2d0018-73a3-4aeb-bfe9-1def61c9ec69
This commit is contained in:
parent
9221e87eef
commit
c5e36fcdd2
@ -8,7 +8,7 @@ ScriptID SourceID Filename
|
|||||||
862 2635 cscope_quickfix.vim
|
862 2635 cscope_quickfix.vim
|
||||||
51 171 cscope_macros.vim
|
51 171 cscope_macros.vim
|
||||||
102 16171 DirDiff.vim
|
102 16171 DirDiff.vim
|
||||||
1189 8687 matrix.vim
|
1189 18650 matrix.vim
|
||||||
948 2878 Scons Compiler plugin
|
948 2878 Scons Compiler plugin
|
||||||
1709 6421 Scons Syntax file
|
1709 6421 Scons Syntax file
|
||||||
1772 7248 DAMOS.zip DAMOS tools (von Stefan)
|
1772 7248 DAMOS.zip DAMOS tools (von Stefan)
|
||||||
@ -23,7 +23,7 @@ ScriptID SourceID Filename
|
|||||||
39 8196 matchit.vim
|
39 8196 matchit.vim
|
||||||
2092 8095 reloaded.vim (matrix colorscheme)
|
2092 8095 reloaded.vim (matrix colorscheme)
|
||||||
848 14668 SrchRplcHiGrp.vim (Search/Replace on Syntax Group)
|
848 14668 SrchRplcHiGrp.vim (Search/Replace on Syntax Group)
|
||||||
294 10110 Align.vim
|
294 18148 Align.vim
|
||||||
479 9276 MultipleSearch.vba
|
479 9276 MultipleSearch.vba
|
||||||
1066 7618 cecutil.vim
|
1066 7618 cecutil.vim
|
||||||
1173 17289 tComment.vim
|
1173 17289 tComment.vim
|
||||||
@ -32,6 +32,6 @@ ScriptID SourceID Filename
|
|||||||
642 15781 :AutoInstall: getscript.vim
|
642 15781 :AutoInstall: getscript.vim
|
||||||
1075 15782 :AutoInstall: netrw.vim
|
1075 15782 :AutoInstall: netrw.vim
|
||||||
1502 15362 :AutoInstall: vimball.vim
|
1502 15362 :AutoInstall: vimball.vim
|
||||||
3304 17406 Gundo
|
3304 18081 Gundo
|
||||||
90 17031 vcscommand
|
90 17031 vcscommand
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
" Align: tool to align multiple fields based on one or more separators
|
" Align: tool to align multiple fields based on one or more separators
|
||||||
" Author: Charles E. Campbell, Jr.
|
" Author: Charles E. Campbell, Jr.
|
||||||
" Date: Mar 03, 2009
|
" Date: Jun 18, 2012
|
||||||
" Version: 35
|
" Version: 36
|
||||||
" GetLatestVimScripts: 294 1 :AutoInstall: Align.vim
|
" GetLatestVimScripts: 294 1 :AutoInstall: Align.vim
|
||||||
" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
|
" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
|
||||||
" Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
|
" Copyright: Copyright (C) 1999-2012 Charles E. Campbell, Jr. {{{1
|
||||||
" Permission is hereby granted to use and distribute this code,
|
" Permission is hereby granted to use and distribute this code,
|
||||||
" with or without modifications, provided that this copyright
|
" with or without modifications, provided that this copyright
|
||||||
" notice is copied with it. Like anything else that's free,
|
" notice is copied with it. Like anything else that's free,
|
||||||
@ -18,13 +18,14 @@
|
|||||||
" the power of God for salvation for everyone who believes; for the Jew first,
|
" 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
|
" and also for the Greek. For in it is revealed God's righteousness from
|
||||||
" faith to faith.
|
" faith to faith.
|
||||||
|
"redraw!|call DechoSep()|call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||||
|
|
||||||
" ---------------------------------------------------------------------
|
" ---------------------------------------------------------------------
|
||||||
" Load Once: {{{1
|
" Load Once: {{{1
|
||||||
if exists("g:loaded_Align") || &cp
|
if exists("g:loaded_Align") || &cp
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let g:loaded_Align = "v35"
|
let g:loaded_Align = "v36"
|
||||||
if v:version < 700
|
if v:version < 700
|
||||||
echohl WarningMsg
|
echohl WarningMsg
|
||||||
echo "***warning*** this version of Align needs vim 7.0"
|
echo "***warning*** this version of Align needs vim 7.0"
|
||||||
@ -84,14 +85,13 @@ endif
|
|||||||
" | s:AlignSep
|
" | s:AlignSep
|
||||||
fun! Align#AlignCtrl(...)
|
fun! Align#AlignCtrl(...)
|
||||||
|
|
||||||
" call Dfunc("AlignCtrl(...) a:0=".a:0)
|
" call Dfunc("Align#AlignCtrl(...) a:0=".a:0)
|
||||||
|
|
||||||
" save options that will be changed
|
" save options that may be changed later
|
||||||
let keep_search = @/
|
call s:SaveUserOptions()
|
||||||
let keep_ic = &ic
|
|
||||||
|
|
||||||
" turn ignorecase off
|
" turn ignorecase off
|
||||||
set noic
|
setlocal noic
|
||||||
|
|
||||||
" clear visual mode so that old visual-mode selections don't
|
" clear visual mode so that old visual-mode selections don't
|
||||||
" get applied to new invocations of Align().
|
" get applied to new invocations of Align().
|
||||||
@ -121,19 +121,20 @@ fun! Align#AlignCtrl(...)
|
|||||||
let ipat= 2
|
let ipat= 2
|
||||||
while ipat <= A[0]
|
while ipat <= A[0]
|
||||||
if "" =~ A[ipat]
|
if "" =~ A[ipat]
|
||||||
echoerr "AlignCtrl: separator<".A[ipat]."> matches zero-length string"
|
echoerr "(AlignCtrl) separator<".A[ipat]."> matches zero-length string"
|
||||||
let &ic= keep_ic
|
call s:RestoreUserOptions()
|
||||||
" call Dret("AlignCtrl")
|
" call Dret("Align#AlignCtrl")
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
let ipat= ipat + 1
|
let ipat= ipat + 1
|
||||||
endwhile
|
endwhile
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
" call Decho("(AlignCtrl) passed bad-separator pattern check (no zero-length matches)")
|
||||||
|
|
||||||
" call Decho("AlignCtrl() A[0]=".A[0])
|
" call Decho("(AlignCtrl) A[0]=".A[0])
|
||||||
if !exists("s:AlignStyle")
|
if !exists("s:AlignStyle")
|
||||||
let s:AlignStyle= "l"
|
let s:AlignStyle= 'l'
|
||||||
endif
|
endif
|
||||||
if !exists("s:AlignPrePad")
|
if !exists("s:AlignPrePad")
|
||||||
let s:AlignPrePad= 0
|
let s:AlignPrePad= 0
|
||||||
@ -153,7 +154,7 @@ fun! Align#AlignCtrl(...)
|
|||||||
let s:AlignPatQty= 0
|
let s:AlignPatQty= 0
|
||||||
endif
|
endif
|
||||||
echo "AlignCtrl<".s:AlignCtrl."> qty=".s:AlignPatQty." AlignStyle<".s:AlignStyle."> Padding<".s:AlignPrePad."|".s:AlignPostPad."> LeadingWS=".s:AlignLeadKeep." AlignSep=".s:AlignSep
|
echo "AlignCtrl<".s:AlignCtrl."> qty=".s:AlignPatQty." AlignStyle<".s:AlignStyle."> Padding<".s:AlignPrePad."|".s:AlignPostPad."> LeadingWS=".s:AlignLeadKeep." AlignSep=".s:AlignSep
|
||||||
" call Decho("AlignCtrl<".s:AlignCtrl."> qty=".s:AlignPatQty." AlignStyle<".s:AlignStyle."> Padding<".s:AlignPrePad."|".s:AlignPostPad."> LeadingWS=".s:AlignLeadKeep." AlignSep=".s:AlignSep)
|
" call Decho("(AlignCtrl) AlignCtrl<".s:AlignCtrl."> qty=".s:AlignPatQty." AlignStyle<".s:AlignStyle."> Padding<".s:AlignPrePad."|".s:AlignPostPad."> LeadingWS=".s:AlignLeadKeep." AlignSep=".s:AlignSep)
|
||||||
if exists("s:AlignGPat") && !exists("s:AlignVPat")
|
if exists("s:AlignGPat") && !exists("s:AlignVPat")
|
||||||
echo "AlignGPat<".s:AlignGPat.">"
|
echo "AlignGPat<".s:AlignGPat.">"
|
||||||
elseif !exists("s:AlignGPat") && exists("s:AlignVPat")
|
elseif !exists("s:AlignGPat") && exists("s:AlignVPat")
|
||||||
@ -164,7 +165,7 @@ fun! Align#AlignCtrl(...)
|
|||||||
let ipat= 1
|
let ipat= 1
|
||||||
while ipat <= s:AlignPatQty
|
while ipat <= s:AlignPatQty
|
||||||
echo "Pat".ipat."<".s:AlignPat_{ipat}.">"
|
echo "Pat".ipat."<".s:AlignPat_{ipat}.">"
|
||||||
" call Decho("Pat".ipat."<".s:AlignPat_{ipat}.">")
|
" call Decho("(AlignCtrl) Pat".ipat."<".s:AlignPat_{ipat}.">")
|
||||||
let ipat= ipat + 1
|
let ipat= ipat + 1
|
||||||
endwhile
|
endwhile
|
||||||
|
|
||||||
@ -190,9 +191,8 @@ fun! Align#AlignCtrl(...)
|
|||||||
call Align#AlignCtrl("g")
|
call Align#AlignCtrl("g")
|
||||||
call Align#AlignCtrl("v")
|
call Align#AlignCtrl("v")
|
||||||
let s:dovisclear = 1
|
let s:dovisclear = 1
|
||||||
let &ic = keep_ic
|
call s:RestoreUserOptions()
|
||||||
let @/ = keep_search
|
" call Dret("Align#AlignCtrl")
|
||||||
" call Dret("AlignCtrl")
|
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -205,7 +205,7 @@ fun! Align#AlignCtrl(...)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
" = : record a list of alignment patterns that are equivalent
|
" = : record a list of alignment patterns that are equivalent
|
||||||
if style =~# "="
|
if style =~# "=" || (A[0] >= 2 && style !~# "C" && s:AlignCtrl =~# '=')
|
||||||
" call Decho("style case =: record list of equiv alignment patterns")
|
" call Decho("style case =: record list of equiv alignment patterns")
|
||||||
let s:AlignCtrl = '='
|
let s:AlignCtrl = '='
|
||||||
if A[0] >= 2
|
if A[0] >= 2
|
||||||
@ -221,7 +221,7 @@ fun! Align#AlignCtrl(...)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
"c : cycle through alignment pattern(s)
|
"c : cycle through alignment pattern(s)
|
||||||
elseif style =~# 'C'
|
elseif style =~# 'C' || (A[0] >= 2 && s:AlignCtrl =~# '=')
|
||||||
" call Decho("style case C: cycle through alignment pattern(s)")
|
" call Decho("style case C: cycle through alignment pattern(s)")
|
||||||
let s:AlignCtrl = 'C'
|
let s:AlignCtrl = 'C'
|
||||||
if A[0] >= 2
|
if A[0] >= 2
|
||||||
@ -239,10 +239,9 @@ fun! Align#AlignCtrl(...)
|
|||||||
let s:AlignPrePad= substitute(style,'^.*p\(\d\+\).*$','\1','')
|
let s:AlignPrePad= substitute(style,'^.*p\(\d\+\).*$','\1','')
|
||||||
" call Decho("style case p".s:AlignPrePad.": pre-separator padding")
|
" call Decho("style case p".s:AlignPrePad.": pre-separator padding")
|
||||||
if s:AlignPrePad == ""
|
if s:AlignPrePad == ""
|
||||||
echoerr "AlignCtrl: 'p' needs to be followed by a numeric argument'
|
echoerr "(AlignCtrl) 'p' needs to be followed by a numeric argument'"
|
||||||
let @/ = keep_search
|
call s:RestoreUserOptions()
|
||||||
let &ic= keep_ic
|
" call Dret("Align#AlignCtrl")
|
||||||
" call Dret("AlignCtrl")
|
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -251,10 +250,9 @@ fun! Align#AlignCtrl(...)
|
|||||||
let s:AlignPostPad= substitute(style,'^.*P\(\d\+\).*$','\1','')
|
let s:AlignPostPad= substitute(style,'^.*P\(\d\+\).*$','\1','')
|
||||||
" call Decho("style case P".s:AlignPostPad.": post-separator padding")
|
" call Decho("style case P".s:AlignPostPad.": post-separator padding")
|
||||||
if s:AlignPostPad == ""
|
if s:AlignPostPad == ""
|
||||||
echoerr "AlignCtrl: 'P' needs to be followed by a numeric argument'
|
echoerr "(AlignCtrl) 'P' needs to be followed by a numeric argument'"
|
||||||
let @/ = keep_search
|
call s:RestoreUserOptions()
|
||||||
let &ic= keep_ic
|
" call Dret("Align#AlignCtrl")
|
||||||
" call Dret("AlignCtrl")
|
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -263,10 +261,10 @@ fun! Align#AlignCtrl(...)
|
|||||||
" call Decho("style case w: ignore leading whitespace")
|
" call Decho("style case w: ignore leading whitespace")
|
||||||
let s:AlignLeadKeep= 'w'
|
let s:AlignLeadKeep= 'w'
|
||||||
elseif style =~# 'W'
|
elseif style =~# 'W'
|
||||||
" call Decho("style case w: keep leading whitespace")
|
" call Decho("style case W: keep leading whitespace")
|
||||||
let s:AlignLeadKeep= 'W'
|
let s:AlignLeadKeep= 'W'
|
||||||
elseif style =~# 'I'
|
elseif style =~# 'I'
|
||||||
" call Decho("style case w: retain initial leading whitespace")
|
" call Decho("style case I: retain initial leading whitespace")
|
||||||
let s:AlignLeadKeep= 'I'
|
let s:AlignLeadKeep= 'I'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -274,8 +272,8 @@ fun! Align#AlignCtrl(...)
|
|||||||
" first list item is a "g" selector pattern
|
" first list item is a "g" selector pattern
|
||||||
" call Decho("style case g: global selector pattern")
|
" call Decho("style case g: global selector pattern")
|
||||||
if A[0] < 2
|
if A[0] < 2
|
||||||
if exists("s:AlignGPat")
|
if exists("s:AlignVPat")
|
||||||
unlet s:AlignGPat
|
unlet s:AlignVPat
|
||||||
" call Decho("unlet s:AlignGPat")
|
" call Decho("unlet s:AlignGPat")
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
@ -286,8 +284,8 @@ fun! Align#AlignCtrl(...)
|
|||||||
" first list item is a "v" selector pattern
|
" first list item is a "v" selector pattern
|
||||||
" call Decho("style case v: global selector anti-pattern")
|
" call Decho("style case v: global selector anti-pattern")
|
||||||
if A[0] < 2
|
if A[0] < 2
|
||||||
if exists("s:AlignVPat")
|
if exists("s:AlignGPat")
|
||||||
unlet s:AlignVPat
|
unlet s:AlignGPat
|
||||||
" call Decho("unlet s:AlignVPat")
|
" call Decho("unlet s:AlignVPat")
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
@ -297,9 +295,9 @@ fun! Align#AlignCtrl(...)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
"[-lrc+:] : set up s:AlignStyle
|
"[-lrc+:] : set up s:AlignStyle
|
||||||
if style =~# '[-lrc+:]'
|
if style =~# '[-lrc+:*]'
|
||||||
" call Decho("style case [-lrc+:]: field justification")
|
" call Decho("style case [-lrc+:]: field justification")
|
||||||
let s:AlignStyle= substitute(style,'[^-lrc:+]','','g')
|
let s:AlignStyle= substitute(style,'[^-lrc:+*]','','g')
|
||||||
" call Decho("AlignStyle<".s:AlignStyle.">")
|
" call Decho("AlignStyle<".s:AlignStyle.">")
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -316,11 +314,9 @@ fun! Align#AlignCtrl(...)
|
|||||||
let s:AlignCtrl= '='
|
let s:AlignCtrl= '='
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" restore search and options
|
" restore options and return
|
||||||
let @/ = keep_search
|
call s:RestoreUserOptions()
|
||||||
let &ic= keep_ic
|
" call Dret("Align#AlignCtrl ".s:AlignCtrl.'p'.s:AlignPrePad.'P'.s:AlignPostPad.s:AlignLeadKeep.s:AlignStyle)
|
||||||
|
|
||||||
" call Dret("AlignCtrl ".s:AlignCtrl.'p'.s:AlignPrePad.'P'.s:AlignPostPad.s:AlignLeadKeep.s:AlignStyle)
|
|
||||||
return s:AlignCtrl.'p'.s:AlignPrePad.'P'.s:AlignPostPad.s:AlignLeadKeep.s:AlignStyle
|
return s:AlignCtrl.'p'.s:AlignPrePad.'P'.s:AlignPostPad.s:AlignLeadKeep.s:AlignStyle
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
@ -355,6 +351,9 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" save user options
|
||||||
|
call s:SaveUserOptions()
|
||||||
|
|
||||||
" set up a list akin to an argument list
|
" set up a list akin to an argument list
|
||||||
if a:0 > 0
|
if a:0 > 0
|
||||||
let A= s:QArgSplitter(a:1)
|
let A= s:QArgSplitter(a:1)
|
||||||
@ -384,7 +383,8 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
let ipat= 1 + hasctrl
|
let ipat= 1 + hasctrl
|
||||||
while ipat <= A[0]
|
while ipat <= A[0]
|
||||||
if "" =~ A[ipat]
|
if "" =~ A[ipat]
|
||||||
echoerr "Align: separator<".A[ipat]."> matches zero-length string"
|
echoerr "(Align) separator<".A[ipat]."> matches zero-length string"
|
||||||
|
call s:RestoreUserOptions()
|
||||||
" call Dret("Align#Align")
|
" call Dret("Align#Align")
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
@ -392,10 +392,8 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
endwhile
|
endwhile
|
||||||
|
|
||||||
" record current search pattern for subsequent restoration
|
" record current search pattern for subsequent restoration
|
||||||
let keep_search= @/
|
" (these are all global-only options)
|
||||||
let keep_ic = &ic
|
set noic report=10000 nohls
|
||||||
let keep_report= &report
|
|
||||||
set noic report=10000
|
|
||||||
|
|
||||||
if A[0] > hasctrl
|
if A[0] > hasctrl
|
||||||
" Align will accept a list of separator regexps
|
" Align will accept a list of separator regexps
|
||||||
@ -447,17 +445,32 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
let begline = a:lastline
|
let begline = a:lastline
|
||||||
let endline = a:firstline
|
let endline = a:firstline
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Expand range to cover align-able lines when the given range is only the current line.
|
||||||
|
" Look for the first line above the current line that matches the first separator pattern, and
|
||||||
|
" look for the last line below the current line that matches the first separator pattern.
|
||||||
|
if begline == endline
|
||||||
|
" call Decho("case begline == endline")
|
||||||
|
if !exists("s:AlignPat_{1}")
|
||||||
|
echohl Error|echo "(Align) no separators specified!"|echohl None
|
||||||
|
call s:RestoreUserOptions()
|
||||||
|
" call Dret("Align#Align")
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let seppat = s:AlignPat_{1}
|
||||||
|
let begline= search('^\%(\%('.seppat.'\)\@!.\)*$',"bnW")
|
||||||
|
if begline == 0|let begline= 1|else|let begline= begline + 1|endif
|
||||||
|
let endline= search('^\%(\%('.seppat.'\)\@!.\)*$',"nW")
|
||||||
|
if endline == 0|let endline= line("$")|else|let endline= endline - 1|endif
|
||||||
|
" call Decho("begline=".begline." endline=".endline." curline#".line("."))
|
||||||
|
endif
|
||||||
" call Decho("begline=".begline." endline=".endline)
|
" call Decho("begline=".begline." endline=".endline)
|
||||||
let fieldcnt = 0
|
let fieldcnt = 0
|
||||||
if (begline == line("'>") && endline == line("'<")) || (begline == line("'<") && endline == line("'>"))
|
if (begline == line("'>") && endline == line("'<")) || (begline == line("'<") && endline == line("'>"))
|
||||||
let vmode= visualmode()
|
let vmode= visualmode()
|
||||||
" call Decho("vmode=".vmode)
|
" call Decho("vmode=".vmode)
|
||||||
if vmode == "\<c-v>"
|
if vmode == "\<c-v>"
|
||||||
if exists("g:Align_xstrlen") && g:Align_xstrlen
|
let ragged = ( col("'>") > s:Strlen(getline("'>")) || col("'<") > s:Strlen(getline("'<")) )
|
||||||
let ragged = ( col("'>") > s:Strlen(getline("'>")) || col("'<") > s:Strlen(getline("'<")) )
|
|
||||||
else
|
|
||||||
let ragged = ( col("'>") > strlen(getline("'>")) || col("'<") > strlen(getline("'<")) )
|
|
||||||
endif
|
|
||||||
else
|
else
|
||||||
let ragged= 1
|
let ragged= 1
|
||||||
endif
|
endif
|
||||||
@ -469,10 +482,14 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
endif
|
endif
|
||||||
" call Decho("lines[".begline.",".endline."] col[".begcol.",".endcol."] ragged=".ragged." AlignCtrl<".s:AlignCtrl.">")
|
" call Decho("lines[".begline.",".endline."] col[".begcol.",".endcol."] ragged=".ragged." AlignCtrl<".s:AlignCtrl.">")
|
||||||
|
|
||||||
" Keep user options
|
" record initial whitespace
|
||||||
let etkeep = &l:et
|
if s:AlignLeadKeep == 'W'
|
||||||
let pastekeep= &l:paste
|
let wskeep = map(getline(begline,endline),"substitute(v:val,'^\\(\\s*\\).\\{-}$','\\1','')")
|
||||||
setlocal et paste
|
endif
|
||||||
|
|
||||||
|
" Align needs these options
|
||||||
|
setl et
|
||||||
|
set paste
|
||||||
|
|
||||||
" convert selected range of lines to use spaces instead of tabs
|
" convert selected range of lines to use spaces instead of tabs
|
||||||
" but if first line's initial white spaces are to be retained
|
" but if first line's initial white spaces are to be retained
|
||||||
@ -480,11 +497,30 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
if begcol <= 0 && s:AlignLeadKeep == 'I'
|
if begcol <= 0 && s:AlignLeadKeep == 'I'
|
||||||
" retain first leading whitespace for all subsequent lines
|
" retain first leading whitespace for all subsequent lines
|
||||||
let bgntxt= substitute(getline(begline),'^\(\s*\).\{-}$','\1','')
|
let bgntxt= substitute(getline(begline),'^\(\s*\).\{-}$','\1','')
|
||||||
|
|
||||||
|
" exception: retain first leading whitespace predicated on g and v patterns
|
||||||
|
" if such a selected line exists
|
||||||
|
if exists("s:AlignGPat")
|
||||||
|
let firstgline= search(s:AlignGPat,"cnW",endline)
|
||||||
|
if firstgline > 0
|
||||||
|
let bgntxt= substitute(getline(firstgline),'^\(\s*\).\{-}$','\1','')
|
||||||
|
endif
|
||||||
|
elseif exists("s:AlignVPat")
|
||||||
|
let firstvline= search(s:AlignVPat,"cnW",endline)
|
||||||
|
if firstvline > 0
|
||||||
|
let bgntxt= substitute('^\%(\%('.getline(firstvline).')\@!\)*$','^\(\s*\).\{-}$','\1','')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
" call Decho("retaining 1st leading whitespace: bgntxt<".bgntxt.">")
|
" call Decho("retaining 1st leading whitespace: bgntxt<".bgntxt.">")
|
||||||
set noet
|
let &l:et= s:keep_et
|
||||||
endif
|
endif
|
||||||
exe begline.",".endline."ret"
|
exe begline.",".endline."ret"
|
||||||
|
|
||||||
|
" record transformed to spaces leading whitespace
|
||||||
|
if s:AlignLeadKeep == 'W'
|
||||||
|
let wsblanks = map(getline(begline,endline),"substitute(v:val,'^\\(\\s*\\).\\{-}$','\\1','')")
|
||||||
|
endif
|
||||||
|
|
||||||
" Execute two passes
|
" Execute two passes
|
||||||
" First pass: collect alignment data (max field sizes)
|
" First pass: collect alignment data (max field sizes)
|
||||||
" Second pass: perform alignment
|
" Second pass: perform alignment
|
||||||
@ -528,11 +564,7 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
" Extract visual-block selected text (init bgntxt, endtxt)
|
" Extract visual-block selected text (init bgntxt, endtxt)
|
||||||
if exists("g:Align_xstrlen") && g:Align_xstrlen
|
|
||||||
let txtlen= s:Strlen(txt)
|
let txtlen= s:Strlen(txt)
|
||||||
else
|
|
||||||
let txtlen= strlen(txt)
|
|
||||||
endif
|
|
||||||
if begcol > 0
|
if begcol > 0
|
||||||
" Record text to left of selected area
|
" Record text to left of selected area
|
||||||
let bgntxt= strpart(txt,0,begcol)
|
let bgntxt= strpart(txt,0,begcol)
|
||||||
@ -557,7 +589,8 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
" call Decho("Pass".pass.": txt<". txt .">")
|
" call Decho("Pass".pass.": txt<". txt .">")
|
||||||
" call Decho("Pass".pass.": endtxt<".endtxt.">")
|
" call Decho("Pass".pass.": endtxt<".endtxt.">")
|
||||||
if !exists("s:AlignPat_{1}")
|
if !exists("s:AlignPat_{1}")
|
||||||
echohl Error|echo "no separators specified!"|echohl None
|
echohl Error|echo "(Align) no separators specified!"|echohl None
|
||||||
|
call s:RestoreUserOptions()
|
||||||
" call Dret("Align#Align")
|
" call Dret("Align#Align")
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
@ -575,7 +608,7 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
let alignpostpad= s:AlignPostPad
|
let alignpostpad= s:AlignPostPad
|
||||||
let alignsep = s:AlignSep
|
let alignsep = s:AlignSep
|
||||||
let alignophold = " "
|
let alignophold = " "
|
||||||
let alignop = "l"
|
let alignop = 'l'
|
||||||
" call Decho("Pass".pass.": initial alignstyle<".alignstyle."> seppat<".seppat.">")
|
" call Decho("Pass".pass.": initial alignstyle<".alignstyle."> seppat<".seppat.">")
|
||||||
|
|
||||||
" Process each field on the line
|
" Process each field on the line
|
||||||
@ -606,23 +639,41 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" cylic separator alignment specification handling
|
" cyclic separator alignment specification handling
|
||||||
let alignsepop= strpart(alignsep,0,1)
|
let alignsepop= strpart(alignsep,0,1)
|
||||||
let alignsep = strpart(alignsep,1).alignsepop
|
let alignsep = strpart(alignsep,1).alignsepop
|
||||||
|
|
||||||
|
" ------------------------------------------------------
|
||||||
" mark end-of-field and the subsequent end-of-separator.
|
" mark end-of-field and the subsequent end-of-separator.
|
||||||
" Extend field if alignop is '-'
|
" ------------------------------------------------------
|
||||||
let endfield = match(txt,seppat,bgnfield)
|
let endfield = match(txt,seppat,bgnfield)
|
||||||
let sepfield = matchend(txt,seppat,bgnfield)
|
let sepfield = matchend(txt,seppat,bgnfield)
|
||||||
let skipfield= sepfield
|
let skipfield= sepfield
|
||||||
" call Decho("Pass".pass.": endfield=match(txt<".txt.">,seppat<".seppat.">,bgnfield=".bgnfield.")=".endfield)
|
" call Decho("Pass".pass.": endfield=match(txt<".txt.">,seppat<".seppat.">,bgnfield=".bgnfield.")=".endfield." alignop=".alignop)
|
||||||
|
|
||||||
|
" Mark eof: Extend field if alignop is '*' and AlignSkip() is true.
|
||||||
|
if alignop == '*' && exists("g:AlignSkip") && type(g:AlignSkip) == 2
|
||||||
|
" call Decho("Pass".pass.": endfield=match(txt<".txt.">,seppat<".seppat.">,bgnfield=".bgnfield.")=".endfield." alignop=".alignop)
|
||||||
|
" a '*' acts like a '-' while the g:AlignSkip function reference is true except that alignop doesn't advance
|
||||||
|
while g:AlignSkip(line,endfield) && endfield != -1
|
||||||
|
let endfield = match(txt,seppat,skipfield)
|
||||||
|
let sepfield = matchend(txt,seppat,skipfield)
|
||||||
|
let skipfield = sepfield
|
||||||
|
" call Decho("Pass".pass.": extend field: endfield<".strpart(txt,bgnfield,endfield-bgnfield)."> alignop<".alignop."> alignstyle<".alignstyle.">")
|
||||||
|
endwhile
|
||||||
|
let alignop = strpart(alignstyle,0,1)
|
||||||
|
let alignstyle= strpart(alignstyle,1).strpart(alignstyle,0,1)
|
||||||
|
" call Decho("Pass".pass.": endfield=match(txt<".txt.">,seppat<".seppat.">,bgnfield=".bgnfield.")=".endfield." alignop=".alignop." (after *)")
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Mark eof: Extend field if alignop is '-'
|
||||||
while alignop == '-' && endfield != -1
|
while alignop == '-' && endfield != -1
|
||||||
let endfield = match(txt,seppat,skipfield)
|
let endfield = match(txt,seppat,skipfield)
|
||||||
let sepfield = matchend(txt,seppat,skipfield)
|
let sepfield = matchend(txt,seppat,skipfield)
|
||||||
let skipfield = sepfield
|
let skipfield = sepfield
|
||||||
let alignop = strpart(alignstyle,0,1)
|
let alignop = strpart(alignstyle,0,1)
|
||||||
let alignstyle= strpart(alignstyle,1).strpart(alignstyle,0,1)
|
let alignstyle= strpart(alignstyle,1).strpart(alignstyle,0,1)
|
||||||
" call Decho("Pass".pass.": extend field: endfield<".strpart(txt,bgnfield,endfield-bgnfield)."> alignop<".alignop."> alignstyle<".alignstyle.">")
|
" call Decho("Pass".pass.": extend field: endfield<".strpart(txt,bgnfield,endfield-bgnfield)."> alignop<".alignop."> alignstyle<".alignstyle.">")
|
||||||
endwhile
|
endwhile
|
||||||
let seplen= sepfield - endfield
|
let seplen= sepfield - endfield
|
||||||
" call Decho("Pass".pass.": seplen=[sepfield=".sepfield."] - [endfield=".endfield."]=".seplen)
|
" call Decho("Pass".pass.": seplen=[sepfield=".sepfield."] - [endfield=".endfield."]=".seplen)
|
||||||
@ -637,11 +688,7 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
let field = bgntxt.field
|
let field = bgntxt.field
|
||||||
let bgntxt= ""
|
let bgntxt= ""
|
||||||
endif
|
endif
|
||||||
if exists("g:Align_xstrlen") && g:Align_xstrlen
|
let fieldlen = s:Strlen(field)
|
||||||
let fieldlen = s:Strlen(field)
|
|
||||||
else
|
|
||||||
let fieldlen = strlen(field)
|
|
||||||
endif
|
|
||||||
let sFieldSize = "FieldSize_".ifield
|
let sFieldSize = "FieldSize_".ifield
|
||||||
if !exists(sFieldSize)
|
if !exists(sFieldSize)
|
||||||
let FieldSize_{ifield}= fieldlen
|
let FieldSize_{ifield}= fieldlen
|
||||||
@ -675,11 +722,7 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
let prepad = 0
|
let prepad = 0
|
||||||
let postpad= 0
|
let postpad= 0
|
||||||
endif
|
endif
|
||||||
if exists("g:Align_xstrlen") && g:Align_xstrlen
|
let fieldlen = s:Strlen(field)
|
||||||
let fieldlen = s:Strlen(field)
|
|
||||||
else
|
|
||||||
let fieldlen = strlen(field)
|
|
||||||
endif
|
|
||||||
let sep = s:MakeSpace(prepad).strpart(txt,endfield,sepfield-endfield).s:MakeSpace(postpad)
|
let sep = s:MakeSpace(prepad).strpart(txt,endfield,sepfield-endfield).s:MakeSpace(postpad)
|
||||||
if seplen < SepSize_{ifield}
|
if seplen < SepSize_{ifield}
|
||||||
if alignsepop == "<"
|
if alignsepop == "<"
|
||||||
@ -695,7 +738,7 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
let sep = s:MakeSpace(sepleft).sep.s:MakeSpace(sepright)
|
let sep = s:MakeSpace(sepleft).sep.s:MakeSpace(sepright)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
let spaces = FieldSize_{ifield} - fieldlen
|
let spaces = FieldSize_{ifield} - fieldlen
|
||||||
" call Decho("Pass".pass.": Field #".ifield."<".field."> spaces=".spaces." be[".bgnfield.",".endfield."] pad=".prepad.','.postpad." FS_".ifield."<".FieldSize_{ifield}."> sep<".sep."> ragged=".ragged." doend=".doend." alignop<".alignop.">")
|
" call Decho("Pass".pass.": Field #".ifield."<".field."> spaces=".spaces." be[".bgnfield.",".endfield."] pad=".prepad.','.postpad." FS_".ifield."<".FieldSize_{ifield}."> sep<".sep."> ragged=".ragged." doend=".doend." alignop<".alignop.">")
|
||||||
|
|
||||||
" Perform alignment according to alignment style justification
|
" Perform alignment according to alignment style justification
|
||||||
@ -746,7 +789,7 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
" call Decho("Pass".pass.": bgntxt<".bgntxt."> line=".line)
|
" call Decho("Pass".pass.": bgntxt<".bgntxt."> line=".line)
|
||||||
" call Decho("Pass".pass.": newtxt<".newtxt.">")
|
" call Decho("Pass".pass.": newtxt<".newtxt.">")
|
||||||
" call Decho("Pass".pass.": endtxt<".endtxt.">")
|
" call Decho("Pass".pass.": endtxt<".endtxt.">")
|
||||||
call setline(line,bgntxt.newtxt.endtxt)
|
keepj call setline(line,bgntxt.newtxt.endtxt)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let line = line + 1
|
let line = line + 1
|
||||||
@ -756,9 +799,18 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
endwhile " pass loop
|
endwhile " pass loop
|
||||||
" call Decho("end of two pass loop")
|
" call Decho("end of two pass loop")
|
||||||
|
|
||||||
" Restore user options
|
" restore original leading whitespace
|
||||||
let &l:et = etkeep
|
if s:AlignLeadKeep == 'W'
|
||||||
let &l:paste = pastekeep
|
let iline= begline
|
||||||
|
let i = 0
|
||||||
|
" call Decho("restore original leading whitespace")
|
||||||
|
while iline <= endline
|
||||||
|
" call Decho("exe ".iline."s/^".wsblanks[i]."/".wskeep[i]."/")
|
||||||
|
exe "keepj ".iline."s/^".wsblanks[i]."/".wskeep[i]."/"
|
||||||
|
let iline= iline + 1
|
||||||
|
let i = i + 1
|
||||||
|
endwhile
|
||||||
|
endif
|
||||||
|
|
||||||
if exists("s:DoAlignPop")
|
if exists("s:DoAlignPop")
|
||||||
" AlignCtrl Map support
|
" AlignCtrl Map support
|
||||||
@ -766,11 +818,8 @@ fun! Align#Align(hasctrl,...) range
|
|||||||
unlet s:DoAlignPop
|
unlet s:DoAlignPop
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" restore current search pattern
|
" restore user options and return
|
||||||
let @/ = keep_search
|
call s:RestoreUserOptions()
|
||||||
let &ic = keep_ic
|
|
||||||
let &report = keep_report
|
|
||||||
|
|
||||||
" call Dret("Align#Align")
|
" call Dret("Align#Align")
|
||||||
return
|
return
|
||||||
endfun
|
endfun
|
||||||
@ -778,7 +827,7 @@ endfun
|
|||||||
" ---------------------------------------------------------------------
|
" ---------------------------------------------------------------------
|
||||||
" Align#AlignPush: this command/function pushes an alignment control string onto a stack {{{1
|
" Align#AlignPush: this command/function pushes an alignment control string onto a stack {{{1
|
||||||
fun! Align#AlignPush()
|
fun! Align#AlignPush()
|
||||||
" call Dfunc("AlignPush()")
|
" call Dfunc("Align#AlignPush()")
|
||||||
|
|
||||||
" initialize the stack
|
" initialize the stack
|
||||||
if !exists("s:AlignCtrlStackQty")
|
if !exists("s:AlignCtrlStackQty")
|
||||||
@ -806,7 +855,7 @@ fun! Align#AlignPush()
|
|||||||
let s:AlignVPat_{s:AlignCtrlStackQty}= ""
|
let s:AlignVPat_{s:AlignCtrlStackQty}= ""
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" call Dret("AlignPush")
|
" call Dret("Align#AlignPush")
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
" ---------------------------------------------------------------------
|
" ---------------------------------------------------------------------
|
||||||
@ -817,13 +866,13 @@ fun! Align#AlignPop()
|
|||||||
|
|
||||||
" sanity checks
|
" sanity checks
|
||||||
if !exists("s:AlignCtrlStackQty")
|
if !exists("s:AlignCtrlStackQty")
|
||||||
echoerr "AlignPush needs to be used prior to AlignPop"
|
echoerr "(AlignPop) AlignPush needs to be used prior to AlignPop"
|
||||||
" call Dret("Align#AlignPop <> : AlignPush needs to have been called first")
|
" call Dret("Align#AlignPop <> : AlignPush needs to have been called first")
|
||||||
return ""
|
return ""
|
||||||
endif
|
endif
|
||||||
if s:AlignCtrlStackQty <= 0
|
if s:AlignCtrlStackQty <= 0
|
||||||
unlet s:AlignCtrlStackQty
|
unlet s:AlignCtrlStackQty
|
||||||
echoerr "AlignPush needs to be used prior to AlignPop"
|
echoerr "(AlignPop) AlignPush needs to be used prior to AlignPop"
|
||||||
" call Dret("Align#AlignPop <> : AlignPop needs to have been called first")
|
" call Dret("Align#AlignPop <> : AlignPop needs to have been called first")
|
||||||
return ""
|
return ""
|
||||||
endif
|
endif
|
||||||
@ -857,15 +906,11 @@ endfun
|
|||||||
|
|
||||||
" ---------------------------------------------------------------------
|
" ---------------------------------------------------------------------
|
||||||
" Align#AlignReplaceQuotedSpaces: {{{1
|
" Align#AlignReplaceQuotedSpaces: {{{1
|
||||||
fun! Align#AlignReplaceQuotedSpaces()
|
fun! Align#AlignReplaceQuotedSpaces()
|
||||||
" call Dfunc("AlignReplaceQuotedSpaces()")
|
" call Dfunc("Align#AlignReplaceQuotedSpaces()")
|
||||||
|
|
||||||
let l:line = getline(line("."))
|
let l:line = getline(line("."))
|
||||||
if exists("g:Align_xstrlen") && g:Align_xstrlen
|
let l:linelen = s:Strlen(l:line)
|
||||||
let l:linelen = s:Strlen(l:line)
|
|
||||||
else
|
|
||||||
let l:linelen = strlen(l:line)
|
|
||||||
endif
|
|
||||||
let l:startingPos = 0
|
let l:startingPos = 0
|
||||||
let l:startQuotePos = 0
|
let l:startQuotePos = 0
|
||||||
let l:endQuotePos = 0
|
let l:endQuotePos = 0
|
||||||
@ -875,28 +920,28 @@ fun! Align#AlignReplaceQuotedSpaces()
|
|||||||
" "call Decho("in replace spaces. line=" . line('.'))
|
" "call Decho("in replace spaces. line=" . line('.'))
|
||||||
while (1)
|
while (1)
|
||||||
let l:startQuotePos = match(l:line, l:quoteRe, l:startingPos)
|
let l:startQuotePos = match(l:line, l:quoteRe, l:startingPos)
|
||||||
if (l:startQuotePos < 0)
|
if (l:startQuotePos < 0)
|
||||||
" "call Decho("No more quotes to the end of line")
|
" call Decho("No more quotes to the end of line")
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
let l:endQuotePos = match(l:line, l:quoteRe, l:startQuotePos + 1)
|
let l:endQuotePos = match(l:line, l:quoteRe, l:startQuotePos + 1)
|
||||||
if (l:endQuotePos < 0)
|
if (l:endQuotePos < 0)
|
||||||
" "call Decho("Mismatched quotes")
|
" call Decho("Mismatched quotes")
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
let l:spaceReplaceRe = '^.\{' . (l:startQuotePos + 1) . '}.\{-}\zs\s\ze.*.\{' . (linelen - l:endQuotePos) . '}$'
|
let l:spaceReplaceRe = '^.\{' . (l:startQuotePos + 1) . '}.\{-}\zs\s\ze.*.\{' . (linelen - l:endQuotePos) . '}$'
|
||||||
" "call Decho('spaceReplaceRe="' . l:spaceReplaceRe . '"')
|
" call Decho('spaceReplaceRe="' . l:spaceReplaceRe . '"')
|
||||||
let l:newStr = substitute(l:line, l:spaceReplaceRe, '%', '')
|
let l:newStr = substitute(l:line, l:spaceReplaceRe, '%', '')
|
||||||
while (l:newStr != l:line)
|
while (l:newStr != l:line)
|
||||||
" "call Decho('newstr="' . l:newStr . '"')
|
" call Decho('newstr="' . l:newStr . '"')
|
||||||
let l:line = l:newStr
|
let l:line = l:newStr
|
||||||
let l:newStr = substitute(l:line, l:spaceReplaceRe, '%', '')
|
let l:newStr = substitute(l:line, l:spaceReplaceRe, '%', '')
|
||||||
endwhile
|
endwhile
|
||||||
let l:startingPos = l:endQuotePos + 1
|
let l:startingPos = l:endQuotePos + 1
|
||||||
endwhile
|
endwhile
|
||||||
call setline(line('.'), l:line)
|
keepj call setline(line('.'), l:line)
|
||||||
|
|
||||||
" call Dret("AlignReplaceQuotedSpaces")
|
" call Dret("Align#AlignReplaceQuotedSpaces")
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
" ---------------------------------------------------------------------
|
" ---------------------------------------------------------------------
|
||||||
@ -923,19 +968,20 @@ fun! s:QArgSplitter(qarg)
|
|||||||
while args != ""
|
while args != ""
|
||||||
let iarg = 0
|
let iarg = 0
|
||||||
let arglen = strlen(args)
|
let arglen = strlen(args)
|
||||||
" call Decho("args[".iarg."]<".args[iarg]."> arglen=".arglen)
|
" call Decho(".args[".iarg."]<".args[iarg]."> arglen=".arglen)
|
||||||
" find index to first not-escaped '"'
|
" find index to first not-escaped '"'
|
||||||
|
" call Decho("find index to first not-escaped \"")
|
||||||
while args[iarg] != '"' && iarg < arglen
|
while args[iarg] != '"' && iarg < arglen
|
||||||
if args[iarg] == '\'
|
if args[iarg] == '\'
|
||||||
let args= strpart(args,1)
|
let args= strpart(args,1)
|
||||||
endif
|
endif
|
||||||
let iarg= iarg + 1
|
let iarg= iarg + 1
|
||||||
endwhile
|
endwhile
|
||||||
" call Decho("args<".args."> iarg=".iarg." arglen=".arglen)
|
" call Decho(".args<".args."> iarg=".iarg." arglen=".arglen)
|
||||||
|
|
||||||
if iarg > 0
|
if iarg > 0
|
||||||
" handle left of quote or remaining section
|
" handle left of quote or remaining section
|
||||||
" call Decho("handle left of quote or remaining section")
|
" call Decho(".handle left of quote or remaining section")
|
||||||
if args[iarg] == '"'
|
if args[iarg] == '"'
|
||||||
let qarglist= qarglist + split(strpart(args,0,iarg-1))
|
let qarglist= qarglist + split(strpart(args,0,iarg-1))
|
||||||
else
|
else
|
||||||
@ -946,7 +992,7 @@ fun! s:QArgSplitter(qarg)
|
|||||||
|
|
||||||
elseif iarg < arglen && args[0] == '"'
|
elseif iarg < arglen && args[0] == '"'
|
||||||
" handle "quoted" section
|
" handle "quoted" section
|
||||||
" call Decho("handle quoted section")
|
" call Decho(".handle quoted section")
|
||||||
let iarg= 1
|
let iarg= 1
|
||||||
while args[iarg] != '"' && iarg < arglen
|
while args[iarg] != '"' && iarg < arglen
|
||||||
if args[iarg] == '\'
|
if args[iarg] == '\'
|
||||||
@ -954,7 +1000,7 @@ fun! s:QArgSplitter(qarg)
|
|||||||
endif
|
endif
|
||||||
let iarg= iarg + 1
|
let iarg= iarg + 1
|
||||||
endwhile
|
endwhile
|
||||||
" call Decho("args<".args."> iarg=".iarg." arglen=".arglen)
|
" call Decho(".args<".args."> iarg=".iarg." arglen=".arglen)
|
||||||
if args[iarg] == '"'
|
if args[iarg] == '"'
|
||||||
call add(qarglist,strpart(args,1,iarg-1))
|
call add(qarglist,strpart(args,1,iarg-1))
|
||||||
let args= strpart(args,iarg+1)
|
let args= strpart(args,iarg+1)
|
||||||
@ -963,12 +1009,14 @@ fun! s:QArgSplitter(qarg)
|
|||||||
let args = ""
|
let args = ""
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
" call Decho("qarglist".string(qarglist)." iarg=".iarg." args<".args.">")
|
" call Decho(".qarglist".string(qarglist)." iarg=".iarg." args<".args.">")
|
||||||
endwhile
|
endwhile
|
||||||
|
" call Decho("end of loop (handling quoted arguments)")
|
||||||
|
|
||||||
else
|
else
|
||||||
" split at all whitespace
|
" split at all whitespace
|
||||||
let qarglist= split(a:qarg)
|
" call Decho("split at all whitespace")
|
||||||
|
let qarglist= split(a:qarg,"[ \t]")
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let qarglistlen= len(qarglist)
|
let qarglistlen= len(qarglist)
|
||||||
@ -984,21 +1032,26 @@ endfun
|
|||||||
" nonzero value. Solution from Nicolai Weibull, vim docs
|
" nonzero value. Solution from Nicolai Weibull, vim docs
|
||||||
" (:help strlen()), Tony Mechelynck, and my own invention.
|
" (:help strlen()), Tony Mechelynck, and my own invention.
|
||||||
fun! s:Strlen(x)
|
fun! s:Strlen(x)
|
||||||
" call Dfunc("s:Strlen(x<".a:x.">")
|
" call Dfunc("s:Strlen(x<".a:x."> g:Align_xstrlen=".g:Align_xstrlen)
|
||||||
if g:Align_xstrlen == 1
|
|
||||||
|
if type(g:Align_xstrlen) == 1
|
||||||
|
" allow user to specify a function to compute the string length
|
||||||
|
exe "let ret= ".g:Align_xstrlen."('".substitute(a:x,"'","''","g")."')"
|
||||||
|
|
||||||
|
elseif g:Align_xstrlen == 1
|
||||||
" number of codepoints (Latin a + combining circumflex is two codepoints)
|
" number of codepoints (Latin a + combining circumflex is two codepoints)
|
||||||
" (comment from TM, solution from NW)
|
" (comment from TM, solution from NW)
|
||||||
let ret= strlen(substitute(a:x,'.','c','g'))
|
let ret= strlen(substitute(a:x,'.','c','g'))
|
||||||
|
|
||||||
elseif g:Align_xstrlen == 2
|
elseif g:Align_xstrlen == 2
|
||||||
" number of spacing codepoints (Latin a + combining circumflex is one spacing
|
" number of spacing codepoints (Latin a + combining circumflex is one spacing
|
||||||
" codepoint; a hard tab is one; wide and narrow CJK are one each; etc.)
|
" codepoint; a hard tab is one; wide and narrow CJK are one each; etc.)
|
||||||
" (comment from TM, solution from TM)
|
" (comment from TM, solution from TM)
|
||||||
let ret=strlen(substitute(a:x, '.\Z', 'x', 'g'))
|
let ret=strlen(substitute(a:x, '.\Z', 'x', 'g'))
|
||||||
|
|
||||||
elseif g:Align_xstrlen == 3
|
elseif g:Align_xstrlen == 3
|
||||||
" virtual length (counting, for instance, tabs as anything between 1 and
|
" virtual length (counting, for instance, tabs as anything between 1 and
|
||||||
" 'tabstop', wide CJK as 2 rather than 1, Arabic alif as zero when immediately
|
" 'tabstop', wide CJK as 2 rather than 1, Arabic alif as zero when immediately
|
||||||
" preceded by lam, one otherwise, etc.)
|
" preceded by lam, one otherwise, etc.)
|
||||||
" (comment from TM, solution from me)
|
" (comment from TM, solution from me)
|
||||||
let modkeep= &l:mod
|
let modkeep= &l:mod
|
||||||
@ -1010,12 +1063,58 @@ fun! s:Strlen(x)
|
|||||||
|
|
||||||
else
|
else
|
||||||
" at least give a decent default
|
" at least give a decent default
|
||||||
ret= strlen(a:x)
|
if v:version >= 703
|
||||||
|
let ret= strdisplaywidth(a:x)
|
||||||
|
else
|
||||||
|
let ret= strlen(a:x)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
" call Dret("s:Strlen ".ret)
|
" call Dret("s:Strlen ".ret)
|
||||||
return ret
|
return ret
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" s:SaveUserOptions: {{{1
|
||||||
|
fun! s:SaveUserOptions()
|
||||||
|
" call Dfunc("s:SaveUserOptions() s:saved_user_options=".(exists("s:saved_user_options")? s:saved_user_options : 'n/a'))
|
||||||
|
if !exists("s:saved_user_options")
|
||||||
|
let s:saved_user_options = 1
|
||||||
|
let s:keep_search = @/
|
||||||
|
let s:keep_et = &l:et
|
||||||
|
let s:keep_hls = &hls
|
||||||
|
let s:keep_ic = &ic
|
||||||
|
let s:keep_paste = &paste
|
||||||
|
let s:keep_report = &report
|
||||||
|
else
|
||||||
|
let s:saved_user_options = s:saved_user_options + 1
|
||||||
|
endif
|
||||||
|
" call Dret("s:SaveUserOptions : s:saved_user_options=".s:saved_user_options)
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" s:RestoreUserOptions: {{{1
|
||||||
|
fun! s:RestoreUserOptions()
|
||||||
|
" call Dfunc("s:RestoreUserOptions() s:saved_user_options=".(exists("s:saved_user_options")? s:saved_user_options : 'n/a'))
|
||||||
|
if exists("s:saved_user_options") && s:saved_user_options == 1
|
||||||
|
let @/ = s:keep_search
|
||||||
|
let &l:et = s:keep_et
|
||||||
|
let &hls = s:keep_hls
|
||||||
|
let &ic = s:keep_ic
|
||||||
|
let &paste = s:keep_paste
|
||||||
|
let &report = s:keep_report
|
||||||
|
unlet s:keep_search
|
||||||
|
unlet s:keep_et
|
||||||
|
unlet s:keep_hls
|
||||||
|
unlet s:keep_ic
|
||||||
|
unlet s:keep_paste
|
||||||
|
unlet s:keep_report
|
||||||
|
unlet s:saved_user_options
|
||||||
|
elseif exists("s:saved_user_options")
|
||||||
|
let s:saved_user_options= s:saved_user_options - 1
|
||||||
|
endif
|
||||||
|
" call Dret("s:RestoreUserOptions : s:saved_user_options=".(exists("s:saved_user_options")? s:saved_user_options : 'n/a'))
|
||||||
|
endfun
|
||||||
|
|
||||||
" ---------------------------------------------------------------------
|
" ---------------------------------------------------------------------
|
||||||
" Set up default values: {{{1
|
" Set up default values: {{{1
|
||||||
"call Decho("-- Begin AlignCtrl Initialization --")
|
"call Decho("-- Begin AlignCtrl Initialization --")
|
||||||
|
@ -1,15 +1,25 @@
|
|||||||
" AlignMaps.vim : support functions for AlignMaps
|
" AlignMaps.vim : support functions for AlignMaps
|
||||||
" Author: Charles E. Campbell, Jr.
|
" Author: Charles E. Campbell, Jr.
|
||||||
" Date: Mar 03, 2009
|
" Date: Jun 18, 2012
|
||||||
" Version: 41
|
" Version: 42
|
||||||
|
" Copyright: Copyright (C) 1999-2012 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
|
||||||
|
"redraw!|call DechoSep()|call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||||
" ---------------------------------------------------------------------
|
" ---------------------------------------------------------------------
|
||||||
" Load Once: {{{1
|
" Load Once: {{{1
|
||||||
if &cp || exists("g:loaded_AlignMaps")
|
if &cp || exists("g:loaded_AlignMaps")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let g:loaded_AlignMaps= "v41"
|
let g:loaded_AlignMaps= "v42"
|
||||||
let s:keepcpo = &cpo
|
let s:keepcpo = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
"DechoTabOn
|
||||||
|
|
||||||
" =====================================================================
|
" =====================================================================
|
||||||
" Functions: {{{1
|
" Functions: {{{1
|
||||||
@ -20,7 +30,7 @@ fun! AlignMaps#WrapperStart(vis) range
|
|||||||
" call Dfunc("AlignMaps#WrapperStart(vis=".a:vis.")")
|
" call Dfunc("AlignMaps#WrapperStart(vis=".a:vis.")")
|
||||||
|
|
||||||
if a:vis
|
if a:vis
|
||||||
norm! '<ma'>
|
keepj norm! '<ma'>
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if line("'y") == 0 || line("'z") == 0 || !exists("s:alignmaps_wrapcnt") || s:alignmaps_wrapcnt <= 0
|
if line("'y") == 0 || line("'z") == 0 || !exists("s:alignmaps_wrapcnt") || s:alignmaps_wrapcnt <= 0
|
||||||
@ -34,22 +44,22 @@ fun! AlignMaps#WrapperStart(vis) range
|
|||||||
let s:alignmaps_posn = SaveWinPosn(0)
|
let s:alignmaps_posn = SaveWinPosn(0)
|
||||||
" set up fencepost blank lines
|
" set up fencepost blank lines
|
||||||
put =''
|
put =''
|
||||||
norm! mz'a
|
keepj norm! mz'a
|
||||||
put! =''
|
put! =''
|
||||||
ky
|
ky
|
||||||
let s:alignmaps_zline = line("'z")
|
let s:alignmaps_zline = line("'z")
|
||||||
exe "'y,'zs/@/\177/ge"
|
exe "keepj 'y,'zs/@/\177/ge"
|
||||||
else
|
else
|
||||||
" call Decho("embedded wrapper")
|
" call Decho("embedded wrapper")
|
||||||
let s:alignmaps_wrapcnt = s:alignmaps_wrapcnt + 1
|
let s:alignmaps_wrapcnt = s:alignmaps_wrapcnt + 1
|
||||||
norm! 'yjma'zk
|
keepj norm! 'yjma'zk
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" change some settings to align-standard values
|
" change some settings to align-standard values
|
||||||
set nogd
|
set nogd
|
||||||
set ch=2
|
set ch=2
|
||||||
AlignPush
|
AlignPush
|
||||||
norm! 'zk
|
keepj norm! 'zk
|
||||||
" call Dret("AlignMaps#WrapperStart : alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
|
" call Dret("AlignMaps#WrapperStart : alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
@ -59,7 +69,7 @@ fun! AlignMaps#WrapperEnd() range
|
|||||||
" call Dfunc("AlignMaps#WrapperEnd() alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
|
" 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
|
" remove trailing white space introduced by whatever in the modification zone
|
||||||
'y,'zs/ \+$//e
|
keepj 'y,'zs/ \+$//e
|
||||||
|
|
||||||
" restore AlignCtrl settings
|
" restore AlignCtrl settings
|
||||||
AlignPop
|
AlignPop
|
||||||
@ -67,14 +77,14 @@ fun! AlignMaps#WrapperEnd() range
|
|||||||
let s:alignmaps_wrapcnt= s:alignmaps_wrapcnt - 1
|
let s:alignmaps_wrapcnt= s:alignmaps_wrapcnt - 1
|
||||||
if s:alignmaps_wrapcnt <= 0
|
if s:alignmaps_wrapcnt <= 0
|
||||||
" initial wrapper ending
|
" initial wrapper ending
|
||||||
exe "'y,'zs/\177/@/ge"
|
exe "keepj 'y,'zs/\177/@/ge"
|
||||||
|
|
||||||
" if the 'z line hasn't moved, then go ahead and restore window position
|
" if the 'z line hasn't moved, then go ahead and restore window position
|
||||||
let zstationary= s:alignmaps_zline == line("'z")
|
let zstationary= s:alignmaps_zline == line("'z")
|
||||||
|
|
||||||
" remove fencepost blank lines.
|
" remove fencepost blank lines.
|
||||||
" restore 'a
|
" restore 'a
|
||||||
norm! 'yjmakdd'zdd
|
keepj norm! 'yjmakdd'zdd
|
||||||
|
|
||||||
" restore original 'y, 'z, and window positioning
|
" restore original 'y, 'z, and window positioning
|
||||||
call RestoreMark(s:alignmaps_keepmy)
|
call RestoreMark(s:alignmaps_keepmy)
|
||||||
@ -135,10 +145,10 @@ fun! AlignMaps#CharJoiner(chr)
|
|||||||
let aline = line("'a")
|
let aline = line("'a")
|
||||||
let rep = line(".") - aline
|
let rep = line(".") - aline
|
||||||
while rep > 0
|
while rep > 0
|
||||||
norm! 'a
|
keepj norm! 'a
|
||||||
while match(getline(aline),a:chr . "\s*$") != -1 && rep >= 0
|
while match(getline(aline),a:chr . "\s*$") != -1 && rep >= 0
|
||||||
" while = at end-of-line, delete it and join with next
|
" while = at end-of-line, delete it and join with next
|
||||||
norm! 'a$
|
keepj norm! 'a$
|
||||||
j!
|
j!
|
||||||
let rep = rep - 1
|
let rep = rep - 1
|
||||||
endwhile
|
endwhile
|
||||||
@ -149,7 +159,7 @@ fun! AlignMaps#CharJoiner(chr)
|
|||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
" prepare for next line
|
" prepare for next line
|
||||||
norm! jma
|
keepj norm! jma
|
||||||
let aline = line("'a")
|
let aline = line("'a")
|
||||||
endwhile
|
endwhile
|
||||||
" call Dret("AlignMaps#CharJoiner")
|
" call Dret("AlignMaps#CharJoiner")
|
||||||
@ -159,31 +169,32 @@ endfun
|
|||||||
" AlignMaps#Equals: supports \t= and \T= {{{2
|
" AlignMaps#Equals: supports \t= and \T= {{{2
|
||||||
fun! AlignMaps#Equals() range
|
fun! AlignMaps#Equals() range
|
||||||
" call Dfunc("AlignMaps#Equals()")
|
" call Dfunc("AlignMaps#Equals()")
|
||||||
'a,'zs/\s\+\([*/+\-%|&\~^]\==\)/ \1/e
|
keepj 'a,'zs/\s\+\([*/+\-%|&\~^]\==\)/ \1/e
|
||||||
'a,'zs@ \+\([*/+\-%|&\~^]\)=@\1=@ge
|
keepj 'a,'zs@ \+\([*/+\-%|&\~^]\)=@\1=@ge
|
||||||
'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge
|
keepj 'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge
|
||||||
'a,'zs/\([!<>:]\)=/\=submatch(1)."\<Char-0x0f>"/ge
|
keepj 'a,'zs/\([!<>:]\)=/\=submatch(1)."\<Char-0x0f>"/ge
|
||||||
norm g'zk
|
keepj norm g'zk
|
||||||
AlignCtrl mIp1P1=l =
|
AlignCtrl mIp1P1=l =
|
||||||
AlignCtrl g =
|
AlignCtrl g =
|
||||||
'a,'z-1Align
|
keepj 'a,'z-1Align
|
||||||
'a,'z-1s@\([*/+\-%|&\~^!=]\)\( \+\)=@\2\1=@ge
|
keepj 'a,'z-1s@\([*/%|&\~^!=]\)\( \+\)=@\2\1=@ge
|
||||||
'a,'z-1s/\( \+\);/;\1/ge
|
keepj 'a,'z-1s@[^+\-]\zs\([+\-]\)\( \+\)=@\2\1=@ge
|
||||||
|
keepj 'a,'z-1s/\( \+\);/;\1/ge
|
||||||
if &ft == "c" || &ft == "cpp"
|
if &ft == "c" || &ft == "cpp"
|
||||||
" call Decho("exception for ".&ft)
|
" call Decho("exception for ".&ft)
|
||||||
'a,'z-1v/^\s*\/[*/]/s/\/[*/]/@&@/e
|
keepj 'a,'z-1v/^\s*\/[*/]/s/\/[*/]/@&@/e
|
||||||
'a,'z-1v/^\s*\/[*/]/s/\*\//@&/e
|
keepj 'a,'z-1v/^\s*\/[*/]/s/\*\//@&/e
|
||||||
if exists("g:mapleader")
|
if exists("g:mapleader")
|
||||||
exe "norm 'zk"
|
exe "keepj norm 'zk"
|
||||||
call AlignMaps#StdAlign(1)
|
call AlignMaps#StdAlign(1)
|
||||||
else
|
else
|
||||||
exe "norm 'zk"
|
exe "keepj norm 'zk"
|
||||||
call AlignMaps#StdAlign(1)
|
call AlignMaps#StdAlign(1)
|
||||||
endif
|
endif
|
||||||
'y,'zs/^\(\s*\) @/\1/e
|
keepj 'y,'zs/^\(\s*\) @/\1/e
|
||||||
endif
|
endif
|
||||||
'a,'z-1s/\%x0f/=/ge
|
keepj 'a,'z-1s/\%x0f/=/ge
|
||||||
'y,'zs/ @//eg
|
keepj 'y,'zs/ @//eg
|
||||||
" call Dret("AlignMaps#Equals")
|
" call Dret("AlignMaps#Equals")
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
@ -194,10 +205,11 @@ fun! AlignMaps#Afnc()
|
|||||||
" call Dfunc("AlignMaps#Afnc()")
|
" call Dfunc("AlignMaps#Afnc()")
|
||||||
|
|
||||||
" keep display quiet
|
" keep display quiet
|
||||||
let chkeep = &ch
|
let chkeep = &l:ch
|
||||||
let gdkeep = &gd
|
let gdkeep = &l:gd
|
||||||
let vekeep = &ve
|
let wwkeep = &l:ww
|
||||||
set ch=2 nogd ve=
|
let vekeep = &l:ve
|
||||||
|
setlocal ch=2 nogd ve= ww=b,s,<,>,[,]
|
||||||
|
|
||||||
" will use marks y,z ; save current values
|
" will use marks y,z ; save current values
|
||||||
let mykeep = SaveMark("'y")
|
let mykeep = SaveMark("'y")
|
||||||
@ -206,7 +218,7 @@ fun! AlignMaps#Afnc()
|
|||||||
" Find beginning of function -- be careful to skip over comments
|
" Find beginning of function -- be careful to skip over comments
|
||||||
let cmmntid = synIDtrans(hlID("Comment"))
|
let cmmntid = synIDtrans(hlID("Comment"))
|
||||||
let stringid = synIDtrans(hlID("String"))
|
let stringid = synIDtrans(hlID("String"))
|
||||||
exe "norm! ]]"
|
exe "keepj norm! ]]"
|
||||||
while search(")","bW") != 0
|
while search(")","bW") != 0
|
||||||
" call Decho("line=".line(".")." col=".col("."))
|
" call Decho("line=".line(".")." col=".col("."))
|
||||||
let parenid= synIDtrans(synID(line("."),col("."),1))
|
let parenid= synIDtrans(synID(line("."),col("."),1))
|
||||||
@ -214,23 +226,23 @@ fun! AlignMaps#Afnc()
|
|||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
endwhile
|
endwhile
|
||||||
norm! %my
|
keepj norm! %my
|
||||||
s/(\s*\(\S\)/(\r \1/e
|
keepj s/(\s*\(\S\)/(\r \1/e
|
||||||
exe "norm! `y%"
|
exe "keepj norm! `y%"
|
||||||
s/)\s*\(\/[*/]\)/)\r\1/e
|
keepj s/)\s*\(\/[*/]\)/)\r\1/e
|
||||||
exe "norm! `y%mz"
|
exe "keepj norm! `y%mz"
|
||||||
'y,'zs/\s\+$//e
|
keepj 'y,'zs/\s\+$//e
|
||||||
'y,'zs/^\s\+//e
|
keepj 'y,'zs/^\s\+//e
|
||||||
'y+1,'zs/^/ /
|
keepj 'y+1,'zs/^/ /
|
||||||
|
|
||||||
" insert newline after every comma only one parenthesis deep
|
" insert newline after every comma only one parenthesis deep
|
||||||
sil! exe "norm! `y\<right>h"
|
exe "sil! keepj norm! `y\<right>h"
|
||||||
let parens = 1
|
let parens = 1
|
||||||
let cmmnt = 0
|
let cmmnt = 0
|
||||||
let cmmntline= -1
|
let cmmntline= -1
|
||||||
while parens >= 1
|
while parens >= 1
|
||||||
" call Decho("parens=".parens." @a=".@a)
|
exe 'keepj norm! ma "ay`a '
|
||||||
exe 'norm! ma "ay`a '
|
" call Decho("parens=".parens." cmmnt=".cmmnt." cmmntline=".cmmntline." line(.)=".line(".")." @a<".@a."> line<".getline(".").">")
|
||||||
if @a == "("
|
if @a == "("
|
||||||
let parens= parens + 1
|
let parens= parens + 1
|
||||||
elseif @a == ")"
|
elseif @a == ")"
|
||||||
@ -261,41 +273,42 @@ fun! AlignMaps#Afnc()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
elseif @a == "," && parens == 1 && cmmnt == 0
|
elseif @a == "," && parens == 1 && cmmnt == 0
|
||||||
exe "norm! i\<CR>\<Esc>"
|
exe "keepj norm! i\<CR>\<Esc>"
|
||||||
endif
|
endif
|
||||||
endwhile
|
endwhile
|
||||||
norm! `y%mz%
|
sil! keepj norm! `y%mz%
|
||||||
sil! 'y,'zg/^\s*$/d
|
sil! keepj 'y,'zg/^\s*$/d
|
||||||
|
|
||||||
" perform substitutes to mark fields for Align
|
" perform substitutes to mark fields for Align
|
||||||
sil! 'y+1,'zv/^\//s/^\s\+\(\S\)/ \1/e
|
sil! keepj 'y+1,'zv/^\//s/^\s\+\(\S\)/ \1/e
|
||||||
sil! 'y+1,'zv/^\//s/\(\S\)\s\+/\1 /eg
|
sil! keepj 'y+1,'zv/^\//s/\(\S\)\s\+/\1 /eg
|
||||||
sil! 'y+1,'zv/^\//s/\* \+/*/ge
|
sil! keepj 'y+1,'zv/^\//s/\* \+/*/ge
|
||||||
sil! 'y+1,'zv/^\//s/\w\zs\s*\*/ */ge
|
sil! keepj 'y+1,'zv/^\//s/\w\zs\s*\*/ */ge
|
||||||
" func
|
" func
|
||||||
" ws <- declaration -> <-ptr -> <-var-> <-[array][] -> <-glop-> <-end->
|
" 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! keepj '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! keepj 'y+1,'z+1g/^\s*\/[*/]/norm! kJ
|
||||||
sil! 'y+1,'z+1s%/[*/]%@&@%ge
|
sil! keepj 'y+1,'z+1s%/[*/]%@&@%ge
|
||||||
sil! 'y+1,'z+1s%*/%@&%ge
|
sil! keepj 'y+1,'z+1s%*/%@&%ge
|
||||||
AlignCtrl mIp0P0=l @
|
AlignCtrl mIp0P0=l @
|
||||||
sil! 'y+1,'zAlign
|
sil! keepj 'y+1,'zAlign
|
||||||
sil! 'y,'zs%@\(/[*/]\)@%\t\1 %e
|
sil! keepj 'y,'zs%@\(/[*/]\)@%\t\1 %e
|
||||||
sil! 'y,'zs%@\*/% */%e
|
sil! keepj 'y,'zs%@\*/% */%e
|
||||||
sil! 'y,'zs/@\([,)]\)/\1/
|
sil! keepj 'y,'zs/@\([,)]\)/\1/
|
||||||
sil! 'y,'zs/@/ /
|
sil! keepj 'y,'zs/@/ /
|
||||||
AlignCtrl mIlrp0P0= # @
|
AlignCtrl mIlrp0P0= # @
|
||||||
sil! 'y+1,'zAlign
|
sil! keepj 'y+1,'zAlign
|
||||||
sil! 'y+1,'zs/#/ /
|
sil! keepj 'y+1,'zs/#/ /
|
||||||
sil! 'y+1,'zs/@//
|
sil! keepj 'y+1,'zs/@//
|
||||||
sil! 'y+1,'zs/\(\s\+\)\([,)]\)/\2\1/e
|
sil! keepj 'y+1,'zs/\(\s\+\)\([,)]\)/\2\1/e
|
||||||
|
|
||||||
" Restore
|
" Restore
|
||||||
call RestoreMark(mykeep)
|
call RestoreMark(mykeep)
|
||||||
call RestoreMark(mzkeep)
|
call RestoreMark(mzkeep)
|
||||||
let &ch= chkeep
|
let &l:ch= chkeep
|
||||||
let &gd= gdkeep
|
let &l:gd= gdkeep
|
||||||
let &ve= vekeep
|
let &l:ww= wwkeep
|
||||||
|
let &l:ve= vekeep
|
||||||
|
|
||||||
" call Dret("AlignMaps#Afnc")
|
" call Dret("AlignMaps#Afnc")
|
||||||
endfun
|
endfun
|
||||||
@ -310,12 +323,42 @@ fun! AlignMaps#FixMultiDec()
|
|||||||
let curline = getline(".")
|
let curline = getline(".")
|
||||||
" call Decho("curline<".curline.">")
|
" call Decho("curline<".curline.">")
|
||||||
|
|
||||||
|
" " Attempt to ignore function calls (ie. double x=pow(2.,3.),...
|
||||||
|
" let leader= substitute(curline,'^\s*\([a-zA-Z_ \t][a-zA-Z0-9<>_ \t]*\)\s\+.*$','\1','')
|
||||||
|
" let i = strlen(leader)
|
||||||
|
" let paren = 0
|
||||||
|
" let fmd = strpart(curline,i)
|
||||||
|
" let ifmd = i
|
||||||
|
" call Decho("fmd<".fmd."> ifmd=".ifmd)
|
||||||
|
" while i < strlen(curline)
|
||||||
|
" if strpart(curline,i,1) == '('
|
||||||
|
" let paren= paren+1
|
||||||
|
" elseif strpart(curline,i,1) == ')' && paren > 0
|
||||||
|
" let paren= paren-1
|
||||||
|
" elseif strpart(curline,i,1) == '='
|
||||||
|
" let eq= 1
|
||||||
|
" elseif strpart(curline,i,1) == ';'
|
||||||
|
" let paren = 0
|
||||||
|
" let eq = 0
|
||||||
|
" let fmd = fmd.strpart(fmd,ifmd,i-ifmd).";\<cr>"
|
||||||
|
" let ifmd = i + 2
|
||||||
|
" let i = i + 1
|
||||||
|
" let leader= substitute(curline,'^\s*\([a-zA-Z_ \t][a-zA-Z0-9<>_ \t]*\)\s\+.*$','\1','')
|
||||||
|
" elseif strpart(curline,i,1) == ','
|
||||||
|
" if paren == 0
|
||||||
|
" let fmd = fmd.strpart(fmd,ifmd,i-ifmd).";\<cr>"
|
||||||
|
" let ifmd = i + 2
|
||||||
|
" let i = i + 1
|
||||||
|
" endif
|
||||||
|
" endif
|
||||||
|
" let i= i + 1
|
||||||
|
" endwhile
|
||||||
" Get the type. I'm assuming one type per line (ie. int x; double y; on one line will not be handled properly)
|
" 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','')
|
let @x=substitute(curline,'^\(\s*[a-zA-Z_ \t][a-zA-Z0-9<>_ \t]*\)\s\+[(*]*\h.*$','\1','')
|
||||||
" call Decho("@x<".@x.">")
|
" call Decho("@x<".@x.">")
|
||||||
|
|
||||||
" transform line
|
" transform line
|
||||||
exe 's/,/;\r'.@x.' /ge'
|
exe 'keepj s/,/;\r'.@x.' /ge'
|
||||||
|
|
||||||
"restore register x
|
"restore register x
|
||||||
let @x= xkeep
|
let @x= xkeep
|
||||||
@ -323,6 +366,26 @@ fun! AlignMaps#FixMultiDec()
|
|||||||
" call Dret("AlignMaps#FixMultiDec : my=".line("'y")." mz=".line("'z"))
|
" call Dret("AlignMaps#FixMultiDec : my=".line("'y")." mz=".line("'z"))
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" AlignMaps#AlignMapsClean: this function removes the AlignMaps plugin {{{2
|
||||||
|
fun! AlignMaps#AlignMapsClean()
|
||||||
|
" call Dfunc("AlignMaps#AlignMapsClean()")
|
||||||
|
for home in split(&rtp,',') + ['']
|
||||||
|
" call Decho("considering home<".home.">")
|
||||||
|
if isdirectory(home)
|
||||||
|
if filereadable(home."/autoload/AlignMaps.vim")
|
||||||
|
" call Decho("deleting ".home."/autoload/AlignMaps.vim")
|
||||||
|
call delete(home."/autoload/AlignMaps.vim")
|
||||||
|
endif
|
||||||
|
if filereadable(home."/plugin/AlignMapsPlugin.vim")
|
||||||
|
" call Decho("deleting ".home."/plugin/AlignMapsPlugin.vim")
|
||||||
|
call delete(home."/plugin/AlignMapsPlugin.vim")
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
" call Dret("AlignMaps#AlignMapsClean")
|
||||||
|
endfun
|
||||||
|
|
||||||
" ---------------------------------------------------------------------
|
" ---------------------------------------------------------------------
|
||||||
" Restore: {{{1
|
" Restore: {{{1
|
||||||
let &cpo= s:keepcpo
|
let &cpo= s:keepcpo
|
||||||
|
@ -46,6 +46,9 @@ endif"}}}
|
|||||||
if !exists("g:gundo_prefer_python3")"{{{
|
if !exists("g:gundo_prefer_python3")"{{{
|
||||||
let g:gundo_prefer_python3 = 0
|
let g:gundo_prefer_python3 = 0
|
||||||
endif"}}}
|
endif"}}}
|
||||||
|
if !exists("g:gundo_auto_preview")"{{{
|
||||||
|
let g:gundo_auto_preview = 1
|
||||||
|
endif"}}}
|
||||||
|
|
||||||
let s:has_supported_python = 0
|
let s:has_supported_python = 0
|
||||||
if g:gundo_prefer_python3 && has('python3')"{{{
|
if g:gundo_prefer_python3 && has('python3')"{{{
|
||||||
@ -111,6 +114,7 @@ function! s:GundoMapGraph()"{{{
|
|||||||
nnoremap <script> <silent> <buffer> gg gg:call <sid>GundoMove(1)<CR>
|
nnoremap <script> <silent> <buffer> gg gg:call <sid>GundoMove(1)<CR>
|
||||||
nnoremap <script> <silent> <buffer> P :call <sid>GundoPlayTo()<CR>
|
nnoremap <script> <silent> <buffer> P :call <sid>GundoPlayTo()<CR>
|
||||||
nnoremap <script> <silent> <buffer> p :call <sid>GundoRenderChangePreview()<CR>
|
nnoremap <script> <silent> <buffer> p :call <sid>GundoRenderChangePreview()<CR>
|
||||||
|
nnoremap <script> <silent> <buffer> r :call <sid>GundoRenderPreview()<CR>
|
||||||
nnoremap <script> <silent> <buffer> q :call <sid>GundoClose()<CR>
|
nnoremap <script> <silent> <buffer> q :call <sid>GundoClose()<CR>
|
||||||
cabbrev <script> <silent> <buffer> q call <sid>GundoClose()
|
cabbrev <script> <silent> <buffer> q call <sid>GundoClose()
|
||||||
cabbrev <script> <silent> <buffer> quit call <sid>GundoClose()
|
cabbrev <script> <silent> <buffer> quit call <sid>GundoClose()
|
||||||
@ -318,11 +322,17 @@ function! s:GundoToggle()"{{{
|
|||||||
endfunction"}}}
|
endfunction"}}}
|
||||||
|
|
||||||
function! s:GundoShow()"{{{
|
function! s:GundoShow()"{{{
|
||||||
call s:GundoOpen()
|
if !s:GundoIsVisible()
|
||||||
|
let g:gundo_target_n = bufnr('')
|
||||||
|
let g:gundo_target_f = @%
|
||||||
|
call s:GundoOpen()
|
||||||
|
endif
|
||||||
endfunction"}}}
|
endfunction"}}}
|
||||||
|
|
||||||
function! s:GundoHide()"{{{
|
function! s:GundoHide()"{{{
|
||||||
call s:GundoClose()
|
if s:GundoIsVisible()
|
||||||
|
call s:GundoClose()
|
||||||
|
endif
|
||||||
endfunction"}}}
|
endfunction"}}}
|
||||||
|
|
||||||
"}}}
|
"}}}
|
||||||
@ -377,7 +387,9 @@ function! s:GundoMove(direction) range"{{{
|
|||||||
call cursor(0, idx2 + 1)
|
call cursor(0, idx2 + 1)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call s:GundoRenderPreview()
|
if g:gundo_auto_preview == 1
|
||||||
|
call s:GundoRenderPreview()
|
||||||
|
endif
|
||||||
endfunction"}}}
|
endfunction"}}}
|
||||||
|
|
||||||
"}}}
|
"}}}
|
||||||
@ -436,6 +448,14 @@ function! gundo#GundoToggle()"{{{
|
|||||||
call s:GundoToggle()
|
call s:GundoToggle()
|
||||||
endfunction"}}}
|
endfunction"}}}
|
||||||
|
|
||||||
|
function! gundo#GundoShow()"{{{
|
||||||
|
call s:GundoShow()
|
||||||
|
endfunction"}}}
|
||||||
|
|
||||||
|
function! gundo#GundoHide()"{{{
|
||||||
|
call s:GundoHide()
|
||||||
|
endfunction"}}}
|
||||||
|
|
||||||
function! gundo#GundoRenderGraph()"{{{
|
function! gundo#GundoRenderGraph()"{{{
|
||||||
call s:GundoRenderGraph()
|
call s:GundoRenderGraph()
|
||||||
endfunction"}}}
|
endfunction"}}}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
*align.txt* The Alignment Tool Mar 04, 2009
|
*align.txt* The Alignment Tool Jun 18, 2012
|
||||||
|
|
||||||
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
|
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
|
||||||
(remove NOSPAM from Campbell's email first)
|
(remove NOSPAM from Campbell's email first)
|
||||||
Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *Align-copyright*
|
Copyright: (c) 2004-2012 by Charles E. Campbell *Align-copyright*
|
||||||
The VIM LICENSE applies to Align.vim, AlignMaps.vim, and Align.txt
|
The VIM LICENSE applies to Align.vim, AlignMaps.vim, and Align.txt
|
||||||
(see |copyright|) except use "Align and AlignMaps" instead of "Vim"
|
(see |copyright|) except use "Align and AlignMaps" instead of "Vim"
|
||||||
NO WARRANTY, EXPRESS OR IMPLIED. USE AT-YOUR-OWN-RISK.
|
NO WARRANTY, EXPRESS OR IMPLIED. USE AT-YOUR-OWN-RISK.
|
||||||
@ -26,6 +26,7 @@ Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *Align-copyright*
|
|||||||
Temporary Settings.....: |alignctrl-m|
|
Temporary Settings.....: |alignctrl-m|
|
||||||
Padding................: |alignctrl-p| |alignctrl-P|
|
Padding................: |alignctrl-p| |alignctrl-P|
|
||||||
Current Options........: |alignctrl-settings| |alignctrl-|
|
Current Options........: |alignctrl-settings| |alignctrl-|
|
||||||
|
Alignment Control Init...: |alignctrl-init|
|
||||||
Alignment................: |align-align|
|
Alignment................: |align-align|
|
||||||
4. Alignment Maps...........: |align-maps|
|
4. Alignment Maps...........: |align-maps|
|
||||||
\a,....................: |alignmap-a,|
|
\a,....................: |alignmap-a,|
|
||||||
@ -91,6 +92,7 @@ Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *Align-copyright*
|
|||||||
|| | | - skip this separator ||
|
|| | | - skip this separator ||
|
||||||
|| | | + re-use last justification method ||
|
|| | | + re-use last justification method ||
|
||||||
|| | | : treat rest of text as a field ||
|
|| | | : treat rest of text as a field ||
|
||||||
|
|| | | * use AlignSkip() function (to skip or not) ||
|
||||||
|| | | ||
|
|| | | ||
|
||||||
|| | p1 | p### pad separator on left by # blanks ||
|
|| | p1 | p### pad separator on left by # blanks ||
|
||||||
|| | P1 | P### pad separator on right by # blanks ||
|
|| | P1 | P### pad separator on right by # blanks ||
|
||||||
@ -176,12 +178,14 @@ ALIGNMENT CONCEPTS *align-concept* *align-concepts* {{{2
|
|||||||
< Note how each "=" sign is surrounded by a single space; the
|
< Note how each "=" sign is surrounded by a single space; the
|
||||||
default padding is p1P1 (p1 means one space before the separator,
|
default padding is p1P1 (p1 means one space before the separator,
|
||||||
and P1 means one space after it). If you wish to change the
|
and P1 means one space after it). If you wish to change the
|
||||||
padding, say to no padding, use (see |alignctrl-p|) >
|
padding, say, to no padding, use (see |alignctrl-p|) >
|
||||||
|
|
||||||
:AlignCtrl lp0P0
|
:AlignCtrl lp0P0
|
||||||
|
|
||||||
< Next, note how each field is left justified; that's what the "l"
|
< Next, note how each field is left justified; that's what the "l"
|
||||||
(a small letter "ell") does. If right-justification of the fields
|
in the AlignCtrl parameters (a small letter "ell") does. If
|
||||||
had been desired, an "r" could've been used: >
|
right-justification of the fields had been desired, an "r"
|
||||||
|
could've been used: >
|
||||||
:AlignCtrl r
|
:AlignCtrl r
|
||||||
< yielding >
|
< yielding >
|
||||||
x = y = z = 3;
|
x = y = z = 3;
|
||||||
@ -196,10 +200,10 @@ ALIGNMENT CONCEPTS *align-concept* *align-concepts* {{{2
|
|||||||
justify, right justify, or center them, too (see |alignctrl-<|).
|
justify, right justify, or center them, too (see |alignctrl-<|).
|
||||||
|
|
||||||
Assume that for some reason a left-right-left-right-... justification
|
Assume that for some reason a left-right-left-right-... justification
|
||||||
sequence was wished. This wish is simply achieved with >
|
sequence was desired. This wish is simply achieved with >
|
||||||
:AlignCtrl lr
|
:AlignCtrl lr
|
||||||
:1,4Align =
|
:1,4Align =
|
||||||
< because the justification commands are considered to be "cylic"; ie.
|
< because the justification commands are considered to be "cyclic"; ie.
|
||||||
lr is the same as lrlrlrlrlrlrlr...
|
lr is the same as lrlrlrlrlrlrlr...
|
||||||
|
|
||||||
There's a lot more discussed under |alignctrl|; hopefully the examples
|
There's a lot more discussed under |alignctrl|; hopefully the examples
|
||||||
@ -261,7 +265,7 @@ ALIGNMENT COMMANDS *align-command* *align-commands* {{{2
|
|||||||
< Also see |alignctrl-m| for a way to automatically do
|
< Also see |alignctrl-m| for a way to automatically do
|
||||||
an AlignPop after an Align (primarily this is for maps).
|
an AlignPop after an Align (primarily this is for maps).
|
||||||
|
|
||||||
ALIGNMENT OPTIONS *align-option* *align-options* {{{2
|
ALIGNMENT OPTIONS *align-option* *align-options* *align-xstrlen* {{{2
|
||||||
*align-utf8* *align-utf* *align-codepoint* *align-strlen* *align-multibyte*
|
*align-utf8* *align-utf* *align-codepoint* *align-strlen* *align-multibyte*
|
||||||
|
|
||||||
For those of you who are using 2-byte (or more) characters such as are
|
For those of you who are using 2-byte (or more) characters such as are
|
||||||
@ -279,7 +283,7 @@ ALIGNMENT OPTIONS *align-option* *align-options* {{{2
|
|||||||
vim compiled without multi-byte support
|
vim compiled without multi-byte support
|
||||||
$LANG is en_US.UTF-8 (assuming USA english)
|
$LANG is en_US.UTF-8 (assuming USA english)
|
||||||
|
|
||||||
Number of codepoints (Latin a + combining circumflex is two codepoints)~
|
Number of codepoints (Latin a + combining circumflex are two codepoints)~
|
||||||
>
|
>
|
||||||
let g:Align_xstrlen= 1 (default)
|
let g:Align_xstrlen= 1 (default)
|
||||||
<
|
<
|
||||||
@ -295,13 +299,20 @@ ALIGNMENT OPTIONS *align-option* *align-options* {{{2
|
|||||||
>
|
>
|
||||||
let g:Align_xstrlen= 3
|
let g:Align_xstrlen= 3
|
||||||
<
|
<
|
||||||
|
User may specify a function to compute the string length~
|
||||||
|
>
|
||||||
|
let g:Align_xstrlen= "strlen"
|
||||||
|
< This method will cause Align to call upon the named function returning
|
||||||
|
string length. it should resemble the |strlen()| function, taking one
|
||||||
|
argument (the string) for input and returning the string length.
|
||||||
|
|
||||||
By putting one of these settings into your <.vimrc>, Align will use an
|
By putting one of these settings into your <.vimrc>, Align will use an
|
||||||
internal (interpreted) function to determine a string's length instead
|
internal (interpreted) function to determine a string's length instead
|
||||||
of the Vim's built-in |strlen()| function. Since the function is
|
of Vim's built-in |strlen()| function. Since the function is
|
||||||
interpreted, Align will run a bit slower but will handle such strings
|
interpreted, Align will run a bit slower but will handle such strings
|
||||||
correctly. The last setting (g:Align_xstrlen= 3) probably will run
|
correctly. The last settings (g:Align_xstrlen= 3 and
|
||||||
the slowest but be the most accurate. (thanks to Tony Mechelynck for
|
g:Align_xstrlen="userfuncname") probably will run the slowest but be
|
||||||
these)
|
the most accurate. (thanks to Tony Mechelynck for these)
|
||||||
|
|
||||||
|
|
||||||
ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
|
ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
|
||||||
@ -322,7 +333,7 @@ ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
|
|||||||
<
|
<
|
||||||
where "ws" stands for "white space" such as blanks and/or tabs.
|
where "ws" stands for "white space" such as blanks and/or tabs.
|
||||||
|
|
||||||
|
|
||||||
SEPARATORS *alignctrl-separators* {{{3
|
SEPARATORS *alignctrl-separators* {{{3
|
||||||
|
|
||||||
As a result, separators may not have white space (tabs or blanks) on
|
As a result, separators may not have white space (tabs or blanks) on
|
||||||
@ -337,10 +348,11 @@ ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
|
|||||||
(ie. @), and then perform a substitute to revert the separators back
|
(ie. @), and then perform a substitute to revert the separators back
|
||||||
to their desired condition (ie. s/@/ :: /g).
|
to their desired condition (ie. s/@/ :: /g).
|
||||||
|
|
||||||
The Align#Align() function will first convert tabs over the region into
|
The Align#Align() function (which is invoked by the :Align command)
|
||||||
spaces and then apply alignment control. Except for initial white
|
will first convert tabs over the region into spaces and then apply
|
||||||
space, white space surrounding the fields is ignored. One has three
|
alignment control. Except for initial white space, white space
|
||||||
options just for handling initial white space:
|
surrounding the fields is ignored. One has three options just for
|
||||||
|
handling initial white space:
|
||||||
|
|
||||||
|
|
||||||
--- *alignctrl-w*
|
--- *alignctrl-w*
|
||||||
@ -357,9 +369,9 @@ ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
|
|||||||
+------------------+---------------+-------------------+-----------------+
|
+------------------+---------------+-------------------+-----------------+
|
||||||
| Original | w option | W option | I option |
|
| Original | w option | W option | I option |
|
||||||
+------------------+---------------+-------------------+-----------------+
|
+------------------+---------------+-------------------+-----------------+
|
||||||
| a := baaa |a := baaa | a : = baaa | a := baaa |
|
| a := baaa |a := baaa | a := baaa | a := baaa |
|
||||||
| caaaa := deeee |caaaa := deeee | caaaa : = deeee| caaaa := deeee|
|
| caaaa := deeee |caaaa := deeee | caaaa := deeee | caaaa := deeee|
|
||||||
| ee := f |ee := f | ee : = f | ee := f |
|
| ee := f |ee := f | ee := f | ee := f |
|
||||||
+------------------+---------------+-------------------+-----------------+
|
+------------------+---------------+-------------------+-----------------+
|
||||||
<
|
<
|
||||||
The original has at least one leading white space on every line.
|
The original has at least one leading white space on every line.
|
||||||
@ -397,17 +409,19 @@ ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
|
|||||||
cycle only consists of one character (the "l").
|
cycle only consists of one character (the "l").
|
||||||
Every time left-justification is used for fields.
|
Every time left-justification is used for fields.
|
||||||
AlignCtrl r : The = separator is repeatedly re-used, as the
|
AlignCtrl r : The = separator is repeatedly re-used, as the
|
||||||
cycle only consists of one character (the "l").
|
cycle only consists of one character (the "r").
|
||||||
Every time right-justification is used for fields
|
Every time right-justification is used for fields
|
||||||
AlignCtrl lr: Again, the "=" separator is repeatedly re-used,
|
AlignCtrl lr: Again, the "=" separator is repeatedly re-used,
|
||||||
but the fields are justified alternately between
|
but the fields are justified alternately between
|
||||||
left and right.
|
left and right.
|
||||||
|
|
||||||
Even more separator control is available. With "-+:":
|
Even more separator control is available! With "-+:":
|
||||||
|
|
||||||
- : skip treating the separator as a separator. *alignctrl--*
|
- : skip treating the separator as a separator. *alignctrl--*
|
||||||
+ : repeat use of the last "lrc" justification *alignctrl-+*
|
+ : repeat use of the last "lrc" justification *alignctrl-+*
|
||||||
: : treat the rest of the line as a single field *alignctrl-:*
|
: : treat the rest of the line as a single field *alignctrl-:*
|
||||||
|
* : like -, but only if g:AlignSkip() returns true *alignctrl-star*
|
||||||
|
(see |alignctrl-alignskip|)
|
||||||
|
|
||||||
Example: More justification options: Align = >
|
Example: More justification options: Align = >
|
||||||
+------------+---------------+--------------------+---------------+
|
+------------+---------------+--------------------+---------------+
|
||||||
@ -452,6 +466,35 @@ ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
|
|||||||
3rd separator only: AlignCtrl --l:
|
3rd separator only: AlignCtrl --l:
|
||||||
etc.
|
etc.
|
||||||
|
|
||||||
|
*g:AlignSkip*
|
||||||
|
Align Skip Control *alignctrl-alignskip*
|
||||||
|
|
||||||
|
The separator control '*' permits a function to decide whether or
|
||||||
|
not a character which matches the current separator pattern should
|
||||||
|
instead be skipped.
|
||||||
|
|
||||||
|
1. Define a function; example: >
|
||||||
|
|
||||||
|
fun! AlignSkipString(lineno,indx)
|
||||||
|
let synid = synID(a:lineno,a:indx+1,1)
|
||||||
|
let synname = synIDattr(synIDtrans(synid),"name")
|
||||||
|
let ret= (synname == "String")? 1 : 0
|
||||||
|
return ret
|
||||||
|
endfun
|
||||||
|
<
|
||||||
|
Input: lineno: current line number
|
||||||
|
indx : index to character; leftmost character
|
||||||
|
in the line has an indx of 0 (like |strpart()|)
|
||||||
|
Output: 0 : if separator is ok
|
||||||
|
1 : skip separator like it was a '-'
|
||||||
|
|
||||||
|
2. Set up |g:AlignSkip| as a function reference (see |Funcref|): >
|
||||||
|
|
||||||
|
let g:AlignSkip= function("AlignSkipString")
|
||||||
|
<
|
||||||
|
3. Use * as a separator control where a separator potentially should
|
||||||
|
be skipped over.
|
||||||
|
|
||||||
|
|
||||||
--- *alignctrl-=*
|
--- *alignctrl-=*
|
||||||
=C CYCLIC VS ALL-ACTIVE SEPARATORS *alignctrl-C* {{{3
|
=C CYCLIC VS ALL-ACTIVE SEPARATORS *alignctrl-C* {{{3
|
||||||
@ -465,8 +508,10 @@ ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
|
|||||||
constructed: >
|
constructed: >
|
||||||
|
|
||||||
AlignCtrl ... pat1 pat2 pat3
|
AlignCtrl ... pat1 pat2 pat3
|
||||||
|
< becomes >
|
||||||
\(pat1\|pat2\|pat3\)
|
\(pat1\|pat2\|pat3\)
|
||||||
<
|
< (ie. pat1 -or- pat2 -or- pat3; see |/bar|)
|
||||||
|
|
||||||
Each separator pattern is thus equivalent and simultaneously active.
|
Each separator pattern is thus equivalent and simultaneously active.
|
||||||
The cyclic separator AlignCtrl option stores a list of patterns, only
|
The cyclic separator AlignCtrl option stores a list of patterns, only
|
||||||
one of which is active for each field at a time.
|
one of which is active for each field at a time.
|
||||||
@ -606,12 +651,12 @@ ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
|
|||||||
|five= 6; |five = 6; |five = 6; |
|
|five= 6; |five = 6; |five = 6; |
|
||||||
+----------------+------------------+----------------+
|
+----------------+------------------+----------------+
|
||||||
<
|
<
|
||||||
The first "Align =" aligned with all "="s, including that one in the
|
The first "Align =" aligned with all "="s, including the one in the
|
||||||
"skip=this" comment.
|
"/* skip=this */" comment.
|
||||||
|
|
||||||
The second "Align =" had a AlignCtrl v-pattern which caused it to skip
|
The second "Align =" had a AlignCtrl v-pattern which caused it to skip
|
||||||
(ignore) the "skip=this" line when aligning.
|
(ignore) the "/* skip=this */" line when aligning.
|
||||||
|
|
||||||
To remove AlignCtrl's g and v patterns, use (as appropriate) >
|
To remove AlignCtrl's g and v patterns, use (as appropriate) >
|
||||||
|
|
||||||
AlignCtrl g
|
AlignCtrl g
|
||||||
@ -683,7 +728,7 @@ ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
|
|||||||
|
|
||||||
AlignCtrl......|alignctrl|
|
AlignCtrl......|alignctrl|
|
||||||
qty............|align-concept|
|
qty............|align-concept|
|
||||||
AlignStyle.....|alignctrl--| |alignctrl-+| |alignctrl-:||alignctrl-c|
|
AlignStyle.....|alignctrl--| |alignctrl-+| |alignctrl-:| |alignctrl-c|
|
||||||
Padding........|alignctrl-p| |alignctrl-P|
|
Padding........|alignctrl-p| |alignctrl-P|
|
||||||
|
|
||||||
One may get a string which can be fed back into AlignCtrl: >
|
One may get a string which can be fed back into AlignCtrl: >
|
||||||
@ -697,7 +742,19 @@ ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
|
|||||||
however: >
|
however: >
|
||||||
|
|
||||||
:let alignctrl= Align#AlignCtrl("d")
|
:let alignctrl= Align#AlignCtrl("d")
|
||||||
<
|
|
||||||
|
|
||||||
|
ALIGNMENT CONTROL INITIALIZATION *alignctrl-init* *alignctrl-initialization* {{{2
|
||||||
|
|
||||||
|
If you'd like to have your own default AlignCtrl, you'll be wanting to
|
||||||
|
put it in a file such as: >
|
||||||
|
|
||||||
|
$HOME/.vim/after/plugin/AlignPlugin.vim
|
||||||
|
|
||||||
|
< Anything in that file would be sourced at startup, but after your
|
||||||
|
.vimrc and after $HOME/.vim/plugin/AlignPlugin.vim; hence, :Align
|
||||||
|
and :AlignCtrl will then be defined.
|
||||||
|
|
||||||
|
|
||||||
ALIGNMENT *align-align* {{{2
|
ALIGNMENT *align-align* {{{2
|
||||||
|
|
||||||
@ -758,23 +815,31 @@ ALIGNMENT *align-align* {{{2
|
|||||||
==============================================================================
|
==============================================================================
|
||||||
4. Alignment Maps *alignmaps* *align-maps* {{{1
|
4. Alignment Maps *alignmaps* *align-maps* {{{1
|
||||||
|
|
||||||
There are a number of maps using Align#AlignCtrl() and Align#Align()
|
There are a number of maps provided in the AlignMaps plugin which
|
||||||
in the <AlignMapsPlugin.vim> file. This file may also be put into the
|
depend upon the Align plugin. The maps provided by AlignMaps
|
||||||
plugins subdirectory. Since AlignCtrl and Align supercede textab and
|
typically start with a leading "t" (for the older "textab" program
|
||||||
its <ttalign.vim> file, the maps either have a leading "t" (for
|
which Align supercedes) or with an "a" for the more complicated
|
||||||
"textab") or the more complicated ones an "a" (for "alignment") for
|
alignment maps.
|
||||||
backwards compatibility.
|
|
||||||
|
|
||||||
The maps are shown below with a leading backslash (\). Actually, the
|
The AlignMaps plugin, although provided in the vimball containing
|
||||||
<Leader> construct is used (see |mapleader|), so the maps' leading
|
Align.vim, is really a separate plugin (Align doesn't depend on
|
||||||
kick-off character is easily customized.
|
AlignMaps). Consequently, if you'd rather not have AlignMaps's
|
||||||
|
mappings, just use the *:AlignMapsClean* command to remove its
|
||||||
|
components. The :AlignMapsClean command does not remove any maps
|
||||||
|
generated by AlignMaps in the current instance of vim.
|
||||||
|
|
||||||
Furthermore, all AlignMapsPlugin.vim maps use the <Plug> construct (see
|
The maps are shown below with a leading backslash (\). However, the
|
||||||
|<Plug>|and |usr_41.txt|). Hence, if one wishes to override the
|
actual maps use the <Leader> construct (see |mapleader|), so the maps'
|
||||||
mapping entirely, one may do that, too. As an example: >
|
leading kick-off character is easily customized.
|
||||||
|
|
||||||
|
Furthermore, all the maps specified by the AlignMaps plugin use the
|
||||||
|
<Plug> construct (see |<Plug>|and |usr_41.txt|). Hence, if one wishes
|
||||||
|
to override the mapping(s) entirely, one may do that, too. As an
|
||||||
|
example: >
|
||||||
map <Leader>ACOM <Plug>AM_acom
|
map <Leader>ACOM <Plug>AM_acom
|
||||||
< would have \ACOM do what \acom previously did (assuming that the
|
< would have \ACOM do
|
||||||
mapleader has been left at its default value of a backslash).
|
what \acom previously did (assuming that the mapleader has been left
|
||||||
|
at its default value of a backslash).
|
||||||
|
|
||||||
\a, : useful for breaking up comma-separated
|
\a, : useful for breaking up comma-separated
|
||||||
declarations prior to \adec |alignmap-a,|
|
declarations prior to \adec |alignmap-a,|
|
||||||
@ -831,9 +896,9 @@ ALIGNMENT *align-align* {{{2
|
|||||||
character "x" where "x" is: ,:<=@# |alignmap-T=|
|
character "x" where "x" is: ,:<=@# |alignmap-T=|
|
||||||
\m= : like \t= but aligns with %... style comments
|
\m= : like \t= but aligns with %... style comments
|
||||||
|
|
||||||
The leading backslash is actually <leader> (see |mapleader| for how to
|
The leading backslash is actually <leader> (see |mapleader| to learn
|
||||||
customize the leader to be whatever you like). These maps use the
|
how to customize the leader to be whatever you like). These maps use
|
||||||
<Align.vim> package and are defined in the <AlignMaps.vim> file.
|
the <Align.vim> package and are defined in the <AlignMaps.vim> file.
|
||||||
Although the maps use AlignCtrl options, they typically use the "m"
|
Although the maps use AlignCtrl options, they typically use the "m"
|
||||||
option which pushes the options (AlignPush). The associated Align
|
option which pushes the options (AlignPush). The associated Align
|
||||||
call which follows will then AlignPop the user's original options
|
call which follows will then AlignPop the user's original options
|
||||||
@ -847,6 +912,18 @@ ALIGNMENT *align-align* {{{2
|
|||||||
Alternatively, one may select the text with the "V" visual mode
|
Alternatively, one may select the text with the "V" visual mode
|
||||||
command.
|
command.
|
||||||
|
|
||||||
|
If you want to use visual-block mode (ctrl-v), I suggest using
|
||||||
|
an AlignMap with the vis.vim plugin, available at either
|
||||||
|
|
||||||
|
stable: http://vim.sourceforge.net/scripts/script.php?script_id=1195
|
||||||
|
devel : http://mysite.verizon.net/astronaut/vim/index.html#VIS
|
||||||
|
|
||||||
|
Use it with commands such as >
|
||||||
|
|
||||||
|
ctrl-v (move)
|
||||||
|
:B norm \alignmap_sequence
|
||||||
|
<
|
||||||
|
|
||||||
ALIGNMENT MAP USE WITH MENUS~
|
ALIGNMENT MAP USE WITH MENUS~
|
||||||
One may use the mark-and-move style (ma, move, use the menu) or
|
One may use the mark-and-move style (ma, move, use the menu) or
|
||||||
the visual mode style (use the V visual mode, move, then select
|
the visual mode style (use the V visual mode, move, then select
|
||||||
@ -862,7 +939,6 @@ ALIGNMENT *align-align* {{{2
|
|||||||
must be included).
|
must be included).
|
||||||
|
|
||||||
COMPLEX ALIGNMENT MAP METHOD~
|
COMPLEX ALIGNMENT MAP METHOD~
|
||||||
|
|
||||||
For those complex alignment maps which do alignment on constructs
|
For those complex alignment maps which do alignment on constructs
|
||||||
(e.g. \acom, \adec, etc), a series of substitutes is used to insert
|
(e.g. \acom, \adec, etc), a series of substitutes is used to insert
|
||||||
"@" symbols in appropriate locations. Align#Align() is then used to
|
"@" symbols in appropriate locations. Align#Align() is then used to
|
||||||
@ -934,7 +1010,7 @@ ALIGNMENT *align-align* {{{2
|
|||||||
aa:=bb:=cc:=1;
|
aa:=bb:=cc:=1;
|
||||||
a:=b:=c:=1;
|
a:=b:=c:=1;
|
||||||
aaa:=bbb:=ccc:=1;
|
aaa:=bbb:=ccc:=1;
|
||||||
<
|
<
|
||||||
Bcomes: select the three assignment lines, then \a:= >
|
Bcomes: select the three assignment lines, then \a:= >
|
||||||
aa := bb := cc := 1;
|
aa := bb := cc := 1;
|
||||||
a := b := c := 1;
|
a := b := c := 1;
|
||||||
@ -981,6 +1057,17 @@ ALIGNMENT *align-align* {{{2
|
|||||||
Alignment Map Examples: \anum *alignmap-anum* {{{3
|
Alignment Map Examples: \anum *alignmap-anum* {{{3
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
|
First, note that the behavior of the \anum map depends on the existence
|
||||||
|
of either the vim variable >
|
||||||
|
g:alignmaps_usanumber
|
||||||
|
< or >
|
||||||
|
g:alignmaps_euronumber
|
||||||
|
< when AlignMaps is loaded.
|
||||||
|
|
||||||
|
Essentially, "usa" numbers use "."s and "euro" numbers use ","s to
|
||||||
|
separate the integer from the fractional portion of a number.
|
||||||
|
"Usa" numbers are default.
|
||||||
|
|
||||||
Original: illustrates how to get numbers lined up >
|
Original: illustrates how to get numbers lined up >
|
||||||
-1.234 .5678 -.901e-4
|
-1.234 .5678 -.901e-4
|
||||||
1.234 5.678 9.01e-4
|
1.234 5.678 9.01e-4
|
||||||
@ -1012,7 +1099,8 @@ ALIGNMENT *align-align* {{{2
|
|||||||
12,34 56,78 90,1e-4
|
12,34 56,78 90,1e-4
|
||||||
123,4 567,8 901,e-4
|
123,4 567,8 901,e-4
|
||||||
<
|
<
|
||||||
Becomes: Go to first line, ma. Go to last line, press \anum >
|
Becomes: (assuming g:alignmaps_euronumber exists)
|
||||||
|
Go to first line, ma. Go to last line, press \anum >
|
||||||
-1,234 ,5678 -,901e-4
|
-1,234 ,5678 -,901e-4
|
||||||
1,234 5,678 9,01e-4
|
1,234 5,678 9,01e-4
|
||||||
12,34 56,78 90,1e-4
|
12,34 56,78 90,1e-4
|
||||||
@ -1022,9 +1110,10 @@ ALIGNMENT *align-align* {{{2
|
|||||||
\aenum is provided to support European-style numbers
|
\aenum is provided to support European-style numbers
|
||||||
\aunum is provided to support USA-style numbers
|
\aunum is provided to support USA-style numbers
|
||||||
|
|
||||||
One may get \aenum behavior for \anum >
|
*g:alignmaps_usanumber* *g:alignmaps_euronumber*
|
||||||
|
One may get \aenum behavior for \anum by putting >
|
||||||
let g:alignmaps_euronumber= 1
|
let g:alignmaps_euronumber= 1
|
||||||
< or \aunum behavior for \anum if one puts >
|
< or \aunum behavior for \anum by putting >
|
||||||
let g:alignmaps_usanumber= 1
|
let g:alignmaps_usanumber= 1
|
||||||
< in one's <.vimrc>.
|
< in one's <.vimrc>.
|
||||||
|
|
||||||
@ -1311,21 +1400,48 @@ ALIGNMENT *align-align* {{{2
|
|||||||
4. Alignment Tools' History *align-history* {{{1
|
4. Alignment Tools' History *align-history* {{{1
|
||||||
|
|
||||||
ALIGN HISTORY {{{2
|
ALIGN HISTORY {{{2
|
||||||
|
36 : May 20, 2009 * Previously, the "W" AlignCtrl setting, intended
|
||||||
|
to retain initial white space, did so by convert-
|
||||||
|
ing any leading tabs into an equivalent quantity
|
||||||
|
of blanks (using the current tabstop setting).
|
||||||
|
Align will now retain leading tabs.
|
||||||
|
Nov 24, 2009 * QArgSplitter() used split(), intending to split
|
||||||
|
on white space only. However, the \tab map
|
||||||
|
uses ctrl-o as a separator instead of tabs; the
|
||||||
|
split() function treated the ctrl-o as a whitespace
|
||||||
|
character, too. Solution: give split() an explicit
|
||||||
|
pattern matching blanks and tabs, only. \tab now
|
||||||
|
works again!
|
||||||
|
Jun 29, 2010 * included |g:AlignSkip| and |alignctrl-star| support
|
||||||
|
May 10, 2011 * if the range is only one line, then Align will
|
||||||
|
automatically grow the range to accommodate all
|
||||||
|
lines containing the first separator pattern
|
||||||
|
surrounding the current line.
|
||||||
|
Aug 05, 2011 * g:Align_xstrlen usage extended to permit users to
|
||||||
|
specify a function by name which computes string
|
||||||
|
length.
|
||||||
|
Oct 27, 2011 * (reported by Fco Javier) reported a problem with
|
||||||
|
the default s:Strlen() result; there was a missing
|
||||||
|
"let". Fixed.
|
||||||
|
Nov 10, 2011 * (Lewis Thompson) Align was doing "set noet" when
|
||||||
|
it should've been doing "setlocal noet".
|
||||||
|
Dec 22, 2011 * modifed s:Strlen() to use |strdisplaywidth()| when
|
||||||
|
g:Align_xstrlen is zero.
|
||||||
35 : Nov 02, 2008 * g:loaded_AlignPlugin testing to prevent re-loading
|
35 : Nov 02, 2008 * g:loaded_AlignPlugin testing to prevent re-loading
|
||||||
installed
|
installed
|
||||||
Nov 19, 2008 * new sanity check for an AlignStyle of just ":"
|
Nov 19, 2008 * new sanity check for an AlignStyle of just ":"
|
||||||
Jan 08, 2009 * save&restore of |'mod'| now done with local
|
Jan 08, 2009 * save&restore of |'mod'| now done with local
|
||||||
variant
|
variant
|
||||||
34 : Jul 08, 2008 * using :AlignCtrl before entering any alignment
|
34 : Jul 08, 2008 * using :AlignCtrl before entering any alignment
|
||||||
control commands was causing an error.
|
control commands was causing an error.
|
||||||
33 : Sep 20, 2007 * s:Strlen() introduced to support various ways
|
33 : Sep 20, 2007 * s:Strlen() introduced to support various ways
|
||||||
used to represent characters and their effects
|
used to represent characters and their effects
|
||||||
on string lengths. See |align-strlen|.
|
on string lengths. See |align-strlen|.
|
||||||
* Align now accepts "..." -- so it can accept
|
* Align now accepts "..." -- so it can accept
|
||||||
whitespace as separators.
|
whitespace as separators.
|
||||||
32 : Aug 18, 2007 * uses |<q-args>| instead of |<f-args>| plus a
|
32 : Aug 18, 2007 * uses |<q-args>| instead of |<f-args>| plus a
|
||||||
custom argument splitter to allow patterns with
|
custom argument splitter to allow patterns with
|
||||||
backslashes to slide in unaltered.
|
backslashes to slide in unaltered.
|
||||||
31 : Aug 06, 2007 * :[range]Align! [AlignCtrl settings] pattern(s)
|
31 : Aug 06, 2007 * :[range]Align! [AlignCtrl settings] pattern(s)
|
||||||
implemented.
|
implemented.
|
||||||
30 : Feb 12, 2007 * now uses |setline()|
|
30 : Feb 12, 2007 * now uses |setline()|
|
||||||
@ -1341,8 +1457,8 @@ ALIGN HISTORY {{{2
|
|||||||
25 : Jul 27, 2004 : For debugging, uses Dfunc(), Dret(), and Decho()
|
25 : Jul 27, 2004 : For debugging, uses Dfunc(), Dret(), and Decho()
|
||||||
24 : Mar 03, 2004 : (should've done this earlier!) visualmode(1)
|
24 : Mar 03, 2004 : (should've done this earlier!) visualmode(1)
|
||||||
not supported until v6.2, now Align will avoid
|
not supported until v6.2, now Align will avoid
|
||||||
calling it for earlier versions. Visualmode
|
calling it for earlier versions. Visualmode
|
||||||
clearing won't take place then, of course.
|
clearing won't take place then, of course.
|
||||||
23 : Oct 07, 2003 : Included Leif Wickland's ReplaceQuotedSpaces()
|
23 : Oct 07, 2003 : Included Leif Wickland's ReplaceQuotedSpaces()
|
||||||
function which supports \tsq
|
function which supports \tsq
|
||||||
22 : Jan 29, 2003 : Now requires 6.1.308 or later to clear visualmode()
|
22 : Jan 29, 2003 : Now requires 6.1.308 or later to clear visualmode()
|
||||||
@ -1365,7 +1481,7 @@ ALIGN HISTORY {{{2
|
|||||||
14 : Aug 20, 2002 : bug fix: AlignCtrl default now keeps &ic unchanged
|
14 : Aug 20, 2002 : bug fix: AlignCtrl default now keeps &ic unchanged
|
||||||
bug fix: Align, on end-field, wasn't using correct
|
bug fix: Align, on end-field, wasn't using correct
|
||||||
alignop bug fix: Align, on end-field, was appending
|
alignop bug fix: Align, on end-field, was appending
|
||||||
padding
|
padding
|
||||||
13 : Aug 19, 2002 : bug fix: zero-length g/v patterns are accepted
|
13 : Aug 19, 2002 : bug fix: zero-length g/v patterns are accepted
|
||||||
bug fix: always skip blank lines
|
bug fix: always skip blank lines
|
||||||
bug fix: AlignCtrl default now also clears g and v
|
bug fix: AlignCtrl default now also clears g and v
|
||||||
@ -1382,28 +1498,37 @@ ALIGN HISTORY {{{2
|
|||||||
9 : Jun 25, 2002 : implemented cyclic padding
|
9 : Jun 25, 2002 : implemented cyclic padding
|
||||||
|
|
||||||
ALIGNMENT MAP HISTORY *alignmap-history* {{{2
|
ALIGNMENT MAP HISTORY *alignmap-history* {{{2
|
||||||
|
v42 Jan 06, 2010 * new maps for \anum, \aenum, \aunum
|
||||||
|
Feb 16, 2010 * map for \t=, \T= now handles x++ = something;
|
||||||
|
for c, c++ correctly.
|
||||||
|
Oct 29, 2010 * added a note on having one's own default
|
||||||
|
AlignCtrl (see |alignctrl-init|)
|
||||||
|
Feb 22, 2011 * for menus, &go =~# used to insure correct case
|
||||||
|
Jun 10, 2011 * |:AlignMapsClean| command provided to make it
|
||||||
|
easy for those who would prefer not to have
|
||||||
|
AlignMaps' maps not to have them.
|
||||||
v41 Nov 02, 2008 * g:loaded_AlignMapsPlugin testing to prevent
|
v41 Nov 02, 2008 * g:loaded_AlignMapsPlugin testing to prevent
|
||||||
re-loading installed
|
re-loading installed
|
||||||
* AlignMaps now use 0x0f (ctrl-p) for special
|
* AlignMaps now use 0x0f (ctrl-p) for special
|
||||||
character substitutions (instead of 0xff).
|
character substitutions (instead of 0xff).
|
||||||
Seems to avoid some problems with having to
|
Seems to avoid some problems with having to
|
||||||
use Strlen().
|
use Strlen().
|
||||||
* bug fixed with \ts,
|
* bug fixed with \ts,
|
||||||
* new maps: \ts; \ts, \ts: \ts< \ts= \a(
|
* new maps: \ts; \ts, \ts: \ts< \ts= \a(
|
||||||
v40 Oct 21, 2008 * Modified AlignMaps so that its maps use <Plug>s
|
v40 Oct 21, 2008 * Modified AlignMaps so that its maps use <Plug>s
|
||||||
and <script>s. \t@ and related maps have been
|
and <script>s. \t@ and related maps have been
|
||||||
changed to call StdAlign() instead. The
|
changed to call StdAlign() instead. The
|
||||||
WrapperStart function now takes an argument and
|
WrapperStart function now takes an argument and
|
||||||
handles being called via visual mode. The
|
handles being called via visual mode. The
|
||||||
former nmaps and vmaps have thus been replaced
|
former nmaps and vmaps have thus been replaced
|
||||||
with a simple map.
|
with a simple map.
|
||||||
Oct 24, 2008 * broke AlignMaps into a plugin and autoload
|
Oct 24, 2008 * broke AlignMaps into a plugin and autoload
|
||||||
pair of scripts.
|
pair of scripts.
|
||||||
v39 Mar 06, 2008 : * \t= only does /* ... */ aligning when in *.c
|
v39 Mar 06, 2008 : * \t= only does /* ... */ aligning when in *.c
|
||||||
*.cpp files.
|
*.cpp files.
|
||||||
v38 Aug 18, 2007 : * \tt altered so that it works with the new
|
v38 Aug 18, 2007 : * \tt altered so that it works with the new
|
||||||
use of |<q-args>| plus a custom argument
|
use of |<q-args>| plus a custom argument
|
||||||
splitter
|
splitter
|
||||||
v36 Sep 27, 2006 : * AlignWrapperStart() now has tests that marks
|
v36 Sep 27, 2006 : * AlignWrapperStart() now has tests that marks
|
||||||
y and z are not set
|
y and z are not set
|
||||||
May 15, 2007 * \anum and variants improved
|
May 15, 2007 * \anum and variants improved
|
||||||
|
@ -5,25 +5,26 @@ Making Vim's undo tree usable by humans.
|
|||||||
==============================================================================
|
==============================================================================
|
||||||
CONTENTS *Gundo-contents*
|
CONTENTS *Gundo-contents*
|
||||||
|
|
||||||
1. Intro .......................... |GundoIntro|
|
1. Intro ........................... |GundoIntro|
|
||||||
2. Usage .......................... |GundoUsage|
|
2. Usage ........................... |GundoUsage|
|
||||||
3. Configuration .................. |GundoConfig|
|
3. Configuration ................... |GundoConfig|
|
||||||
3.1 gundo_width ............... |gundo_width|
|
3.1 gundo_width ............... |gundo_width|
|
||||||
3.2 gundo_preview_height ...... |gundo_preview_height|
|
3.2 gundo_preview_height ...... |gundo_preview_height|
|
||||||
3.3 gundo_preview_bottom ...... |gundo_preview_bottom|
|
3.3 gundo_preview_bottom ...... |gundo_preview_bottom|
|
||||||
3.4 gundo_right ............... |gundo_right|
|
3.4 gundo_right ............... |gundo_right|
|
||||||
3.5 gundo_help ................ |gundo_help|
|
3.5 gundo_help ................ |gundo_help|
|
||||||
3.6 gundo_disable ............. |gundo_disable|
|
3.6 gundo_disable ............. |gundo_disable|
|
||||||
3.7 gundo_map_move_older ...... |gundo_map_move_older|
|
3.7 gundo_map_move_older ...... |gundo_map_move_older|
|
||||||
gundo_map_move_newer ...... |gundo_map_move_newer|
|
gundo_map_move_newer ...... |gundo_map_move_newer|
|
||||||
3.8 gundo_close_on_revert ..... |gundo_close_on_revert|
|
3.8 gundo_close_on_revert ..... |gundo_close_on_revert|
|
||||||
3.9 gundo_preview_statusline .. |gundo_preview_statusline|
|
3.9 gundo_preview_statusline .. |gundo_preview_statusline|
|
||||||
gundo_tree_statusline ..... |gundo_tree_statusline|
|
gundo_tree_statusline ..... |gundo_tree_statusline|
|
||||||
4. License ........................ |GundoLicense|
|
3.10 gundo_auto_preview ........ |gundo_auto_preview|
|
||||||
5. Bugs ........................... |GundoBugs|
|
4. License ......................... |GundoLicense|
|
||||||
6. Contributing ................... |GundoContributing|
|
5. Bugs ............................ |GundoBugs|
|
||||||
7. Changelog ...................... |GundoChangelog|
|
6. Contributing .................... |GundoContributing|
|
||||||
8. Credits ........................ |GundoCredits|
|
7. Changelog ....................... |GundoChangelog|
|
||||||
|
8. Credits ......................... |GundoCredits|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
1. Intro *GundoIntro*
|
1. Intro *GundoIntro*
|
||||||
@ -206,6 +207,15 @@ Set these to a string to display it as the status line for each Gundo window.
|
|||||||
|
|
||||||
Default: unset (windows use the default statusline)
|
Default: unset (windows use the default statusline)
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
3.10 g:gundo_auto_preview *gundo_auto_preview*
|
||||||
|
|
||||||
|
Set this to 0 to disable automatically rendering preview diffs as you move
|
||||||
|
through the undo tree (you can still render a specific diff with r). This can
|
||||||
|
be useful on large files and undo trees to speed up Gundo.
|
||||||
|
|
||||||
|
Default: 1 (automatically preview diffs)
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
4. License *GundoLicense*
|
4. License *GundoLicense*
|
||||||
|
|
||||||
@ -228,7 +238,10 @@ GitHub: http://github.com/sjl/gundo.vim/
|
|||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
7. Changelog *GundoChangelog*
|
7. Changelog *GundoChangelog*
|
||||||
|
v2.4.0
|
||||||
|
* Add auto preview option.
|
||||||
|
* Add 'r' mapping to preview current state.
|
||||||
|
* Add public gundo#GundoShow() and gundo#GundoHide() functions.
|
||||||
v2.3.0
|
v2.3.0
|
||||||
* Add statusline configuration.
|
* Add statusline configuration.
|
||||||
v2.2.2
|
v2.2.2
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
:AlignMapsClean Align.txt /*:AlignMapsClean*
|
||||||
:CVSEdit vcscommand.txt /*:CVSEdit*
|
:CVSEdit vcscommand.txt /*:CVSEdit*
|
||||||
:CVSEditors vcscommand.txt /*:CVSEditors*
|
:CVSEditors vcscommand.txt /*:CVSEditors*
|
||||||
:CVSUnedit vcscommand.txt /*:CVSUnedit*
|
:CVSUnedit vcscommand.txt /*:CVSUnedit*
|
||||||
@ -158,6 +159,7 @@ align-usage Align.txt /*align-usage*
|
|||||||
align-userguide Align.txt /*align-userguide*
|
align-userguide Align.txt /*align-userguide*
|
||||||
align-utf Align.txt /*align-utf*
|
align-utf Align.txt /*align-utf*
|
||||||
align-utf8 Align.txt /*align-utf8*
|
align-utf8 Align.txt /*align-utf8*
|
||||||
|
align-xstrlen Align.txt /*align-xstrlen*
|
||||||
align.txt Align.txt /*align.txt*
|
align.txt Align.txt /*align.txt*
|
||||||
alignctrl Align.txt /*alignctrl*
|
alignctrl Align.txt /*alignctrl*
|
||||||
alignctrl- Align.txt /*alignctrl-*
|
alignctrl- Align.txt /*alignctrl-*
|
||||||
@ -171,8 +173,11 @@ alignctrl-C Align.txt /*alignctrl-C*
|
|||||||
alignctrl-I Align.txt /*alignctrl-I*
|
alignctrl-I Align.txt /*alignctrl-I*
|
||||||
alignctrl-P Align.txt /*alignctrl-P*
|
alignctrl-P Align.txt /*alignctrl-P*
|
||||||
alignctrl-W Align.txt /*alignctrl-W*
|
alignctrl-W Align.txt /*alignctrl-W*
|
||||||
|
alignctrl-alignskip Align.txt /*alignctrl-alignskip*
|
||||||
alignctrl-c Align.txt /*alignctrl-c*
|
alignctrl-c Align.txt /*alignctrl-c*
|
||||||
alignctrl-g Align.txt /*alignctrl-g*
|
alignctrl-g Align.txt /*alignctrl-g*
|
||||||
|
alignctrl-init Align.txt /*alignctrl-init*
|
||||||
|
alignctrl-initialization Align.txt /*alignctrl-initialization*
|
||||||
alignctrl-l Align.txt /*alignctrl-l*
|
alignctrl-l Align.txt /*alignctrl-l*
|
||||||
alignctrl-m Align.txt /*alignctrl-m*
|
alignctrl-m Align.txt /*alignctrl-m*
|
||||||
alignctrl-no-option Align.txt /*alignctrl-no-option*
|
alignctrl-no-option Align.txt /*alignctrl-no-option*
|
||||||
@ -180,6 +185,7 @@ alignctrl-p Align.txt /*alignctrl-p*
|
|||||||
alignctrl-r Align.txt /*alignctrl-r*
|
alignctrl-r Align.txt /*alignctrl-r*
|
||||||
alignctrl-separators Align.txt /*alignctrl-separators*
|
alignctrl-separators Align.txt /*alignctrl-separators*
|
||||||
alignctrl-settings Align.txt /*alignctrl-settings*
|
alignctrl-settings Align.txt /*alignctrl-settings*
|
||||||
|
alignctrl-star Align.txt /*alignctrl-star*
|
||||||
alignctrl-v Align.txt /*alignctrl-v*
|
alignctrl-v Align.txt /*alignctrl-v*
|
||||||
alignctrl-w Align.txt /*alignctrl-w*
|
alignctrl-w Align.txt /*alignctrl-w*
|
||||||
alignman Align.txt /*alignman*
|
alignman Align.txt /*alignman*
|
||||||
@ -1497,11 +1503,14 @@ ex-visincr-IYMD visincr.txt /*ex-visincr-IYMD*
|
|||||||
fetch pi_netrw.txt /*fetch*
|
fetch pi_netrw.txt /*fetch*
|
||||||
ftp pi_netrw.txt /*ftp*
|
ftp pi_netrw.txt /*ftp*
|
||||||
g% matchit.txt /*g%*
|
g% matchit.txt /*g%*
|
||||||
|
g:AlignSkip Align.txt /*g:AlignSkip*
|
||||||
g:MultipleSearchColorSequence MultipleSearch.txt /*g:MultipleSearchColorSequence*
|
g:MultipleSearchColorSequence MultipleSearch.txt /*g:MultipleSearchColorSequence*
|
||||||
g:MultipleSearchMaxColors MultipleSearch.txt /*g:MultipleSearchMaxColors*
|
g:MultipleSearchMaxColors MultipleSearch.txt /*g:MultipleSearchMaxColors*
|
||||||
g:MultipleSearchTextColorSequence MultipleSearch.txt /*g:MultipleSearchTextColorSequence*
|
g:MultipleSearchTextColorSequence MultipleSearch.txt /*g:MultipleSearchTextColorSequence*
|
||||||
g:NetrwTopLvlMenu pi_netrw.txt /*g:NetrwTopLvlMenu*
|
g:NetrwTopLvlMenu pi_netrw.txt /*g:NetrwTopLvlMenu*
|
||||||
g:Netrw_funcref pi_netrw.txt /*g:Netrw_funcref*
|
g:Netrw_funcref pi_netrw.txt /*g:Netrw_funcref*
|
||||||
|
g:alignmaps_euronumber Align.txt /*g:alignmaps_euronumber*
|
||||||
|
g:alignmaps_usanumber Align.txt /*g:alignmaps_usanumber*
|
||||||
g:netrw_alto pi_netrw.txt /*g:netrw_alto*
|
g:netrw_alto pi_netrw.txt /*g:netrw_alto*
|
||||||
g:netrw_altv pi_netrw.txt /*g:netrw_altv*
|
g:netrw_altv pi_netrw.txt /*g:netrw_altv*
|
||||||
g:netrw_banner pi_netrw.txt /*g:netrw_banner*
|
g:netrw_banner pi_netrw.txt /*g:netrw_banner*
|
||||||
@ -1623,6 +1632,7 @@ glvs-options pi_getscript.txt /*glvs-options*
|
|||||||
glvs-plugins pi_getscript.txt /*glvs-plugins*
|
glvs-plugins pi_getscript.txt /*glvs-plugins*
|
||||||
glvs-usage pi_getscript.txt /*glvs-usage*
|
glvs-usage pi_getscript.txt /*glvs-usage*
|
||||||
gundo.txt gundo.txt /*gundo.txt*
|
gundo.txt gundo.txt /*gundo.txt*
|
||||||
|
gundo_auto_preview gundo.txt /*gundo_auto_preview*
|
||||||
gundo_close_on_revert gundo.txt /*gundo_close_on_revert*
|
gundo_close_on_revert gundo.txt /*gundo_close_on_revert*
|
||||||
gundo_disable gundo.txt /*gundo_disable*
|
gundo_disable gundo.txt /*gundo_disable*
|
||||||
gundo_help gundo.txt /*gundo_help*
|
gundo_help gundo.txt /*gundo_help*
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
" AlignMapsPlugin: Alignment maps based upon <Align.vim> and <AlignMaps.vim>
|
" AlignMapsPlugin: Alignment maps based upon <Align.vim> and <AlignMaps.vim>
|
||||||
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
|
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||||
" Date: Mar 03, 2009
|
" Date: Jun 18, 2012
|
||||||
"
|
"
|
||||||
" NOTE: the code herein needs vim 6.0 or later
|
" NOTE: the code herein needs vim 7.0 or later
|
||||||
" needs <Align.vim> v6 or later
|
" Copyright: Copyright (C) 1999-2012 Charles E. Campbell, Jr. {{{1
|
||||||
" 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,
|
" Permission is hereby granted to use and distribute this code,
|
||||||
" with or without modifications, provided that this copyright
|
" with or without modifications, provided that this copyright
|
||||||
" notice is copied with it. Like anything else that's free,
|
" notice is copied with it. Like anything else that's free,
|
||||||
@ -14,7 +12,12 @@
|
|||||||
" plugin, you agree that in no event will the copyright
|
" plugin, you agree that in no event will the copyright
|
||||||
" holder be liable for any damages resulting from the use
|
" holder be liable for any damages resulting from the use
|
||||||
" of this software.
|
" of this software.
|
||||||
"
|
" 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.
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
" Usage: {{{1
|
" Usage: {{{1
|
||||||
" Use 'a to mark beginning of to-be-aligned region, Alternative: use V
|
" 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
|
" move cursor to end of region, and execute map. (linewise visual mode) to
|
||||||
@ -29,20 +32,18 @@
|
|||||||
"
|
"
|
||||||
" Note: these maps all use <Align.vim>.
|
" 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
|
" Load Once: {{{1
|
||||||
if &cp || exists("g:loaded_AlignMapsPlugin")
|
if &cp || exists("g:loaded_AlignMapsPlugin")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let s:keepcpo = &cpo
|
let s:keepcpo = &cpo
|
||||||
let g:loaded_AlignMapsPlugin = "v41"
|
let g:loaded_AlignMapsPlugin = "v42"
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
|
" =====================================================================
|
||||||
|
" Public Interface: {{{1
|
||||||
|
com! AlignMapsClean :call AlignMaps#AlignMapsClean()
|
||||||
|
|
||||||
" =====================================================================
|
" =====================================================================
|
||||||
" Maps: {{{1
|
" Maps: {{{1
|
||||||
|
|
||||||
@ -79,14 +80,17 @@ 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_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_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
|
" Number alignment maps: {{{2
|
||||||
|
if !hasmapto('<Plug>AM_aunum')|map <unique> <Leader>aunum <Plug>AM_aunum|endif
|
||||||
|
if !hasmapto('<Plug>AM_aenum')|map <unique> <Leader>aenum <Plug>AM_aenum|endif
|
||||||
if exists("g:alignmaps_euronumber") && !exists("g:alignmaps_usanumber")
|
if exists("g:alignmaps_euronumber") && !exists("g:alignmaps_usanumber")
|
||||||
if !hasmapto('<Plug>AM_anum')|map <unique> <Leader>anum <Plug>AM_aenum|endif
|
if !hasmapto('<Plug>AM_anum')|map <unique> <Leader>anum <Plug>AM_aenum|endif
|
||||||
else
|
else
|
||||||
if !hasmapto('<Plug>AM_anum')|map <unique> <Leader>anum <Plug>AM_aunum|endif
|
if !hasmapto('<Plug>AM_anum')|map <unique> <Leader>anum <Plug>AM_aunum|endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Plug maps: (the real thing) {{{2
|
||||||
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: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:'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 mIp1P1=l << >><CR>:'a,.Align<CR><SID>WE
|
||||||
@ -97,12 +101,11 @@ map <silent> <script> <Plug>AM_acom <SID>WS:'a,.s/\/[*/]\/\=/@&@/e<CR>:'a,.s/\*
|
|||||||
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_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_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_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_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*\%([a-zA-Z_][a-zA-Z_0-9<>:]*\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_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_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_aunum <SID>WS:'a,'zs/\([-+]\=\d\+\)\([eE][-+]\d\+\)\=/\1#\2/ge<CR>:'a,'zs/\([.eE][-+]\=\d\+\)#/\1/ge<CR>:'a,'zs/#\././ge<CR>:'a,'zs/[-+]\=\%(\d\+\%([.#]\d*\)\=\<bar>[.#]\d\+\)\%([eE][-+]\=\d\+\)\=/@&@/ge<CR>:AlignCtrl Imp0P0r<CR>:'a,'zAlign [@#.]<CR>:'a,'zs/\([.#]\)\(\s\+\)\(\d*\%([eE][-+]\=\d\+\)\=\)@/\1\3\2@/ge<CR>:'a,'zs/@//<CR>:'a,'zs/[#@]/ /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
|
map <silent> <script> <Plug>AM_aenum <SID>WS:'a,'zs/\([-+]\=\d\+\)\([eE][-+]\d\+\)\=/\1#\2/ge<CR>:'a,'zs/\([,eE][-+]\=\d\+\)#/\1/ge<CR>:'a,'zs/#,/,/ge<CR>:'a,'zs/[-+]\=\%(\d\+\%([,#]\d*\)\=\<bar>[,#]\d\+\)\%([eE][-+]\=\d\+\)\=/@&@/ge<CR>:AlignCtrl Imp0P0r<CR>:'a,'zAlign [@#,]<CR>:'a,'zs/\([,#]\)\(\s\+\)\(\d*\%([eE][-+]\=\d\+\)\=\)@/\1\3\2@/ge<CR>:'a,'zs/@//<CR>:'a,'zs/[#@]/ /ge<CR><SID>WE
|
||||||
|
|
||||||
" ---------------------------------------------------------------------
|
" ---------------------------------------------------------------------
|
||||||
" html table alignment {{{2
|
" html table alignment {{{2
|
||||||
if !hasmapto('<Plug>AM_Htd')|map <unique> <Leader>Htd <Plug>AM_Htd|endif
|
if !hasmapto('<Plug>AM_Htd')|map <unique> <Leader>Htd <Plug>AM_Htd|endif
|
||||||
@ -120,6 +123,7 @@ 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_TW@') |map <unique> <Leader>TW@ <Plug>AM_TW@|endif
|
||||||
if !hasmapto('<Plug>AM_Tab') |map <unique> <Leader>Tab <Plug>AM_Tab|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_Tsp') |map <unique> <Leader>Tsp <Plug>AM_Tsp|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
|
||||||
@ -134,6 +138,7 @@ map <silent> <script> <Plug>AM_T< <SID>WS:AlignCtrl mIp0P0=r <<CR>:'a,.Align<C
|
|||||||
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:'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>:'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_T@ <SID>WS:AlignCtrl mIp0P0=r @<CR>:'a,.Align<CR><SID>WE
|
||||||
|
map <silent> <script> <Plug>AM_TW@ <SID>WS:AlignCtrl mWp0P0=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_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_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
|
map <silent> <script> <Plug>AM_T~ <SID>WS:AlignCtrl mIp0P0=r ~<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
|
||||||
@ -156,6 +161,7 @@ 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_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_tW@') |map <unique> <Leader>tW@ <Plug>AM_tW@|endif
|
||||||
if !hasmapto('<Plug>AM_m=') |map <unique> <Leader>m= <Plug>AM_m=|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_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_tml') |map <unique> <Leader>tml <Plug>AM_tml|endif
|
||||||
@ -170,28 +176,29 @@ map <silent> <script> <Plug>AM_t: <SID>WS:AlignCtrl mIp1P1=l :<CR>:'a,.Align<CR
|
|||||||
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 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: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_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 #\zs<CR>:'a,.Align<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 ,\zs<CR>:'a,.Align<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 :\zs<CR>:'a,.Align<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 ;\zs<CR>:'a,.Align<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 <\zs<CR>:'a,.Align<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 =\zs<CR>:'a,.Align<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_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>:.,'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: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_t@ <SID>WS:call AlignMaps#StdAlign(1)<cr><SID>WE
|
||||||
|
map <silent> <script> <Plug>AM_tW@ <SID>WS:call AlignMaps#StdAlign(2)<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_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_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"<bar>endif<CR>:'a,.Align <Char-0x0f><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_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_tsp <SID>WS:keepj 'a,.s/^\(\s*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\s\+','@','g'),'\')/<CR>:AlignCtrl mI=lp0P0 @<CR>:'a,.Align<CR>:keepj '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_tsq <SID>WS:'a,.AlignReplaceQuotedSpaces<CR>:keepj 'a,.s/^\(\s*\)\(.*\)/\=submatch(1).substitute(submatch(2),'\s\+','@','g')/<CR>:AlignCtrl mIp0P0=l @<CR>:'a,.Align<CR>:keepj '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
|
map <silent> <script> <Plug>AM_tt <SID>WS:AlignCtrl mIp1P1=l \\\@<!& \\\\<CR>:'a,.Align<CR><SID>WE
|
||||||
|
|
||||||
" =====================================================================
|
" =====================================================================
|
||||||
" Menu Support: {{{1
|
" Menu Support: {{{1
|
||||||
" ma ..move.. use menu
|
" ma ..move.. use menu
|
||||||
" v V or ctrl-v ..move.. use menu
|
" v V or ctrl-v ..move.. use menu
|
||||||
if has("menu") && has("gui_running") && &go =~ 'm' && !exists("s:firstmenu")
|
if has("menu") && has("gui_running") && &go =~# 'm' && !exists("s:firstmenu")
|
||||||
let s:firstmenu= 1
|
let s:firstmenu= 1
|
||||||
if !exists("g:DrChipTopLvlMenu")
|
if !exists("g:DrChipTopLvlMenu")
|
||||||
let g:DrChipTopLvlMenu= "DrChip."
|
let g:DrChipTopLvlMenu= "DrChip."
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
" Date: Nov 02, 2008
|
" Date: Nov 02, 2008
|
||||||
" GetLatestVimScripts: 294 1 :AutoInstall: Align.vim
|
" GetLatestVimScripts: 294 1 :AutoInstall: Align.vim
|
||||||
" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
|
" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
|
||||||
" Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
|
" Copyright: Copyright (C) 1999-2012 Charles E. Campbell, Jr. {{{1
|
||||||
" Permission is hereby granted to use and distribute this code,
|
" Permission is hereby granted to use and distribute this code,
|
||||||
" with or without modifications, provided that this copyright
|
" with or without modifications, provided that this copyright
|
||||||
" notice is copied with it. Like anything else that's free,
|
" notice is copied with it. Like anything else that's free,
|
||||||
@ -22,7 +22,7 @@
|
|||||||
if &cp || exists("g:loaded_AlignPlugin")
|
if &cp || exists("g:loaded_AlignPlugin")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let g:loaded_AlignPlugin = "v35"
|
let g:loaded_AlignPlugin = "v36"
|
||||||
let s:keepcpo = &cpo
|
let s:keepcpo = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
" save/restore mark position
|
" save/restore mark position
|
||||||
" save/restore selected user maps
|
" save/restore selected user maps
|
||||||
" Author: Charles E. Campbell, Jr.
|
" Author: Charles E. Campbell, Jr.
|
||||||
" Version: 18b ASTRO-ONLY
|
" Version: 18h ASTRO-ONLY
|
||||||
" Date: Aug 27, 2008
|
" Date: Apr 05, 2010
|
||||||
"
|
"
|
||||||
" Saving Restoring Destroying Marks: {{{1
|
" Saving Restoring Destroying Marks: {{{1
|
||||||
" call SaveMark(markname) let savemark= SaveMark(markname)
|
" call SaveMark(markname) let savemark= SaveMark(markname)
|
||||||
@ -27,16 +27,17 @@
|
|||||||
" You believe that God is one. You do well. The demons also {{{1
|
" 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
|
" believe, and shudder. But do you want to know, vain man, that
|
||||||
" faith apart from works is dead? (James 2:19,20 WEB)
|
" faith apart from works is dead? (James 2:19,20 WEB)
|
||||||
|
"redraw!|call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||||
|
|
||||||
" ---------------------------------------------------------------------
|
" ---------------------------------------------------------------------
|
||||||
" Load Once: {{{1
|
" Load Once: {{{1
|
||||||
if &cp || exists("g:loaded_cecutil")
|
if &cp || exists("g:loaded_cecutil")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let g:loaded_cecutil = "v18b"
|
let g:loaded_cecutil = "v18h"
|
||||||
let s:keepcpo = &cpo
|
let s:keepcpo = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
"DechoTabOn
|
"DechoRemOn
|
||||||
|
|
||||||
" =======================
|
" =======================
|
||||||
" Public Interface: {{{1
|
" Public Interface: {{{1
|
||||||
@ -56,15 +57,17 @@ nmap <silent> <Plug>RestoreWinPosn :call RestoreWinPosn()<CR>
|
|||||||
" ---------------------------------------------------------------------
|
" ---------------------------------------------------------------------
|
||||||
" Command Interface: {{{2
|
" Command Interface: {{{2
|
||||||
com! -bar -nargs=0 SWP call SaveWinPosn()
|
com! -bar -nargs=0 SWP call SaveWinPosn()
|
||||||
com! -bar -nargs=0 RWP call RestoreWinPosn()
|
com! -bar -nargs=? RWP call RestoreWinPosn(<args>)
|
||||||
com! -bar -nargs=1 SM call SaveMark(<q-args>)
|
com! -bar -nargs=1 SM call SaveMark(<q-args>)
|
||||||
com! -bar -nargs=1 RM call RestoreMark(<q-args>)
|
com! -bar -nargs=1 RM call RestoreMark(<q-args>)
|
||||||
com! -bar -nargs=1 DM call DestroyMark(<q-args>)
|
com! -bar -nargs=1 DM call DestroyMark(<q-args>)
|
||||||
|
|
||||||
|
com! -bar -nargs=1 WLR call s:WinLineRestore(<q-args>)
|
||||||
|
|
||||||
if v:version < 630
|
if v:version < 630
|
||||||
let s:modifier= "sil "
|
let s:modifier= "sil! "
|
||||||
else
|
else
|
||||||
let s:modifier= "sil keepj "
|
let s:modifier= "sil! keepj "
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" ===============
|
" ===============
|
||||||
@ -77,9 +80,9 @@ endif
|
|||||||
" call SaveWinPosn() will save window position in b:cecutil_winposn{b:cecutil_iwinposn}
|
" 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)
|
" let winposn= SaveWinPosn(0) will *only* save window position in winposn variable (no stacking done)
|
||||||
fun! SaveWinPosn(...)
|
fun! SaveWinPosn(...)
|
||||||
" call Dfunc("SaveWinPosn() a:0=".a:0)
|
" echomsg "Decho: SaveWinPosn() a:0=".a:0
|
||||||
if line(".") == 1 && getline(1) == ""
|
if line("$") == 1 && getline(1) == ""
|
||||||
" call Dfunc("SaveWinPosn : empty buffer")
|
" echomsg "Decho: SaveWinPosn : empty buffer"
|
||||||
return ""
|
return ""
|
||||||
endif
|
endif
|
||||||
let so_keep = &l:so
|
let so_keep = &l:so
|
||||||
@ -87,14 +90,20 @@ fun! SaveWinPosn(...)
|
|||||||
let ss_keep = &l:ss
|
let ss_keep = &l:ss
|
||||||
setlocal so=0 siso=0 ss=0
|
setlocal so=0 siso=0 ss=0
|
||||||
|
|
||||||
let swline = line(".")
|
let swline = line(".") " save-window line in file
|
||||||
let swcol = col(".")
|
let swcol = col(".") " save-window column in file
|
||||||
let swwline = winline() - 1
|
if swcol >= col("$")
|
||||||
let swwcol = virtcol(".") - wincol()
|
let swcol= swcol + virtcol(".") - virtcol("$") " adjust for virtual edit (cursor past end-of-line)
|
||||||
let savedposn = "call GoWinbufnr(".winbufnr(0).")|silent ".swline
|
endif
|
||||||
|
let swwline = winline() - 1 " save-window window line
|
||||||
|
let swwcol = virtcol(".") - wincol() " save-window window column
|
||||||
|
let savedposn = ""
|
||||||
|
" echomsg "Decho: sw[".swline.",".swcol."] sww[".swwline.",".swwcol."]"
|
||||||
|
let savedposn = "call GoWinbufnr(".winbufnr(0).")"
|
||||||
|
let savedposn = savedposn."|".s:modifier.swline
|
||||||
let savedposn = savedposn."|".s:modifier."norm! 0z\<cr>"
|
let savedposn = savedposn."|".s:modifier."norm! 0z\<cr>"
|
||||||
if swwline > 0
|
if swwline > 0
|
||||||
let savedposn= savedposn.":".s:modifier."norm! ".swwline."\<c-y>\<cr>"
|
let savedposn= savedposn.":".s:modifier."call s:WinLineRestore(".(swwline+1).")\<cr>"
|
||||||
endif
|
endif
|
||||||
if swwcol > 0
|
if swwcol > 0
|
||||||
let savedposn= savedposn.":".s:modifier."norm! 0".swwcol."zl\<cr>"
|
let savedposn= savedposn.":".s:modifier."norm! 0".swwcol."zl\<cr>"
|
||||||
@ -106,11 +115,11 @@ fun! SaveWinPosn(...)
|
|||||||
" only when SaveWinPosn() is used
|
" only when SaveWinPosn() is used
|
||||||
if a:0 == 0
|
if a:0 == 0
|
||||||
if !exists("b:cecutil_iwinposn")
|
if !exists("b:cecutil_iwinposn")
|
||||||
let b:cecutil_iwinposn= 1
|
let b:cecutil_iwinposn= 1
|
||||||
else
|
else
|
||||||
let b:cecutil_iwinposn= b:cecutil_iwinposn + 1
|
let b:cecutil_iwinposn= b:cecutil_iwinposn + 1
|
||||||
endif
|
endif
|
||||||
" call Decho("saving posn to SWP stack")
|
" echomsg "Decho: saving posn to SWP stack"
|
||||||
let b:cecutil_winposn{b:cecutil_iwinposn}= savedposn
|
let b:cecutil_winposn{b:cecutil_iwinposn}= savedposn
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -118,12 +127,12 @@ fun! SaveWinPosn(...)
|
|||||||
let &siso = siso_keep
|
let &siso = siso_keep
|
||||||
let &l:ss = ss_keep
|
let &l:ss = ss_keep
|
||||||
|
|
||||||
" if exists("b:cecutil_iwinposn") " Decho
|
" if exists("b:cecutil_iwinposn") " Decho
|
||||||
" call Decho("b:cecutil_winpos{".b:cecutil_iwinposn."}[".b:cecutil_winposn{b:cecutil_iwinposn}."]")
|
" echomsg "Decho: b:cecutil_winpos{".b:cecutil_iwinposn."}[".b:cecutil_winposn{b:cecutil_iwinposn}."]"
|
||||||
" else " Decho
|
" else " Decho
|
||||||
" call Decho("b:cecutil_iwinposn doesn't exist")
|
" echomsg "Decho: b:cecutil_iwinposn doesn't exist"
|
||||||
" endif " Decho
|
" endif " Decho
|
||||||
" call Dret("SaveWinPosn [".savedposn."]")
|
" echomsg "Decho: SaveWinPosn [".savedposn."]"
|
||||||
return savedposn
|
return savedposn
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
@ -132,11 +141,11 @@ endfun
|
|||||||
" call RestoreWinPosn()
|
" call RestoreWinPosn()
|
||||||
" call RestoreWinPosn(winposn)
|
" call RestoreWinPosn(winposn)
|
||||||
fun! RestoreWinPosn(...)
|
fun! RestoreWinPosn(...)
|
||||||
" call Dfunc("RestoreWinPosn() a:0=".a:0)
|
" echomsg "Decho: RestoreWinPosn() a:0=".a:0
|
||||||
" call Decho("getline(1)<".getline(1).">")
|
" echomsg "Decho: getline(1)<".getline(1).">"
|
||||||
" call Decho("line(.)=".line("."))
|
" echomsg "Decho: line(.)=".line(".")
|
||||||
if line(".") == 1 && getline(1) == ""
|
if line("$") == 1 && getline(1) == ""
|
||||||
" call Dfunc("RestoreWinPosn : empty buffer")
|
" echomsg "Decho: RestoreWinPosn : empty buffer"
|
||||||
return ""
|
return ""
|
||||||
endif
|
endif
|
||||||
let so_keep = &l:so
|
let so_keep = &l:so
|
||||||
@ -147,15 +156,15 @@ fun! RestoreWinPosn(...)
|
|||||||
if a:0 == 0 || a:1 == ""
|
if a:0 == 0 || a:1 == ""
|
||||||
" use saved window position in b:cecutil_winposn{b:cecutil_iwinposn} if it exists
|
" 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}")
|
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}.">")
|
" echomsg "Decho: using stack b:cecutil_winposn{".b:cecutil_iwinposn."}<".b:cecutil_winposn{b:cecutil_iwinposn}.">"
|
||||||
try
|
try
|
||||||
exe "silent! ".b:cecutil_winposn{b:cecutil_iwinposn}
|
exe s:modifier.b:cecutil_winposn{b:cecutil_iwinposn}
|
||||||
catch /^Vim\%((\a\+)\)\=:E749/
|
catch /^Vim\%((\a\+)\)\=:E749/
|
||||||
" ignore empty buffer error messages
|
" ignore empty buffer error messages
|
||||||
endtry
|
endtry
|
||||||
" normally drop top-of-stack by one
|
" normally drop top-of-stack by one
|
||||||
" but while new top-of-stack doesn't exist
|
" but while new top-of-stack doesn't exist
|
||||||
" drop top-of-stack index by one again
|
" drop top-of-stack index by one again
|
||||||
if b:cecutil_iwinposn >= 1
|
if b:cecutil_iwinposn >= 1
|
||||||
unlet b:cecutil_winposn{b:cecutil_iwinposn}
|
unlet b:cecutil_winposn{b:cecutil_iwinposn}
|
||||||
let b:cecutil_iwinposn= b:cecutil_iwinposn - 1
|
let b:cecutil_iwinposn= b:cecutil_iwinposn - 1
|
||||||
@ -167,29 +176,29 @@ fun! RestoreWinPosn(...)
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
echohl WarningMsg
|
echohl WarningMsg
|
||||||
echomsg "***warning*** need to SaveWinPosn first!"
|
echomsg "***warning*** need to SaveWinPosn first!"
|
||||||
echohl None
|
echohl None
|
||||||
endif
|
endif
|
||||||
|
|
||||||
else " handle input argument
|
else " handle input argument
|
||||||
" call Decho("using input a:1<".a:1.">")
|
" echomsg "Decho: using input a:1<".a:1.">"
|
||||||
" use window position passed to this function
|
" use window position passed to this function
|
||||||
exe "silent ".a:1
|
exe a:1
|
||||||
" remove a:1 pattern from b:cecutil_winposn{b:cecutil_iwinposn} stack
|
" remove a:1 pattern from b:cecutil_winposn{b:cecutil_iwinposn} stack
|
||||||
if exists("b:cecutil_iwinposn")
|
if exists("b:cecutil_iwinposn")
|
||||||
let jwinposn= b:cecutil_iwinposn
|
let jwinposn= b:cecutil_iwinposn
|
||||||
while jwinposn >= 1 " search for a:1 in iwinposn..1
|
while jwinposn >= 1 " search for a:1 in iwinposn..1
|
||||||
if exists("b:cecutil_winposn{jwinposn}") " if it exists
|
if exists("b:cecutil_winposn{jwinposn}") " if it exists
|
||||||
if a:1 == b:cecutil_winposn{jwinposn} " and the pattern matches
|
if a:1 == b:cecutil_winposn{jwinposn} " and the pattern matches
|
||||||
unlet b:cecutil_winposn{jwinposn} " unlet it
|
unlet b:cecutil_winposn{jwinposn} " unlet it
|
||||||
if jwinposn == b:cecutil_iwinposn " if at top-of-stack
|
if jwinposn == b:cecutil_iwinposn " if at top-of-stack
|
||||||
let b:cecutil_iwinposn= b:cecutil_iwinposn - 1 " drop stacktop by one
|
let b:cecutil_iwinposn= b:cecutil_iwinposn - 1 " drop stacktop by one
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
let jwinposn= jwinposn - 1
|
let jwinposn= jwinposn - 1
|
||||||
endwhile
|
endwhile
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -197,17 +206,34 @@ fun! RestoreWinPosn(...)
|
|||||||
" cause jump to first column. The following fixes that.
|
" cause jump to first column. The following fixes that.
|
||||||
" Note: was using wincol()>1, but with signs, a cursor
|
" Note: was using wincol()>1, but with signs, a cursor
|
||||||
" at column 1 yields wincol()==3. Beeping ensued.
|
" at column 1 yields wincol()==3. Beeping ensued.
|
||||||
|
let vekeep= &ve
|
||||||
|
set ve=all
|
||||||
if virtcol('.') > 1
|
if virtcol('.') > 1
|
||||||
silent norm! hl
|
exe s:modifier."norm! hl"
|
||||||
elseif virtcol(".") < virtcol("$")
|
elseif virtcol(".") < virtcol("$")
|
||||||
silent norm! lh
|
exe s:modifier."norm! lh"
|
||||||
endif
|
endif
|
||||||
|
let &ve= vekeep
|
||||||
|
|
||||||
let &l:so = so_keep
|
let &l:so = so_keep
|
||||||
let &l:siso = siso_keep
|
let &l:siso = siso_keep
|
||||||
let &l:ss = ss_keep
|
let &l:ss = ss_keep
|
||||||
|
|
||||||
" call Dret("RestoreWinPosn")
|
" echomsg "Decho: RestoreWinPosn"
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------
|
||||||
|
" s:WinLineRestore: {{{2
|
||||||
|
fun! s:WinLineRestore(swwline)
|
||||||
|
" echomsg "Decho: s:WinLineRestore(swwline=".a:swwline.")"
|
||||||
|
while winline() < a:swwline
|
||||||
|
let curwinline= winline()
|
||||||
|
exe s:modifier."norm! \<c-y>"
|
||||||
|
if curwinline == winline()
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
" echomsg "Decho: s:WinLineRestore"
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
" ---------------------------------------------------------------------
|
" ---------------------------------------------------------------------
|
||||||
@ -416,11 +442,11 @@ fun! SaveUserMaps(mapmode,maplead,mapchx,suffix)
|
|||||||
let dobuffer = ""
|
let dobuffer = ""
|
||||||
while mapmode =~ '^[bu]'
|
while mapmode =~ '^[bu]'
|
||||||
if mapmode =~ '^u'
|
if mapmode =~ '^u'
|
||||||
let dounmap= 1
|
let dounmap = 1
|
||||||
let mapmode= strpart(a:mapmode,1)
|
let mapmode = strpart(a:mapmode,1)
|
||||||
elseif mapmode =~ '^b'
|
elseif mapmode =~ '^b'
|
||||||
let dobuffer= "<buffer> "
|
let dobuffer = "<buffer> "
|
||||||
let mapmode= strpart(a:mapmode,1)
|
let mapmode = strpart(a:mapmode,1)
|
||||||
endif
|
endif
|
||||||
endwhile
|
endwhile
|
||||||
" call Decho("dounmap=".dounmap." dobuffer<".dobuffer.">")
|
" call Decho("dounmap=".dounmap." dobuffer<".dobuffer.">")
|
||||||
@ -453,7 +479,7 @@ fun! SaveUserMaps(mapmode,maplead,mapchx,suffix)
|
|||||||
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".dobuffer.amap
|
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".dobuffer.amap
|
||||||
if maparg(a:mapchx,mapmode) != ""
|
if maparg(a:mapchx,mapmode) != ""
|
||||||
let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
|
let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
|
||||||
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".amap." ".dobuffer.maprhs
|
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".dobuffer.amap." ".maprhs
|
||||||
endif
|
endif
|
||||||
if dounmap
|
if dounmap
|
||||||
exe "silent! ".mapmode."unmap ".dobuffer.amap
|
exe "silent! ".mapmode."unmap ".dobuffer.amap
|
||||||
@ -471,7 +497,7 @@ fun! SaveUserMaps(mapmode,maplead,mapchx,suffix)
|
|||||||
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".dobuffer.amap
|
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".dobuffer.amap
|
||||||
if maparg(amap,mapmode) != ""
|
if maparg(amap,mapmode) != ""
|
||||||
let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
|
let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
|
||||||
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".amap." ".dobuffer.maprhs
|
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".dobuffer.amap." ".maprhs
|
||||||
endif
|
endif
|
||||||
if dounmap
|
if dounmap
|
||||||
exe "silent! ".mapmode."unmap ".dobuffer.amap
|
exe "silent! ".mapmode."unmap ".dobuffer.amap
|
||||||
|
@ -41,6 +41,8 @@
|
|||||||
" 01/27/05 - added sleep to consume less CPU
|
" 01/27/05 - added sleep to consume less CPU
|
||||||
" removed frame counter
|
" removed frame counter
|
||||||
" 01/26/05 - initial version
|
" 01/26/05 - initial version
|
||||||
|
"
|
||||||
|
" This script is released under MIT license.
|
||||||
|
|
||||||
|
|
||||||
" Speed range, must be positive. Lower delay = faster.
|
" Speed range, must be positive. Lower delay = faster.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user