Updated plugins

Added solarize colorscheme
This commit is contained in:
Andrea Mistrali 2013-04-11 15:36:38 +00:00
parent bfbaa2149d
commit f7c35d77ef
12 changed files with 1554 additions and 493 deletions

View File

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

View File

@ -2,7 +2,7 @@ ScriptID SourceID Filename
-------------------------- --------------------------
910 18164 :AutoInstall: pydoc.vim 910 18164 :AutoInstall: pydoc.vim
2771 16279 :AutoInstall: conque_term.vim 2771 16279 :AutoInstall: conque_term.vim
294 18148 :AutoInstall: Align.vim 294 19633 :AutoInstall: Align.vim
1066 7618 :AutoInstall: cecutil.vim 1066 7618 :AutoInstall: cecutil.vim
642 15781 :AutoInstall: getscript.vim 642 15781 :AutoInstall: getscript.vim
2324 9247 :AutoInstall: TextFormat 2324 9247 :AutoInstall: TextFormat

View File

@ -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
" Date: Jun 18, 2012 " Date: Mar 12, 2013
" Version: 36 " Version: 37
" 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-2012 Charles E. Campbell, Jr. {{{1 " Copyright: Copyright (C) 1999-2012 Charles E. Campbell {{{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,
@ -25,7 +25,7 @@
if exists("g:loaded_Align") || &cp if exists("g:loaded_Align") || &cp
finish finish
endif endif
let g:loaded_Align = "v36" let g:loaded_Align = "v37"
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"
@ -43,7 +43,11 @@ set cpo&vim
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Options: {{{1 " Options: {{{1
if !exists("g:Align_xstrlen") if !exists("g:Align_xstrlen")
if &enc == "latin1" || $LANG == "en_US.UTF-8" || !has("multi_byte") if exists("g:drawit_xstrlen")
let g:Align_xstrlen= g:drawit_xstrlen
elseif exists("g:netrw_xstrlen")
let g:Align_xstrlen= g:netrw_xstrlen
elseif &enc == "latin1" || !has("multi_byte")
let g:Align_xstrlen= 0 let g:Align_xstrlen= 0
else else
let g:Align_xstrlen= 1 let g:Align_xstrlen= 1
@ -529,19 +533,19 @@ fun! Align#Align(hasctrl,...) range
" call Decho(" ") " call Decho(" ")
" call Decho("---- Pass ".pass.": ----") " call Decho("---- Pass ".pass.": ----")
let line= begline let curline= begline
while line <= endline while curline <= endline
" Process each line " Process each line
let txt = getline(line) let txt = getline(curline)
" call Decho(" ") " call Decho(" ")
" call Decho("Pass".pass.": Line ".line." <".txt.">") " call Decho("Pass".pass.": Line ".curline." <".txt.">")
" AlignGPat support: allows a selector pattern (akin to g/selector/cmd ) " AlignGPat support: allows a selector pattern (akin to g/selector/cmd )
if exists("s:AlignGPat") if exists("s:AlignGPat")
" call Decho("Pass".pass.": AlignGPat<".s:AlignGPat.">") " call Decho("Pass".pass.": AlignGPat<".s:AlignGPat.">")
if match(txt,s:AlignGPat) == -1 if match(txt,s:AlignGPat) == -1
" call Decho("Pass".pass.": skipping") " call Decho("Pass".pass.": skipping")
let line= line + 1 let curline= curline + 1
continue continue
endif endif
endif endif
@ -551,7 +555,7 @@ fun! Align#Align(hasctrl,...) range
" call Decho("Pass".pass.": AlignVPat<".s:AlignVPat.">") " call Decho("Pass".pass.": AlignVPat<".s:AlignVPat.">")
if match(txt,s:AlignVPat) != -1 if match(txt,s:AlignVPat) != -1
" call Decho("Pass".pass.": skipping") " call Decho("Pass".pass.": skipping")
let line= line + 1 let curline= curline + 1
continue continue
endif endif
endif endif
@ -559,12 +563,12 @@ fun! Align#Align(hasctrl,...) range
" Always skip blank lines " Always skip blank lines
if match(txt,'^\s*$') != -1 if match(txt,'^\s*$') != -1
" call Decho("Pass".pass.": skipping") " call Decho("Pass".pass.": skipping")
let line= line + 1 let curline= curline + 1
continue continue
endif endif
" Extract visual-block selected text (init bgntxt, endtxt) " Extract visual-block selected text (init bgntxt, endtxt)
let txtlen= s:Strlen(txt) let txtlen= s:Strlen(txt)
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)
@ -655,7 +659,7 @@ fun! Align#Align(hasctrl,...) range
if alignop == '*' && exists("g:AlignSkip") && type(g:AlignSkip) == 2 if alignop == '*' && exists("g:AlignSkip") && type(g:AlignSkip) == 2
" call Decho("Pass".pass.": endfield=match(txt<".txt.">,seppat<".seppat.">,bgnfield=".bgnfield.")=".endfield." alignop=".alignop) " 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 " 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 while g:AlignSkip(curline,endfield) && 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
@ -688,22 +692,20 @@ fun! Align#Align(hasctrl,...) range
let field = bgntxt.field let field = bgntxt.field
let bgntxt= "" let bgntxt= ""
endif endif
let fieldlen = s:Strlen(field) let fieldlen= s:Strlen(field)
let sFieldSize = "FieldSize_".ifield if !exists("FieldSize_{ifield}")
if !exists(sFieldSize)
let FieldSize_{ifield}= fieldlen let FieldSize_{ifield}= fieldlen
" call Decho("Pass".pass.": set FieldSize_{".ifield."}=".FieldSize_{ifield}." <".field.">") " call Decho("Pass".pass.": set FieldSize_{".ifield."}=".FieldSize_{ifield}." <".field."> (init)")
elseif fieldlen > FieldSize_{ifield} elseif fieldlen > FieldSize_{ifield}
let FieldSize_{ifield}= fieldlen let FieldSize_{ifield}= fieldlen
" call Decho("Pass".pass.": oset FieldSize_{".ifield."}=".FieldSize_{ifield}." <".field.">") " call Decho("Pass".pass.": set FieldSize_{".ifield."}=".FieldSize_{ifield}." <".field."> (fieldlen>FieldSize_".ifield.")")
endif endif
let sSepSize= "SepSize_".ifield if !exists("SepSize_{ifield}")
if !exists(sSepSize)
let SepSize_{ifield}= seplen let SepSize_{ifield}= seplen
" call Decho(" set SepSize_{".ifield."}=".SepSize_{ifield}." <".field.">") " call Decho("Pass".pass.": set SepSize_{".ifield."}=".SepSize_{ifield}." <".field."> (init)")
elseif seplen > SepSize_{ifield} elseif seplen > SepSize_{ifield}
let SepSize_{ifield}= seplen let SepSize_{ifield}= seplen
" call Decho("Pass".pass.": oset SepSize_{".ifield."}=".SepSize_{ifield}." <".field.">") " call Decho("Pass".pass.": set SepSize_{".ifield."}=".SepSize_{ifield}." <".field."> (seplen>SepSize_".ifield.")")
endif endif
else else
@ -714,6 +716,8 @@ fun! Align#Align(hasctrl,...) range
let alignprepad = strpart(alignprepad,1).strpart(alignprepad,0,1) let alignprepad = strpart(alignprepad,1).strpart(alignprepad,0,1)
let alignpostpad = strpart(alignpostpad,1).strpart(alignpostpad,0,1) let alignpostpad = strpart(alignpostpad,1).strpart(alignpostpad,0,1)
let field = substitute(strpart(txt,bgnfield,endfield-bgnfield),'^\s*\(.\{-}\)\s*$','\1','') let field = substitute(strpart(txt,bgnfield,endfield-bgnfield),'^\s*\(.\{-}\)\s*$','\1','')
" call Decho("Pass".pass.": alignprepad <".alignprepad."> prepad =".prepad)
" call Decho("Pass".pass.": alignpostpad<".alignpostpad."> postpad=".postpad)
if s:AlignLeadKeep == 'W' if s:AlignLeadKeep == 'W'
let field = bgntxt.field let field = bgntxt.field
let bgntxt= "" let bgntxt= ""
@ -724,21 +728,26 @@ fun! Align#Align(hasctrl,...) range
endif endif
let fieldlen = s:Strlen(field) let fieldlen = s:Strlen(field)
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)
" call Decho("Pass".pass.": sep<".sep."> (after prepad, sepfield-endfield,postpad)")
if seplen < SepSize_{ifield} if seplen < SepSize_{ifield}
if alignsepop == "<" if alignsepop == "<"
" left-justify separators " left-justify separators
let sep = sep.s:MakeSpace(SepSize_{ifield}-seplen) let sep = sep.s:MakeSpace(SepSize_{ifield}-seplen)
" call Decho("Pass".pass.": sep<".sep."> (left-justified)")
elseif alignsepop == ">" elseif alignsepop == ">"
" right-justify separators " right-justify separators
let sep = s:MakeSpace(SepSize_{ifield}-seplen).sep let sep = s:MakeSpace(SepSize_{ifield}-seplen).sep
" call Decho("Pass".pass.": sep<".sep."> (right-justified)")
else else
" center-justify separators " center-justify separators
let sepleft = (SepSize_{ifield} - seplen)/2 let sepleft = (SepSize_{ifield} - seplen)/2
let sepright = SepSize_{ifield} - seplen - sepleft let sepright = SepSize_{ifield} - seplen - sepleft
let sep = s:MakeSpace(sepleft).sep.s:MakeSpace(sepright) let sep = s:MakeSpace(sepleft).sep.s:MakeSpace(sepright)
" call Decho("Pass".pass.": sep<".sep."> (center-justified)")
endif endif
endif endif
let spaces = FieldSize_{ifield} - fieldlen let spaces = FieldSize_{ifield} - fieldlen
" call Decho("Pass".pass.": spaces=[FieldSize_".ifield."=".FieldSize_{ifield}."] - [fieldlen=".fieldlen."]=".spaces)
" 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
@ -786,18 +795,20 @@ fun! Align#Align(hasctrl,...) range
if pass == 2 if pass == 2
" Write altered line to buffer " Write altered line to buffer
" call Decho("Pass".pass.": bgntxt<".bgntxt."> line=".line) " call Decho("Pass".pass.": bgntxt<".bgntxt."> curline=".curline)
" call Decho("Pass".pass.": newtxt<".newtxt.">") " call Decho("Pass".pass.": newtxt<".newtxt.">")
" call Decho("Pass".pass.": endtxt<".endtxt.">") " call Decho("Pass".pass.": endtxt<".endtxt.">")
keepj call setline(line,bgntxt.newtxt.endtxt) keepj call setline(curline,bgntxt.newtxt.endtxt)
endif endif
" call Decho("Pass".pass.": line#".curline."<".getline(".")."> (end-of-while)")
let line = line + 1 let curline = curline + 1
endwhile " line loop endwhile " curline loop
let pass= pass + 1 let pass= pass + 1
endwhile " pass loop endwhile " pass loop
" call Decho("end of two pass loop") " call Decho("end of two pass loop")
" call Decho("ENDWHILE: cursor at (".line(".").",".col(".").") curline#".curline)
" restore original leading whitespace " restore original leading whitespace
if s:AlignLeadKeep == 'W' if s:AlignLeadKeep == 'W'
@ -1059,6 +1070,7 @@ fun! s:Strlen(x)
call setline(line("."),a:x) call setline(line("."),a:x)
let ret= virtcol("$") - 1 let ret= virtcol("$") - 1
d d
keepj norm! k
let &l:mod= modkeep let &l:mod= modkeep
else else

View File

@ -1,8 +1,8 @@
" AlignMaps.vim : support functions for AlignMaps " AlignMaps.vim : support functions for AlignMaps
" Author: Charles E. Campbell, Jr. " Author: Charles E. Campbell
" Date: Jun 18, 2012 " Date: Mar 12, 2013
" Version: 42 " Version: 43
" Copyright: Copyright (C) 1999-2012 Charles E. Campbell, Jr. {{{1 " Copyright: Copyright (C) 1999-2012 Charles E. Campbell {{{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,
@ -16,7 +16,7 @@
if &cp || exists("g:loaded_AlignMaps") if &cp || exists("g:loaded_AlignMaps")
finish finish
endif endif
let g:loaded_AlignMaps= "v42" let g:loaded_AlignMaps= "v43"
let s:keepcpo = &cpo let s:keepcpo = &cpo
set cpo&vim set cpo&vim
"DechoTabOn "DechoTabOn
@ -111,6 +111,20 @@ fun! AlignMaps#WrapperEnd() range
" call Dret("AlignMaps#WrapperEnd : alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z")) " call Dret("AlignMaps#WrapperEnd : alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
endfun endfun
" ---------------------------------------------------------------------
" AlignMaps#MakeMap: make both a normal-mode and a visual mode map for mapname {{{2
fun! AlignMaps#MakeMap(mapname)
if exists("g:maplocalleader")
let maplead= g:maplocalleader
elseif exists("g:mapleader")
let maplead= g:mapleader
else
let maplead= '\'
endif
exe "nmap <unique> ".maplead.a:mapname." <Plug>AM_".a:mapname
exe "vmap <silent> ".maplead.a:mapname.' :call AlignMaps#Vis("'.a:mapname.'")'."<cr>"
endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" AlignMaps#StdAlign: some semi-standard align calls {{{2 " AlignMaps#StdAlign: some semi-standard align calls {{{2
fun! AlignMaps#StdAlign(mode) range fun! AlignMaps#StdAlign(mode) range
@ -169,15 +183,15 @@ 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()")
keepj 'a,'zs/\s\+\([*/+\-%|&\~^]\==\)/ \1/e keepj 'a,'zs/\s\+\([.*/+\-%|&\~^]\==\)/ \1/e
keepj 'a,'zs@ \+\([*/+\-%|&\~^]\)=@\1=@ge keepj 'a,'zs@ \+\([.*/+\-%|&\~^]\)=@\1=@ge
keepj 'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge keepj 'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge
keepj 'a,'zs/\([!<>:]\)=/\=submatch(1)."\<Char-0x0f>"/ge keepj 'a,'zs/\([!<>:]\)=/\=submatch(1)."\<Char-0x0f>"/ge
keepj norm g'zk keepj norm g'zk
AlignCtrl mIp1P1=l = AlignCtrl mIp1P1=l =
AlignCtrl g = AlignCtrl g =
keepj 'a,'z-1Align keepj 'a,'z-1Align
keepj 'a,'z-1s@\([*/%|&\~^!=]\)\( \+\)=@\2\1=@ge keepj 'a,'z-1s@\([.*/%|&\~^!=]\)\( \+\)=@\2\1=@ge
keepj 'a,'z-1s@[^+\-]\zs\([+\-]\)\( \+\)=@\2\1=@ge keepj 'a,'z-1s@[^+\-]\zs\([+\-]\)\( \+\)=@\2\1=@ge
keepj 'a,'z-1s/\( \+\);/;\1/ge keepj 'a,'z-1s/\( \+\);/;\1/ge
if &ft == "c" || &ft == "cpp" if &ft == "c" || &ft == "cpp"
@ -323,37 +337,6 @@ 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)
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.">")
@ -386,6 +369,31 @@ fun! AlignMaps#AlignMapsClean()
" call Dret("AlignMaps#AlignMapsClean") " call Dret("AlignMaps#AlignMapsClean")
endfun endfun
" ---------------------------------------------------------------------
" AlignMaps#Vis: interfaces with visual maps {{{2
fun! AlignMaps#Vis(plugmap) range
" call Dfunc("AlignMaps#VisCall(plugmap<".a:plugmap.">) ".a:firstline.",".a:lastline)
let amark= SaveMark("a")
exe a:firstline
ka
exe a:lastline
if exists("g:maplocalleader")
let maplead= g:maplocalleader
elseif exists("g:mapleader")
let maplead= g:mapleader
else
let maplead= '\'
endif
" call Decho("exe norm ".maplead.a:plugmap)
exe " norm ".maplead.a:plugmap
call RestoreMark(amark)
" call Dret("AlignMaps#VisCall")
endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Restore: {{{1 " Restore: {{{1
let &cpo= s:keepcpo let &cpo= s:keepcpo

969
vim/colors/solarized.vim Normal file
View File

@ -0,0 +1,969 @@
" Name: Solarized vim colorscheme
" Author: Ethan Schoonover <es@ethanschoonover.com>
" URL: http://ethanschoonover.com/solarized
" (see this url for latest release & screenshots)
" License: OSI approved MIT license (see end of this file)
" Created: In the middle of the night
" Modified: 2011 Apr 14
"
" Usage "{{{
"
" ---------------------------------------------------------------------
" ABOUT:
" ---------------------------------------------------------------------
" Solarized is a carefully designed selective contrast colorscheme with dual
" light and dark modes that runs in both GUI, 256 and 16 color modes.
"
" See the homepage above for screenshots and details.
"
" ---------------------------------------------------------------------
" INSTALLATION:
" ---------------------------------------------------------------------
"
" Two options for installation: manual or pathogen
"
" MANUAL INSTALLATION OPTION:
" ---------------------------------------------------------------------
"
" 1. Put the files in the right place!
" 2. Move `solarized.vim` to your `.vim/colors` directory.
"
" RECOMMENDED PATHOGEN INSTALLATION OPTION:
" ---------------------------------------------------------------------
"
" 1. Download and install Tim Pope's Pathogen from:
" https://github.com/tpope/vim-pathogen
"
" 2. Next, move or clone the `vim-colors-solarized` directory so that it is
" a subdirectory of the `.vim/bundle` directory.
"
" a. **clone with git:**
"
" $ cd ~/.vim/bundle
" $ git clone git://github.com/altercation/vim-colors-solarized.git
"
" b. **or move manually into the pathogen bundle directory:**
" In the parent directory of vim-colors-solarized:
"
" $ mv vim-colors-solarized ~/.vim/bundle/
"
" MODIFY VIMRC:
"
" After either Option 1 or Option 2 above, put the following two lines in your
" .vimrc:
"
" syntax enable
" set background=dark
" colorscheme solarized
"
" or, for the light background mode of Solarized:
"
" syntax enable
" set background=light
" colorscheme solarized
"
" I like to have a different background in GUI and terminal modes, so I can use
" the following if-then. However, I find vim's background autodetection to be
" pretty good and, at least with MacVim, I can leave this background value
" assignment out entirely and get the same results.
"
" if has('gui_running')
" set background=light
" else
" set background=dark
" endif
"
" See the Solarized homepage at http://ethanschoonover.com/solarized for
" screenshots which will help you select either the light or dark background.
"
" Other options are detailed below.
"
" IMPORTANT NOTE FOR TERMINAL USERS:
"
" If you are going to use Solarized in Terminal mode (i.e. not in a GUI version
" like gvim or macvim), **please please please** consider setting your terminal
" emulator's colorscheme to used the Solarized palette. I've included palettes
" for some popular terminal emulator as well as Xdefaults in the official
" Solarized download available from [Solarized homepage]. If you use
" Solarized *without* these colors, Solarized will need to be told to degrade
" its colorscheme to a set compatible with the limited 256 terminal palette
" (whereas by using the terminal's 16 ansi color values, you can set the
" correct, specific values for the Solarized palette).
"
" If you do use the custom terminal colors, solarized.vim should work out of
" the box for you. If you are using a terminal emulator that supports 256
" colors and don't want to use the custom Solarized terminal colors, you will
" need to use the degraded 256 colorscheme. To do so, simply add the following
" line *before* the `colorschem solarized` line:
"
" let g:solarized_termcolors=256
"
" Again, I recommend just changing your terminal colors to Solarized values
" either manually or via one of the many terminal schemes available for import.
"
" ---------------------------------------------------------------------
" TOGGLE BACKGROUND FUNCTION:
" ---------------------------------------------------------------------
"
" Solarized comes with a Toggle Background plugin that by default will map to
" <F5> if that mapping is available. If it is not available you will need to
" either map the function manually or change your current <F5> mapping to
" something else. If you wish to map the function manually, enter the following
" lines in your .vimrc:
"
" nmap <unique> <F5> <Plug>ToggleBackground
" imap <unique> <F5> <Plug>ToggleBackground
" vmap <unique> <F5> <Plug>ToggleBackground
"
" Note that it is important to *not* use the noremap map variants. The plugin
" uses noremap internally. You may run `:help togglebg` for more information.
"
" ---------------------------------------------------------------------
" OPTIONS
" ---------------------------------------------------------------------
"
" Set these in your vimrc file prior to calling the colorscheme.
"
" option name default optional
" ------------------------------------------------
" g:solarized_termcolors= 16 | 256
" g:solarized_termtrans = 0 | 1
" g:solarized_degrade = 0 | 1
" g:solarized_bold = 1 | 0
" g:solarized_underline = 1 | 0
" g:solarized_italic = 1 | 0
" g:solarized_contrast = "normal"| "high" or "low"
" g:solarized_visibility= "normal"| "high" or "low"
" ------------------------------------------------
"
" OPTION DETAILS
"
" ------------------------------------------------
" g:solarized_termcolors= 256 | 16
" ------------------------------------------------
" The most important option if you are using vim in terminal (non gui) mode!
" This tells Solarized to use the 256 degraded color mode if running in a 256
" color capable terminal. Otherwise, if set to `16` it will use the terminal
" emulators colorscheme (best option as long as you've set the emulators colors
" to the Solarized palette).
"
" If you are going to use Solarized in Terminal mode (i.e. not in a GUI
" version like gvim or macvim), **please please please** consider setting your
" terminal emulator's colorscheme to used the Solarized palette. I've included
" palettes for some popular terminal emulator as well as Xdefaults in the
" official Solarized download available from:
" http://ethanschoonover.com/solarized . If you use Solarized without these
" colors, Solarized will by default use an approximate set of 256 colors. It
" isn't bad looking and has been extensively tweaked, but it's still not quite
" the real thing.
"
" ------------------------------------------------
" g:solarized_termtrans = 0 | 1
" ------------------------------------------------
" If you use a terminal emulator with a transparent background and Solarized
" isn't displaying the background color transparently, set this to 1 and
" Solarized will use the default (transparent) background of the terminal
" emulator. *urxvt* required this in my testing; iTerm2 did not.
"
" Note that on Mac OS X Terminal.app, solarized_termtrans is set to 1 by
" default as this is almost always the best option. The only exception to this
" is if the working terminfo file supports 256 colors (xterm-256color).
"
" ------------------------------------------------
" g:solarized_degrade = 0 | 1
" ------------------------------------------------
" For test purposes only; forces Solarized to use the 256 degraded color mode
" to test the approximate color values for accuracy.
"
" ------------------------------------------------
" g:solarized_bold = 1 | 0
" ------------------------------------------------
" ------------------------------------------------
" g:solarized_underline = 1 | 0
" ------------------------------------------------
" ------------------------------------------------
" g:solarized_italic = 1 | 0
" ------------------------------------------------
" If you wish to stop Solarized from displaying bold, underlined or
" italicized typefaces, simply assign a zero value to the appropriate
" variable, for example: `let g:solarized_italic=0`
"
" ------------------------------------------------
" g:solarized_contrast = "normal"| "high" or "low"
" ------------------------------------------------
" Stick with normal! It's been carefully tested. Setting this option to high
" or low does use the same Solarized palette but simply shifts some values up
" or down in order to expand or compress the tonal range displayed.
"
" ------------------------------------------------
" g:solarized_visibility = "normal"| "high" or "low"
" ------------------------------------------------
" Special characters such as trailing whitespace, tabs, newlines, when
" displayed using ":set list" can be set to one of three levels depending on
" your needs.
"
" ---------------------------------------------------------------------
" COLOR VALUES
" ---------------------------------------------------------------------
" Download palettes and files from: http://ethanschoonover.com/solarized
"
" L\*a\*b values are canonical (White D65, Reference D50), other values are
" matched in sRGB space.
"
" SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B sRGB HSB
" --------- ------- ---- ------- ----------- ---------- ----------- -----------
" base03 #002b36 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21
" base02 #073642 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26
" base01 #586e75 10/7 brgreen 240 #4e4e4e 45 -07 -07 88 110 117 194 25 46
" base00 #657b83 11/7 bryellow 241 #585858 50 -07 -07 101 123 131 195 23 51
" base0 #839496 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59
" base1 #93a1a1 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63
" base2 #eee8d5 7/7 white 254 #d7d7af 92 -00 10 238 232 213 44 11 93
" base3 #fdf6e3 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99
" yellow #b58900 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71
" orange #cb4b16 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80
" red #dc322f 1/1 red 160 #d70000 50 65 45 220 50 47 1 79 86
" magenta #d33682 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83
" violet #6c71c4 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77
" blue #268bd2 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82
" cyan #2aa198 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63
" green #859900 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60
"
" ---------------------------------------------------------------------
" COLORSCHEME HACKING
" ---------------------------------------------------------------------
"
" Useful commands for testing colorschemes:
" :source $VIMRUNTIME/syntax/hitest.vim
" :help highlight-groups
" :help cterm-colors
" :help group-name
"
" Useful links for developing colorschemes:
" http://www.vim.org/scripts/script.php?script_id=2937
" http://vimcasts.org/episodes/creating-colorschemes-for-vim/
" http://www.frexx.de/xterm-256-notes/"
"
"
" }}}
" Default option values"{{{
" ---------------------------------------------------------------------
if !exists("g:solarized_termtrans")
if ($TERM_PROGRAM ==? "apple_terminal" && &t_Co < 256)
let g:solarized_termtrans = 1
else
let g:solarized_termtrans = 0
endif
endif
if !exists("g:solarized_degrade")
let g:solarized_degrade = 0
endif
if !exists("g:solarized_bold")
let g:solarized_bold = 1
endif
if !exists("g:solarized_underline")
let g:solarized_underline = 1
endif
if !exists("g:solarized_italic")
let g:solarized_italic = 1
endif
if !exists("g:solarized_termcolors")
let g:solarized_termcolors = 16
endif
if !exists("g:solarized_contrast")
let g:solarized_contrast = "normal"
endif
if !exists("g:solarized_visibility")
let g:solarized_visibility = "normal"
endif
"}}}
" Colorscheme initialization "{{{
" ---------------------------------------------------------------------
hi clear
if exists("syntax_on")
syntax reset
endif
let colors_name = "solarized"
"}}}
" GUI & CSApprox hexadecimal palettes"{{{
" ---------------------------------------------------------------------
"
" Set both gui and terminal color values in separate conditional statements
" Due to possibility that CSApprox is running (though I suppose we could just
" leave the hex values out entirely in that case and include only cterm colors)
" We also check to see if user has set solarized (force use of the
" neutral gray monotone palette component)
if (has("gui_running") && g:solarized_degrade == 0)
let s:vmode = "gui"
let s:base03 = "#002b36"
let s:base02 = "#073642"
let s:base01 = "#586e75"
let s:base00 = "#657b83"
let s:base0 = "#839496"
let s:base1 = "#93a1a1"
let s:base2 = "#eee8d5"
let s:base3 = "#fdf6e3"
let s:yellow = "#b58900"
let s:orange = "#cb4b16"
let s:red = "#dc322f"
let s:magenta = "#d33682"
let s:violet = "#6c71c4"
let s:blue = "#268bd2"
let s:cyan = "#2aa198"
let s:green = "#859900"
elseif (has("gui_running") && g:solarized_degrade == 1)
" These colors are identical to the 256 color mode. They may be viewed
" while in gui mode via "let g:solarized_degrade=1", though this is not
" recommened and is for testing only.
let s:vmode = "gui"
let s:base03 = "#1c1c1c"
let s:base02 = "#262626"
let s:base01 = "#4e4e4e"
let s:base00 = "#585858"
let s:base0 = "#808080"
let s:base1 = "#8a8a8a"
let s:base2 = "#d7d7af"
let s:base3 = "#ffffd7"
let s:yellow = "#af8700"
let s:orange = "#d75f00"
let s:red = "#af0000"
let s:magenta = "#af005f"
let s:violet = "#5f5faf"
let s:blue = "#0087ff"
let s:cyan = "#00afaf"
let s:green = "#5f8700"
elseif g:solarized_termcolors != 256 && &t_Co >= 16
let s:vmode = "cterm"
let s:base03 = "8"
let s:base02 = "0"
let s:base01 = "10"
let s:base00 = "11"
let s:base0 = "12"
let s:base1 = "14"
let s:base2 = "7"
let s:base3 = "15"
let s:yellow = "3"
let s:orange = "9"
let s:red = "1"
let s:magenta = "5"
let s:violet = "13"
let s:blue = "4"
let s:cyan = "6"
let s:green = "2"
elseif g:solarized_termcolors == 256
let s:vmode = "cterm"
let s:base03 = "234"
let s:base02 = "235"
let s:base01 = "239"
let s:base00 = "240"
let s:base0 = "244"
let s:base1 = "245"
let s:base2 = "187"
let s:base3 = "230"
let s:yellow = "136"
let s:orange = "166"
let s:red = "124"
let s:magenta = "125"
let s:violet = "61"
let s:blue = "33"
let s:cyan = "37"
let s:green = "64"
else
let s:vmode = "cterm"
let s:bright = "* term=bold cterm=bold"
let s:base03 = "0".s:bright
let s:base02 = "0"
let s:base01 = "2".s:bright
let s:base00 = "3".s:bright
let s:base0 = "4".s:bright
let s:base1 = "6".s:bright
let s:base2 = "7"
let s:base3 = "7".s:bright
let s:yellow = "3"
let s:orange = "1".s:bright
let s:red = "1"
let s:magenta = "5"
let s:violet = "13"
let s:blue = "4"
let s:cyan = "6"
let s:green = "2"
endif
"}}}
" Formatting options and null values for passthrough effect "{{{
" ---------------------------------------------------------------------
let s:none = "NONE"
let s:none = "NONE"
let s:t_none = "NONE"
let s:n = "NONE"
let s:c = ",undercurl"
let s:r = ",reverse"
let s:s = ",standout"
let s:ou = ""
let s:ob = ""
"}}}
" Background value based on termtrans setting "{{{
" ---------------------------------------------------------------------
if (has("gui_running") || g:solarized_termtrans == 0)
let s:back = s:base03
else
let s:back = "NONE"
endif
"}}}
" Alternate light scheme "{{{
" ---------------------------------------------------------------------
if &background == "light"
let s:temp03 = s:base03
let s:temp02 = s:base02
let s:temp01 = s:base01
let s:temp00 = s:base00
let s:base03 = s:base3
let s:base02 = s:base2
let s:base01 = s:base1
let s:base00 = s:base0
let s:base0 = s:temp00
let s:base1 = s:temp01
let s:base2 = s:temp02
let s:base3 = s:temp03
if (s:back != "NONE")
let s:back = s:base03
endif
endif
"}}}
" Optional contrast schemes "{{{
" ---------------------------------------------------------------------
if g:solarized_contrast == "high"
let s:base01 = s:base00
let s:base00 = s:base0
let s:base0 = s:base1
let s:base1 = s:base2
let s:base2 = s:base3
let s:back = s:back
endif
if g:solarized_contrast == "low"
let s:back = s:base02
let s:ou = ",underline"
endif
"}}}
" Overrides dependent on user specified values"{{{
" ---------------------------------------------------------------------
if g:solarized_bold == 1
let s:b = ",bold"
else
let s:b = ""
endif
if g:solarized_underline == 1
let s:u = ",underline"
else
let s:u = ""
endif
if g:solarized_italic == 1
let s:i = ",italic"
else
let s:i = ""
endif
"}}}
" Highlighting primitives"{{{
" ---------------------------------------------------------------------
exe "let s:bg_none = ' ".s:vmode."bg=".s:none ."'"
exe "let s:bg_back = ' ".s:vmode."bg=".s:back ."'"
exe "let s:bg_base03 = ' ".s:vmode."bg=".s:base03 ."'"
exe "let s:bg_base02 = ' ".s:vmode."bg=".s:base02 ."'"
exe "let s:bg_base01 = ' ".s:vmode."bg=".s:base01 ."'"
exe "let s:bg_base00 = ' ".s:vmode."bg=".s:base00 ."'"
exe "let s:bg_base0 = ' ".s:vmode."bg=".s:base0 ."'"
exe "let s:bg_base1 = ' ".s:vmode."bg=".s:base1 ."'"
exe "let s:bg_base2 = ' ".s:vmode."bg=".s:base2 ."'"
exe "let s:bg_base3 = ' ".s:vmode."bg=".s:base3 ."'"
exe "let s:bg_green = ' ".s:vmode."bg=".s:green ."'"
exe "let s:bg_yellow = ' ".s:vmode."bg=".s:yellow ."'"
exe "let s:bg_orange = ' ".s:vmode."bg=".s:orange ."'"
exe "let s:bg_red = ' ".s:vmode."bg=".s:red ."'"
exe "let s:bg_magenta = ' ".s:vmode."bg=".s:magenta."'"
exe "let s:bg_violet = ' ".s:vmode."bg=".s:violet ."'"
exe "let s:bg_blue = ' ".s:vmode."bg=".s:blue ."'"
exe "let s:bg_cyan = ' ".s:vmode."bg=".s:cyan ."'"
exe "let s:fg_none = ' ".s:vmode."fg=".s:none ."'"
exe "let s:fg_back = ' ".s:vmode."fg=".s:back ."'"
exe "let s:fg_base03 = ' ".s:vmode."fg=".s:base03 ."'"
exe "let s:fg_base02 = ' ".s:vmode."fg=".s:base02 ."'"
exe "let s:fg_base01 = ' ".s:vmode."fg=".s:base01 ."'"
exe "let s:fg_base00 = ' ".s:vmode."fg=".s:base00 ."'"
exe "let s:fg_base0 = ' ".s:vmode."fg=".s:base0 ."'"
exe "let s:fg_base1 = ' ".s:vmode."fg=".s:base1 ."'"
exe "let s:fg_base2 = ' ".s:vmode."fg=".s:base2 ."'"
exe "let s:fg_base3 = ' ".s:vmode."fg=".s:base3 ."'"
exe "let s:fg_green = ' ".s:vmode."fg=".s:green ."'"
exe "let s:fg_yellow = ' ".s:vmode."fg=".s:yellow ."'"
exe "let s:fg_orange = ' ".s:vmode."fg=".s:orange ."'"
exe "let s:fg_red = ' ".s:vmode."fg=".s:red ."'"
exe "let s:fg_magenta = ' ".s:vmode."fg=".s:magenta."'"
exe "let s:fg_violet = ' ".s:vmode."fg=".s:violet ."'"
exe "let s:fg_blue = ' ".s:vmode."fg=".s:blue ."'"
exe "let s:fg_cyan = ' ".s:vmode."fg=".s:cyan ."'"
exe "let s:fmt_none = ' ".s:vmode."=NONE". " term=NONE". "'"
exe "let s:fmt_bold = ' ".s:vmode."=NONE".s:b. " term=NONE".s:b."'"
exe "let s:fmt_bldi = ' ".s:vmode."=NONE".s:b. " term=NONE".s:b."'"
exe "let s:fmt_undr = ' ".s:vmode."=NONE".s:u. " term=NONE".s:u."'"
exe "let s:fmt_undb = ' ".s:vmode."=NONE".s:u.s:b. " term=NONE".s:u.s:b."'"
exe "let s:fmt_undi = ' ".s:vmode."=NONE".s:u. " term=NONE".s:u."'"
exe "let s:fmt_uopt = ' ".s:vmode."=NONE".s:ou. " term=NONE".s:ou."'"
exe "let s:fmt_curl = ' ".s:vmode."=NONE".s:c. " term=NONE".s:c."'"
exe "let s:fmt_ital = ' ".s:vmode."=NONE". " term=NONE". "'"
exe "let s:fmt_revr = ' ".s:vmode."=NONE".s:r. " term=NONE".s:r."'"
exe "let s:fmt_stnd = ' ".s:vmode."=NONE".s:s. " term=NONE".s:s."'"
if has("gui_running")
exe "let s:sp_none = ' guisp=".s:none ."'"
exe "let s:sp_back = ' guisp=".s:back ."'"
exe "let s:sp_base03 = ' guisp=".s:base03 ."'"
exe "let s:sp_base02 = ' guisp=".s:base02 ."'"
exe "let s:sp_base01 = ' guisp=".s:base01 ."'"
exe "let s:sp_base00 = ' guisp=".s:base00 ."'"
exe "let s:sp_base0 = ' guisp=".s:base0 ."'"
exe "let s:sp_base1 = ' guisp=".s:base1 ."'"
exe "let s:sp_base2 = ' guisp=".s:base2 ."'"
exe "let s:sp_base3 = ' guisp=".s:base3 ."'"
exe "let s:sp_green = ' guisp=".s:green ."'"
exe "let s:sp_yellow = ' guisp=".s:yellow ."'"
exe "let s:sp_orange = ' guisp=".s:orange ."'"
exe "let s:sp_red = ' guisp=".s:red ."'"
exe "let s:sp_magenta = ' guisp=".s:magenta."'"
exe "let s:sp_violet = ' guisp=".s:violet ."'"
exe "let s:sp_blue = ' guisp=".s:blue ."'"
exe "let s:sp_cyan = ' guisp=".s:cyan ."'"
else
let s:sp_none = ""
let s:sp_back = ""
let s:sp_base03 = ""
let s:sp_base02 = ""
let s:sp_base01 = ""
let s:sp_base00 = ""
let s:sp_base0 = ""
let s:sp_base1 = ""
let s:sp_base2 = ""
let s:sp_base3 = ""
let s:sp_green = ""
let s:sp_yellow = ""
let s:sp_orange = ""
let s:sp_red = ""
let s:sp_magenta = ""
let s:sp_violet = ""
let s:sp_blue = ""
let s:sp_cyan = ""
endif
"}}}
" Basic highlighting"{{{
" ---------------------------------------------------------------------
" note that link syntax to avoid duplicate configuration doesn't work with the
" exe compiled formats
exe "hi! Normal" .s:fmt_none .s:fg_base0 .s:bg_back
exe "hi! Comment" .s:fmt_ital .s:fg_base01 .s:bg_none
" *Comment any comment
exe "hi! Constant" .s:fmt_none .s:fg_cyan .s:bg_none
" *Constant any constant
" String a string constant: "this is a string"
" Character a character constant: 'c', '\n'
" Number a number constant: 234, 0xff
" Boolean a boolean constant: TRUE, false
" Float a floating point constant: 2.3e10
exe "hi! Identifier" .s:fmt_none .s:fg_blue .s:bg_none
" *Identifier any variable name
" Function function name (also: methods for classes)
"
exe "hi! Statement" .s:fmt_none .s:fg_green .s:bg_none
" *Statement any statement
" Conditional if, then, else, endif, switch, etc.
" Repeat for, do, while, etc.
" Label case, default, etc.
" Operator "sizeof", "+", "*", etc.
" Keyword any other keyword
" Exception try, catch, throw
exe "hi! PreProc" .s:fmt_none .s:fg_orange .s:bg_none
" *PreProc generic Preprocessor
" Include preprocessor #include
" Define preprocessor #define
" Macro same as Define
" PreCondit preprocessor #if, #else, #endif, etc.
exe "hi! Type" .s:fmt_none .s:fg_yellow .s:bg_none
" *Type int, long, char, etc.
" StorageClass static, register, volatile, etc.
" Structure struct, union, enum, etc.
" Typedef A typedef
exe "hi! Special" .s:fmt_none .s:fg_red .s:bg_none
" *Special any special symbol
" SpecialChar special character in a constant
" Tag you can use CTRL-] on this
" Delimiter character that needs attention
" SpecialComment special things inside a comment
" Debug debugging statements
exe "hi! Underlined" .s:fmt_none .s:fg_violet .s:bg_none
" *Underlined text that stands out, HTML links
exe "hi! Ignore" .s:fmt_none .s:fg_none .s:bg_none
" *Ignore left blank, hidden |hl-Ignore|
exe "hi! Error" .s:fmt_bold .s:fg_red .s:bg_none
" *Error any erroneous construct
exe "hi! Todo" .s:fmt_bold .s:fg_magenta.s:bg_none
" *Todo anything that needs extra attention; mostly the
" keywords TODO FIXME and XXX
"
"}}}
" Extended highlighting "{{{
" ---------------------------------------------------------------------
if (g:solarized_visibility=="high")
exe "hi! SpecialKey" .s:fmt_revr .s:fg_red .s:bg_none
exe "hi! NonText" .s:fmt_bold .s:fg_base1 .s:bg_none
elseif (g:solarized_visibility=="low")
exe "hi! SpecialKey" .s:fmt_bold .s:fg_base02 .s:bg_none
exe "hi! NonText" .s:fmt_bold .s:fg_base02 .s:bg_none
else
exe "hi! SpecialKey" .s:fmt_bold .s:fg_red .s:bg_none
exe "hi! NonText" .s:fmt_bold .s:fg_base01 .s:bg_none
endif
if (has("gui_running")) || &t_Co > 8
exe "hi! StatusLine" .s:fmt_none .s:fg_base02 .s:bg_base1
exe "hi! StatusLineNC" .s:fmt_none .s:fg_base02 .s:bg_base00
"exe "hi! Visual" .s:fmt_stnd .s:fg_none .s:bg_base02
exe "hi! Visual" .s:fmt_none .s:fg_base03 .s:bg_base01
else
exe "hi! StatusLine" .s:fmt_none .s:fg_base02 .s:bg_base2
exe "hi! StatusLineNC" .s:fmt_none .s:fg_base02 .s:bg_base2
exe "hi! Visual" .s:fmt_none .s:fg_none .s:bg_base2
endif
exe "hi! Directory" .s:fmt_none .s:fg_blue .s:bg_none
exe "hi! ErrorMsg" .s:fmt_revr .s:fg_red .s:bg_none
exe "hi! IncSearch" .s:fmt_stnd .s:fg_orange .s:bg_none
exe "hi! Search" .s:fmt_revr .s:fg_yellow .s:bg_none
exe "hi! MoreMsg" .s:fmt_none .s:fg_blue .s:bg_none
exe "hi! ModeMsg" .s:fmt_none .s:fg_blue .s:bg_none
exe "hi! LineNr" .s:fmt_none .s:fg_base01 .s:bg_base02
exe "hi! Question" .s:fmt_bold .s:fg_cyan .s:bg_none
exe "hi! VertSplit" .s:fmt_bold .s:fg_base00 .s:bg_base00
exe "hi! Title" .s:fmt_bold .s:fg_orange .s:bg_none
exe "hi! VisualNOS" .s:fmt_stnd .s:fg_none .s:bg_base02
exe "hi! WarningMsg" .s:fmt_bold .s:fg_red .s:bg_none
exe "hi! WildMenu" .s:fmt_none .s:fg_base2 .s:bg_base02
exe "hi! Folded" .s:fmt_undb .s:fg_base0 .s:bg_base02 .s:sp_base03
exe "hi! FoldColumn" .s:fmt_bold .s:fg_base0 .s:bg_base02
exe "hi! DiffAdd" .s:fmt_revr .s:fg_green .s:bg_none
exe "hi! DiffChange" .s:fmt_revr .s:fg_yellow .s:bg_none
exe "hi! DiffDelete" .s:fmt_revr .s:fg_red .s:bg_none
exe "hi! DiffText" .s:fmt_revr .s:fg_blue .s:bg_none
exe "hi! SignColumn" .s:fmt_none .s:fg_base0 .s:bg_base02
exe "hi! Conceal" .s:fmt_none .s:fg_blue .s:bg_none
exe "hi! SpellBad" .s:fmt_curl .s:fg_none .s:bg_none .s:sp_red
exe "hi! SpellCap" .s:fmt_curl .s:fg_none .s:bg_none .s:sp_violet
exe "hi! SpellRare" .s:fmt_curl .s:fg_none .s:bg_none .s:sp_cyan
exe "hi! SpellLocal" .s:fmt_curl .s:fg_none .s:bg_none .s:sp_yellow
exe "hi! Pmenu" .s:fmt_none .s:fg_base0 .s:bg_base02
exe "hi! PmenuSel" .s:fmt_none .s:fg_base2 .s:bg_base01
exe "hi! PmenuSbar" .s:fmt_none .s:fg_base0 .s:bg_base2
exe "hi! PmenuThumb" .s:fmt_none .s:fg_base03 .s:bg_base0
exe "hi! TabLine" .s:fmt_undr .s:fg_base0 .s:bg_base02 .s:sp_base0
exe "hi! TabLineSel" .s:fmt_undr .s:fg_base2 .s:bg_base01 .s:sp_base0
exe "hi! TabLineFill" .s:fmt_undr .s:fg_base0 .s:bg_base02 .s:sp_base0
exe "hi! CursorColumn" .s:fmt_none .s:fg_none .s:bg_base02
exe "hi! CursorLine" .s:fmt_uopt .s:fg_none .s:bg_base02 .s:sp_base1
exe "hi! ColorColumn" .s:fmt_none .s:fg_none .s:bg_base02
exe "hi! Cursor" .s:fmt_none .s:fg_base03 .s:bg_base0
hi! link lCursor Cursor
exe "hi! MatchParen" .s:fmt_bold .s:fg_red .s:bg_base01
"}}}
" vim syntax highlighting "{{{
" ---------------------------------------------------------------------
exe "hi! vimLineComment" . s:fg_base01 .s:bg_none .s:fmt_ital
exe "hi! vimCommentString".s:fg_violet .s:bg_none .s:fmt_none
hi! link vimVar Identifier
hi! link vimFunc Function
hi! link vimUserFunc Function
exe "hi! vimCommand" . s:fg_yellow .s:bg_none .s:fmt_none
exe "hi! vimCmdSep" . s:fg_blue .s:bg_none .s:fmt_bold
exe "hi! helpExample" . s:fg_base1 .s:bg_none .s:fmt_none
hi! link helpSpecial Special
exe "hi! helpOption" . s:fg_cyan .s:bg_none .s:fmt_none
exe "hi! helpNote" . s:fg_magenta.s:bg_none .s:fmt_none
exe "hi! helpVim" . s:fg_magenta.s:bg_none .s:fmt_none
exe "hi! helpHyperTextJump" .s:fg_blue .s:bg_none .s:fmt_undr
exe "hi! helpHyperTextEntry".s:fg_green .s:bg_none .s:fmt_none
exe "hi! vimIsCommand" . s:fg_base00 .s:bg_none .s:fmt_none
exe "hi! vimSynMtchOpt" . s:fg_yellow .s:bg_none .s:fmt_none
exe "hi! vimSynType" . s:fg_cyan .s:bg_none .s:fmt_none
exe "hi! vimHiLink" . s:fg_blue .s:bg_none .s:fmt_none
exe "hi! vimHiGroup" . s:fg_blue .s:bg_none .s:fmt_none
exe "hi! vimGroup" . s:fg_blue .s:bg_none .s:fmt_undb
"}}}
" html highlighting "{{{
" ---------------------------------------------------------------------
exe "hi! htmlTag" . s:fg_base01 .s:bg_none .s:fmt_none
exe "hi! htmlEndTag" . s:fg_base01 .s:bg_none .s:fmt_none
exe "hi! htmlTagN" . s:fg_base1 .s:bg_none .s:fmt_bold
exe "hi! htmlTagName" . s:fg_blue .s:bg_none .s:fmt_bold
exe "hi! htmlSpecialTagName". s:fg_blue .s:bg_none .s:fmt_ital
exe "hi! htmlArg" . s:fg_base00 .s:bg_none .s:fmt_none
exe "hi! javaScript" . s:fg_yellow .s:bg_none .s:fmt_none
"}}}
" perl highlighting "{{{
" ---------------------------------------------------------------------
exe "hi! perlHereDoc" . s:fg_base1 .s:bg_back .s:fmt_none
exe "hi! perlVarPlain" . s:fg_yellow .s:bg_back .s:fmt_none
exe "hi! perlStatementFileDesc". s:fg_cyan.s:bg_back.s:fmt_none
"}}}
" tex highlighting "{{{
" ---------------------------------------------------------------------
exe "hi! texStatement" . s:fg_cyan .s:bg_back .s:fmt_none
exe "hi! texMathZoneX" . s:fg_yellow .s:bg_back .s:fmt_none
exe "hi! texMathMatcher" . s:fg_yellow .s:bg_back .s:fmt_none
exe "hi! texMathMatcher" . s:fg_yellow .s:bg_back .s:fmt_none
exe "hi! texRefLabel" . s:fg_yellow .s:bg_back .s:fmt_none
"}}}
" ruby highlighting "{{{
" ---------------------------------------------------------------------
exe "hi! rubyDefine" . s:fg_base1 .s:bg_back .s:fmt_bold
"rubyInclude
"rubySharpBang
"rubyAccess
"rubyPredefinedVariable
"rubyBoolean
"rubyClassVariable
"rubyBeginEnd
"rubyRepeatModifier
"hi! link rubyArrayDelimiter Special " [ , , ]
"rubyCurlyBlock { , , }
"hi! link rubyClass Keyword
"hi! link rubyModule Keyword
"hi! link rubyKeyword Keyword
"hi! link rubyOperator Operator
"hi! link rubyIdentifier Identifier
"hi! link rubyInstanceVariable Identifier
"hi! link rubyGlobalVariable Identifier
"hi! link rubyClassVariable Identifier
"hi! link rubyConstant Type
"}}}
" haskell syntax highlighting"{{{
" ---------------------------------------------------------------------
" For use with syntax/haskell.vim : Haskell Syntax File
" http://www.vim.org/scripts/script.php?script_id=3034
" See also Steffen Siering's github repository:
" http://github.com/urso/dotrc/blob/master/vim/syntax/haskell.vim
" ---------------------------------------------------------------------
"
" Treat True and False specially, see the plugin referenced above
let hs_highlight_boolean=1
" highlight delims, see the plugin referenced above
let hs_highlight_delimiters=1
exe "hi! cPreCondit". s:fg_orange.s:bg_none .s:fmt_none
exe "hi! VarId" . s:fg_blue .s:bg_none .s:fmt_none
exe "hi! ConId" . s:fg_yellow .s:bg_none .s:fmt_none
exe "hi! hsImport" . s:fg_magenta.s:bg_none .s:fmt_none
exe "hi! hsString" . s:fg_base00 .s:bg_none .s:fmt_none
exe "hi! hsStructure" . s:fg_cyan .s:bg_none .s:fmt_none
exe "hi! hs_hlFunctionName" . s:fg_blue .s:bg_none
exe "hi! hsStatement" . s:fg_cyan .s:bg_none .s:fmt_none
exe "hi! hsImportLabel" . s:fg_cyan .s:bg_none .s:fmt_none
exe "hi! hs_OpFunctionName" . s:fg_yellow .s:bg_none .s:fmt_none
exe "hi! hs_DeclareFunction" . s:fg_orange .s:bg_none .s:fmt_none
exe "hi! hsVarSym" . s:fg_cyan .s:bg_none .s:fmt_none
exe "hi! hsType" . s:fg_yellow .s:bg_none .s:fmt_none
exe "hi! hsTypedef" . s:fg_cyan .s:bg_none .s:fmt_none
exe "hi! hsModuleName" . s:fg_green .s:bg_none .s:fmt_undr
exe "hi! hsModuleStartLabel" . s:fg_magenta.s:bg_none .s:fmt_none
hi! link hsImportParams Delimiter
hi! link hsDelimTypeExport Delimiter
hi! link hsModuleStartLabel hsStructure
hi! link hsModuleWhereLabel hsModuleStartLabel
" following is for the haskell-conceal plugin
" the first two items don't have an impact, but better safe
exe "hi! hsNiceOperator" . s:fg_cyan .s:bg_none .s:fmt_none
exe "hi! hsniceoperator" . s:fg_cyan .s:bg_none .s:fmt_none
"}}}
" pandoc markdown syntax highlighting "{{{
" ---------------------------------------------------------------------
"PandocHiLink pandocNormalBlock
exe "hi! pandocTitleBlock" .s:fg_blue .s:bg_none .s:fmt_none
exe "hi! pandocTitleBlockTitle" .s:fg_blue .s:bg_none .s:fmt_bold
exe "hi! pandocTitleComment" .s:fg_blue .s:bg_none .s:fmt_bold
exe "hi! pandocComment" .s:fg_base01 .s:bg_none .s:fmt_ital
exe "hi! pandocVerbatimBlock" .s:fg_yellow .s:bg_none .s:fmt_none
hi! link pandocVerbatimBlockDeep pandocVerbatimBlock
hi! link pandocCodeBlock pandocVerbatimBlock
hi! link pandocCodeBlockDelim pandocVerbatimBlock
exe "hi! pandocBlockQuote" .s:fg_blue .s:bg_none .s:fmt_none
exe "hi! pandocBlockQuoteLeader1" .s:fg_blue .s:bg_none .s:fmt_none
exe "hi! pandocBlockQuoteLeader2" .s:fg_cyan .s:bg_none .s:fmt_none
exe "hi! pandocBlockQuoteLeader3" .s:fg_yellow .s:bg_none .s:fmt_none
exe "hi! pandocBlockQuoteLeader4" .s:fg_red .s:bg_none .s:fmt_none
exe "hi! pandocBlockQuoteLeader5" .s:fg_base0 .s:bg_none .s:fmt_none
exe "hi! pandocBlockQuoteLeader6" .s:fg_base01 .s:bg_none .s:fmt_none
exe "hi! pandocListMarker" .s:fg_magenta.s:bg_none .s:fmt_none
exe "hi! pandocListReference" .s:fg_magenta.s:bg_none .s:fmt_undr
" Definitions
" ---------------------------------------------------------------------
let s:fg_pdef = s:fg_violet
exe "hi! pandocDefinitionBlock" .s:fg_pdef .s:bg_none .s:fmt_none
exe "hi! pandocDefinitionTerm" .s:fg_pdef .s:bg_none .s:fmt_stnd
exe "hi! pandocDefinitionIndctr" .s:fg_pdef .s:bg_none .s:fmt_bold
exe "hi! pandocEmphasisDefinition" .s:fg_pdef .s:bg_none .s:fmt_ital
exe "hi! pandocEmphasisNestedDefinition" .s:fg_pdef .s:bg_none .s:fmt_bldi
exe "hi! pandocStrongEmphasisDefinition" .s:fg_pdef .s:bg_none .s:fmt_bold
exe "hi! pandocStrongEmphasisNestedDefinition" .s:fg_pdef.s:bg_none.s:fmt_bldi
exe "hi! pandocStrongEmphasisEmphasisDefinition" .s:fg_pdef.s:bg_none.s:fmt_bldi
exe "hi! pandocStrikeoutDefinition" .s:fg_pdef .s:bg_none .s:fmt_revr
exe "hi! pandocVerbatimInlineDefinition" .s:fg_pdef .s:bg_none .s:fmt_none
exe "hi! pandocSuperscriptDefinition" .s:fg_pdef .s:bg_none .s:fmt_none
exe "hi! pandocSubscriptDefinition" .s:fg_pdef .s:bg_none .s:fmt_none
" Tables
" ---------------------------------------------------------------------
let s:fg_ptable = s:fg_blue
exe "hi! pandocTable" .s:fg_ptable.s:bg_none .s:fmt_none
exe "hi! pandocTableStructure" .s:fg_ptable.s:bg_none .s:fmt_none
hi! link pandocTableStructureTop pandocTableStructre
hi! link pandocTableStructureEnd pandocTableStructre
exe "hi! pandocTableZebraLight" .s:fg_ptable.s:bg_base03.s:fmt_none
exe "hi! pandocTableZebraDark" .s:fg_ptable.s:bg_base02.s:fmt_none
exe "hi! pandocEmphasisTable" .s:fg_ptable.s:bg_none .s:fmt_ital
exe "hi! pandocEmphasisNestedTable" .s:fg_ptable.s:bg_none .s:fmt_bldi
exe "hi! pandocStrongEmphasisTable" .s:fg_ptable.s:bg_none .s:fmt_bold
exe "hi! pandocStrongEmphasisNestedTable" .s:fg_ptable.s:bg_none .s:fmt_bldi
exe "hi! pandocStrongEmphasisEmphasisTable" .s:fg_ptable.s:bg_none .s:fmt_bldi
exe "hi! pandocStrikeoutTable" .s:fg_ptable.s:bg_none .s:fmt_revr
exe "hi! pandocVerbatimInlineTable" .s:fg_ptable.s:bg_none .s:fmt_none
exe "hi! pandocSuperscriptTable" .s:fg_ptable.s:bg_none .s:fmt_none
exe "hi! pandocSubscriptTable" .s:fg_ptable.s:bg_none .s:fmt_none
" Headings
" ---------------------------------------------------------------------
let s:fg_phead = s:fg_orange
exe "hi! pandocHeading" .s:fg_phead .s:bg_none.s:fmt_bold
exe "hi! pandocHeadingMarker" .s:fg_yellow.s:bg_none.s:fmt_bold
exe "hi! pandocEmphasisHeading" .s:fg_phead .s:bg_none.s:fmt_bldi
exe "hi! pandocEmphasisNestedHeading" .s:fg_phead .s:bg_none.s:fmt_bldi
exe "hi! pandocStrongEmphasisHeading" .s:fg_phead .s:bg_none.s:fmt_bold
exe "hi! pandocStrongEmphasisNestedHeading" .s:fg_phead .s:bg_none.s:fmt_bldi
exe "hi! pandocStrongEmphasisEmphasisHeading".s:fg_phead .s:bg_none.s:fmt_bldi
exe "hi! pandocStrikeoutHeading" .s:fg_phead .s:bg_none.s:fmt_revr
exe "hi! pandocVerbatimInlineHeading" .s:fg_phead .s:bg_none.s:fmt_bold
exe "hi! pandocSuperscriptHeading" .s:fg_phead .s:bg_none.s:fmt_bold
exe "hi! pandocSubscriptHeading" .s:fg_phead .s:bg_none.s:fmt_bold
" Links
" ---------------------------------------------------------------------
exe "hi! pandocLinkDelim" .s:fg_base01 .s:bg_none .s:fmt_none
exe "hi! pandocLinkLabel" .s:fg_blue .s:bg_none .s:fmt_undr
exe "hi! pandocLinkText" .s:fg_blue .s:bg_none .s:fmt_undb
exe "hi! pandocLinkURL" .s:fg_base00 .s:bg_none .s:fmt_undr
exe "hi! pandocLinkTitle" .s:fg_base00 .s:bg_none .s:fmt_undi
exe "hi! pandocLinkTitleDelim" .s:fg_base01 .s:bg_none .s:fmt_undi .s:sp_base00
exe "hi! pandocLinkDefinition" .s:fg_cyan .s:bg_none .s:fmt_undr .s:sp_base00
exe "hi! pandocLinkDefinitionID" .s:fg_blue .s:bg_none .s:fmt_bold
exe "hi! pandocImageCaption" .s:fg_violet .s:bg_none .s:fmt_undb
exe "hi! pandocFootnoteLink" .s:fg_green .s:bg_none .s:fmt_undr
exe "hi! pandocFootnoteDefLink" .s:fg_green .s:bg_none .s:fmt_bold
exe "hi! pandocFootnoteInline" .s:fg_green .s:bg_none .s:fmt_undb
exe "hi! pandocFootnote" .s:fg_green .s:bg_none .s:fmt_none
exe "hi! pandocCitationDelim" .s:fg_magenta.s:bg_none .s:fmt_none
exe "hi! pandocCitation" .s:fg_magenta.s:bg_none .s:fmt_none
exe "hi! pandocCitationID" .s:fg_magenta.s:bg_none .s:fmt_undr
exe "hi! pandocCitationRef" .s:fg_magenta.s:bg_none .s:fmt_none
" Main Styles
" ---------------------------------------------------------------------
exe "hi! pandocStyleDelim" .s:fg_base01 .s:bg_none .s:fmt_none
exe "hi! pandocEmphasis" .s:fg_base0 .s:bg_none .s:fmt_ital
exe "hi! pandocEmphasisNested" .s:fg_base0 .s:bg_none .s:fmt_bldi
exe "hi! pandocStrongEmphasis" .s:fg_base0 .s:bg_none .s:fmt_bold
exe "hi! pandocStrongEmphasisNested" .s:fg_base0 .s:bg_none .s:fmt_bldi
exe "hi! pandocStrongEmphasisEmphasis" .s:fg_base0 .s:bg_none .s:fmt_bldi
exe "hi! pandocStrikeout" .s:fg_base01 .s:bg_none .s:fmt_revr
exe "hi! pandocVerbatimInline" .s:fg_yellow .s:bg_none .s:fmt_none
exe "hi! pandocSuperscript" .s:fg_violet .s:bg_none .s:fmt_none
exe "hi! pandocSubscript" .s:fg_violet .s:bg_none .s:fmt_none
exe "hi! pandocRule" .s:fg_blue .s:bg_none .s:fmt_bold
exe "hi! pandocRuleLine" .s:fg_blue .s:bg_none .s:fmt_bold
exe "hi! pandocEscapePair" .s:fg_red .s:bg_none .s:fmt_bold
exe "hi! pandocCitationRef" .s:fg_magenta.s:bg_none .s:fmt_none
exe "hi! pandocNonBreakingSpace" . s:fg_red .s:bg_none .s:fmt_revr
hi! link pandocEscapedCharacter pandocEscapePair
hi! link pandocLineBreak pandocEscapePair
" Embedded Code
" ---------------------------------------------------------------------
exe "hi! pandocMetadataDelim" .s:fg_base01 .s:bg_none .s:fmt_none
exe "hi! pandocMetadata" .s:fg_blue .s:bg_none .s:fmt_none
exe "hi! pandocMetadataKey" .s:fg_blue .s:bg_none .s:fmt_none
exe "hi! pandocMetadata" .s:fg_blue .s:bg_none .s:fmt_bold
hi! link pandocMetadataTitle pandocMetadata
"}}}
" Utility autocommand "{{{
" ---------------------------------------------------------------------
" In cases where Solarized is initialized inside a terminal vim session and
" then transferred to a gui session via the command `:gui`, the gui vim process
" does not re-read the colorscheme (or .vimrc for that matter) so any `has_gui`
" related code that sets gui specific values isn't executed.
"
" Currently, Solarized sets only the cterm or gui values for the colorscheme
" depending on gui or terminal mode. It's possible that, if the following
" autocommand method is deemed excessively poor form, that approach will be
" used again and the autocommand below will be dropped.
"
" However it seems relatively benign in this case to include the autocommand
" here. It fires only in cases where vim is transferring from terminal to gui
" mode (detected with the script scope s:vmode variable). It also allows for
" other potential terminal customizations that might make gui mode suboptimal.
"
autocmd GUIEnter * if (s:vmode != "gui") | exe "colorscheme " . g:colors_name | endif
"}}}
" License "{{{
" ---------------------------------------------------------------------
"
" Copyright (c) 2011 Ethan Schoonover
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to deal
" in the Software without restriction, including without limitation the rights
" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
" copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
" THE SOFTWARE.
"
" vim:foldmethod=marker:foldlevel=0
"}}}

View File

@ -1,4 +1,4 @@
*align.txt* The Alignment Tool Jun 18, 2012 *align.txt* The Alignment Tool Jan 07, 2013
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM> Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first) (remove NOSPAM from Campbell's email first)
@ -78,9 +78,9 @@ Copyright: (c) 2004-2012 by Charles E. Campbell *Align-copyright*
|| | | || || | | ||
|| | +-------------------------------------------------------++ || | +-------------------------------------------------------++
|| 1st arg | = | = all separator patterns are equivalent and are || || 1st arg | = | = all separator patterns are equivalent and are ||
|| | | simultaneously active. Patterns are |regexp|. || || | | simultaneously active. Patterns are |regexp|. ||
|| | | C cycle through separator patterns. Patterns are || || | | C cycle through separator patterns. Patterns are ||
|| | | |regexp| and are active sequentially. || || | | |regexp| and are active sequentially. ||
|| | | || || | | ||
|| | < | < left justify separator Separators are justified, || || | < | < left justify separator Separators are justified, ||
|| | | > right justify separator too. Separator styles || || | | > right justify separator too. Separator styles ||
@ -144,7 +144,7 @@ Copyright: (c) 2004-2012 by Charles E. Campbell *Align-copyright*
3. Alignment Usage *alignusage* *align-usage* *align-userguide* {{{1 3. Alignment Usage *alignusage* *align-usage* *align-userguide* {{{1
ALIGNMENT CONCEPTS *align-concept* *align-concepts* {{{2 ALIGNMENT CONCEPTS *align-concept* *align-concepts* *alignctrl* {{{1
The typical text to be aligned is considered to be: The typical text to be aligned is considered to be:
@ -315,7 +315,7 @@ ALIGNMENT OPTIONS *align-option* *align-options* *align-xstrlen* {{{2
the most accurate. (thanks to Tony Mechelynck for these) the most accurate. (thanks to Tony Mechelynck for these)
ALIGNMENT CONTROL *alignctrl* *align-control* {{{2 ALIGNMENT CONTROL *:AlignCtrl* *align-control* {{{2
This command doesn't do the alignment operation itself; instead, it This command doesn't do the alignment operation itself; instead, it
controls subsequent alignment operation(s). controls subsequent alignment operation(s).
@ -756,7 +756,7 @@ ALIGNMENT CONTROL INITIALIZATION *alignctrl-init* *alignctrl-initialization* {{{
and :AlignCtrl will then be defined. and :AlignCtrl will then be defined.
ALIGNMENT *align-align* {{{2 ALIGNMENT *:Align* *align-align* {{{2
Once the alignment control has been determined, the user specifies a Once the alignment control has been determined, the user specifies a
range of lines for the Align command/function to do its thing. range of lines for the Align command/function to do its thing.
@ -852,7 +852,7 @@ ALIGNMENT *align-align* {{{2
\adcom: useful for aligning comments in declarations |alignmap-adcom| \adcom: useful for aligning comments in declarations |alignmap-adcom|
\anum : useful for aligning numbers |alignmap-anum| \anum : useful for aligning numbers |alignmap-anum|
NOTE: For the visual-mode use of \anum, <vis.vim> is needed! NOTE: For the visual-mode use of \anum, <vis.vim> is needed!
See http://mysite.verizon.net/astronaut/vim/index.html#VIS See http://www.drchip.org/astronaut/vim/index.html#VIS
\aenum: align a European-style number |alignmap-anum| \aenum: align a European-style number |alignmap-anum|
\aunum: align a USA-style number |alignmap-anum| \aunum: align a USA-style number |alignmap-anum|
\adec : useful for aligning declarations |alignmap-adec| \adec : useful for aligning declarations |alignmap-adec|
@ -916,7 +916,7 @@ ALIGNMENT *align-align* {{{2
an AlignMap with the vis.vim plugin, available at either an AlignMap with the vis.vim plugin, available at either
stable: http://vim.sourceforge.net/scripts/script.php?script_id=1195 stable: http://vim.sourceforge.net/scripts/script.php?script_id=1195
devel : http://mysite.verizon.net/astronaut/vim/index.html#VIS devel : http://www.drchip.org/astronaut/vim/index.html#VIS
Use it with commands such as > Use it with commands such as >
@ -1400,194 +1400,202 @@ 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 v37 Nov 29, 2012 * (Kim Jang-hwan) reported that with g:Align_xstrlen
to retain initial white space, did so by convert- set to 3 that the cursor was moved (linewise)
ing any leading tabs into an equivalent quantity after invocation. Fixed.
of blanks (using the current tabstop setting). Jan 07, 2013 * now has visual mode mappings to accompany all
Align will now retain leading tabs. normal mode mappings (use |V| to invoke)
Nov 24, 2009 * QArgSplitter() used split(), intending to split v36 May 20, 2009 * Previously, the "W" AlignCtrl setting, intended
on white space only. However, the \tab map to retain initial white space, did so by convert-
uses ctrl-o as a separator instead of tabs; the ing any leading tabs into an equivalent quantity
split() function treated the ctrl-o as a whitespace of blanks (using the current tabstop setting).
character, too. Solution: give split() an explicit Align will now retain leading tabs.
pattern matching blanks and tabs, only. \tab now Nov 24, 2009 * QArgSplitter() used split(), intending to split
works again! on white space only. However, the \tab map
Jun 29, 2010 * included |g:AlignSkip| and |alignctrl-star| support uses ctrl-o as a separator instead of tabs; the
May 10, 2011 * if the range is only one line, then Align will split() function treated the ctrl-o as a whitespace
automatically grow the range to accommodate all character, too. Solution: give split() an explicit
lines containing the first separator pattern pattern matching blanks and tabs, only. \tab now
surrounding the current line. works again!
Aug 05, 2011 * g:Align_xstrlen usage extended to permit users to Jun 29, 2010 * included |g:AlignSkip| and |alignctrl-star| support
specify a function by name which computes string May 10, 2011 * if the range is only one line, then Align will
length. automatically grow the range to accommodate all
Oct 27, 2011 * (reported by Fco Javier) reported a problem with lines containing the first separator pattern
the default s:Strlen() result; there was a missing surrounding the current line.
"let". Fixed. Aug 05, 2011 * g:Align_xstrlen usage extended to permit users to
Nov 10, 2011 * (Lewis Thompson) Align was doing "set noet" when specify a function by name which computes string
it should've been doing "setlocal noet". length.
Dec 22, 2011 * modifed s:Strlen() to use |strdisplaywidth()| when Oct 27, 2011 * (reported by Fco Javier) reported a problem with
g:Align_xstrlen is zero. the default s:Strlen() result; there was a missing
35 : Nov 02, 2008 * g:loaded_AlignPlugin testing to prevent re-loading "let". Fixed.
installed Nov 10, 2011 * (Lewis Thompson) Align was doing "set noet" when
Nov 19, 2008 * new sanity check for an AlignStyle of just ":" it should've been doing "setlocal noet".
Jan 08, 2009 * save&restore of |'mod'| now done with local Dec 22, 2011 * modifed s:Strlen() to use |strdisplaywidth()| when
variant g:Align_xstrlen is zero.
34 : Jul 08, 2008 * using :AlignCtrl before entering any alignment v35 Nov 02, 2008 * g:loaded_AlignPlugin testing to prevent re-loading
control commands was causing an error. installed
33 : Sep 20, 2007 * s:Strlen() introduced to support various ways Nov 19, 2008 * new sanity check for an AlignStyle of just ":"
used to represent characters and their effects Jan 08, 2009 * save&restore of |'mod'| now done with local
on string lengths. See |align-strlen|. variant
* Align now accepts "..." -- so it can accept v34 Jul 08, 2008 * using :AlignCtrl before entering any alignment
whitespace as separators. control commands was causing an error.
32 : Aug 18, 2007 * uses |<q-args>| instead of |<f-args>| plus a v33 Sep 20, 2007 * s:Strlen() introduced to support various ways
custom argument splitter to allow patterns with used to represent characters and their effects
backslashes to slide in unaltered. on string lengths. See |align-strlen|.
31 : Aug 06, 2007 * :[range]Align! [AlignCtrl settings] pattern(s) * Align now accepts "..." -- so it can accept
implemented. whitespace as separators.
30 : Feb 12, 2007 * now uses |setline()| v32 Aug 18, 2007 * uses |<q-args>| instead of |<f-args>| plus a
29 : Jan 18, 2006 * cecutil updated to use keepjumps custom argument splitter to allow patterns with
Feb 23, 2006 * Align now converted to vim 7.0 style using backslashes to slide in unaltered.
auto-loading functions. v31 Aug 06, 2007 * :[range]Align! [AlignCtrl settings] pattern(s)
28 : Aug 17, 2005 * report option workaround implemented.
Oct 24, 2005 * AlignCtrl l: wasn't behaving as expected; fixed v30 Feb 12, 2007 * now uses |setline()|
27 : Apr 15, 2005 : cpo workaround v29 Jan 18, 2006 * cecutil updated to use keepjumps
ignorecase workaround Feb 23, 2006 * Align now converted to vim 7.0 style using
26 : Aug 20, 2004 : loaded_align now also indicates version number auto-loading functions.
GetLatestVimScripts :AutoInstall: now supported v28 Aug 17, 2005 * report option workaround
25 : Jul 27, 2004 : For debugging, uses Dfunc(), Dret(), and Decho() Oct 24, 2005 * AlignCtrl l: wasn't behaving as expected; fixed
24 : Mar 03, 2004 : (should've done this earlier!) visualmode(1) v27 Apr 15, 2005 * cpo workaround
not supported until v6.2, now Align will avoid ignorecase workaround
calling it for earlier versions. Visualmode v26 Aug 20, 2004 * loaded_align now also indicates version number
clearing won't take place then, of course. GetLatestVimScripts :AutoInstall: now supported
23 : Oct 07, 2003 : Included Leif Wickland's ReplaceQuotedSpaces() v25 Jul 27, 2004 * For debugging, uses Dfunc(), Dret(), and Decho()
function which supports \tsq v24 Mar 03, 2004 * (should've done this earlier!) visualmode(1)
22 : Jan 29, 2003 : Now requires 6.1.308 or later to clear visualmode() not supported until v6.2, now Align will avoid
21 : Jan 10, 2003 : BugFix: similar problem to #19; new code calling it for earlier versions. Visualmode
bypasses "norm! v\<Esc>" until initialization clearing won't take place then, of course.
is over. v23 Oct 07, 2003 * Included Leif Wickland's ReplaceQuotedSpaces()
20 : Dec 30, 2002 : BugFix: more on "unable to highlight" fixed function which supports \tsq
19 : Nov 21, 2002 : BugFix: some terminals gave an "unable to highlight" v22 Jan 29, 2003 * Now requires 6.1.308 or later to clear visualmode()
message at startup; Hari Krishna Dara tracked it v21 Jan 10, 2003 * BugFix: similar problem to #19; new code
down; a silent! now included to prevent noise. bypasses "norm! v\<Esc>" until initialization
18 : Nov 04, 2002 : BugFix: re-enabled anti-repeated-loading is over.
17 : Nov 04, 2002 : BugFix: forgot to have AlignPush() push s:AlignSep v20 Dec 30, 2002 * BugFix: more on "unable to highlight" fixed
AlignCtrl now clears visual-block mode when used so v19 Nov 21, 2002 * BugFix: some terminals gave an "unable to highlight"
that Align won't try to use old visual-block message at startup; Hari Krishna Dara tracked it
selection marks '< '> down; a silent! now included to prevent noise.
16 : Sep 18, 2002 : AlignCtrl <>| options implemented (separator v18 Nov 04, 2002 * BugFix: re-enabled anti-repeated-loading
justification) v17 Nov 04, 2002 * BugFix: forgot to have AlignPush() push s:AlignSep
15 : Aug 22, 2002 : bug fix: AlignCtrl's ":" now acts as a modifier of AlignCtrl now clears visual-block mode when used so
the preceding alignment operator (lrc) that Align won't try to use old visual-block
14 : Aug 20, 2002 : bug fix: AlignCtrl default now keeps &ic unchanged selection marks '< '>
bug fix: Align, on end-field, wasn't using correct v16 Sep 18, 2002 * AlignCtrl <>| options implemented (separator
alignop bug fix: Align, on end-field, was appending justification)
padding v15 Aug 22, 2002 * bug fix: AlignCtrl's ":" now acts as a modifier of
13 : Aug 19, 2002 : bug fix: zero-length g/v patterns are accepted the preceding alignment operator (lrc)
bug fix: always skip blank lines v14 Aug 20, 2002 * bug fix: AlignCtrl default now keeps &ic unchanged
bug fix: AlignCtrl default now also clears g and v bug fix: Align, on end-field, wasn't using correct
patterns alignop bug fix: Align, on end-field, was appending
12 : Aug 16, 2002 : moved keep_ic above zero-length pattern checks padding
added "AlignCtrl default" v13 Aug 19, 2002 * bug fix: zero-length g/v patterns are accepted
fixed bug with last field getting separator spaces bug fix: always skip blank lines
at end line bug fix: AlignCtrl default now also clears g and v
11 : Jul 08, 2002 : prevent separator patterns which match zero length patterns
-+: included as additional alignment/justification v12 Aug 16, 2002 * moved keep_ic above zero-length pattern checks
styles added "AlignCtrl default"
10 : Jun 26, 2002 : =~# used instead of =~ (for matching case) fixed bug with last field getting separator spaces
ignorecase option handled at end line
9 : Jun 25, 2002 : implemented cyclic padding v11 Jul 08, 2002 * prevent separator patterns which match zero length
-+: included as additional alignment/justification
styles
v10 Jun 26, 2002 * =~# used instead of =~ (for matching case)
ignorecase option handled
v09 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 v43 Nov 28, 2012 * changed a lot of maps to use nnoremap (instead
Feb 16, 2010 * map for \t=, \T= now handles x++ = something; of map)
for c, c++ correctly. Jan 07, 2013 *
Oct 29, 2010 * added a note on having one's own default v42 Jan 06, 2010 * new maps for \anum, \aenum, \aunum
AlignCtrl (see |alignctrl-init|) Feb 16, 2010 * map for \t=, \T= now handles x++ = something;
Feb 22, 2011 * for menus, &go =~# used to insure correct case for c, c++ correctly.
Jun 10, 2011 * |:AlignMapsClean| command provided to make it Oct 29, 2010 * added a note on having one's own default
easy for those who would prefer not to have AlignCtrl (see |alignctrl-init|)
AlignMaps' maps not to have them. Feb 22, 2011 * for menus, &go =~# used to insure correct case
v41 Nov 02, 2008 * g:loaded_AlignMapsPlugin testing to prevent Jun 10, 2011 * |:AlignMapsClean| command provided to make it
re-loading installed easy for those who would prefer not to have
* AlignMaps now use 0x0f (ctrl-p) for special AlignMaps' maps not to have them.
character substitutions (instead of 0xff). v41 Nov 02, 2008 * g:loaded_AlignMapsPlugin testing to prevent
Seems to avoid some problems with having to re-loading installed
use Strlen(). * AlignMaps now use 0x0f (ctrl-p) for special
* bug fixed with \ts, character substitutions (instead of 0xff).
* new maps: \ts; \ts, \ts: \ts< \ts= \a( Seems to avoid some problems with having to
v40 Oct 21, 2008 * Modified AlignMaps so that its maps use <Plug>s use Strlen().
and <script>s. \t@ and related maps have been * bug fixed with \ts,
changed to call StdAlign() instead. The * new maps: \ts; \ts, \ts: \ts< \ts= \a(
WrapperStart function now takes an argument and v40 Oct 21, 2008 * Modified AlignMaps so that its maps use <Plug>s
handles being called via visual mode. The and <script>s. \t@ and related maps have been
former nmaps and vmaps have thus been replaced changed to call StdAlign() instead. The
with a simple map. WrapperStart function now takes an argument and
Oct 24, 2008 * broke AlignMaps into a plugin and autoload handles being called via visual mode. The
pair of scripts. former nmaps and vmaps have thus been replaced
v39 Mar 06, 2008 : * \t= only does /* ... */ aligning when in *.c with a simple map.
*.cpp files. Oct 24, 2008 * broke AlignMaps into a plugin and autoload
v38 Aug 18, 2007 : * \tt altered so that it works with the new pair of scripts.
use of |<q-args>| plus a custom argument v39 Mar 06, 2008 * \t= only does /* ... */ aligning when in *.c
splitter *.cpp files.
v36 Sep 27, 2006 : * AlignWrapperStart() now has tests that marks v38 Aug 18, 2007 * \tt altered so that it works with the new
y and z are not set use of |<q-args>| plus a custom argument
May 15, 2007 * \anum and variants improved splitter
v35 Sep 01, 2006 : * \t= and cousins used "`"s. They now use \xff v36 Sep 27, 2006 * AlignWrapperStart() now has tests that marks
characters. y and z are not set
* \acom now works with doxygen style /// comments May 15, 2007 * \anum and variants improved
* <char-0xff> used in \t= \T= \w= and \m= instead v35 Sep 01, 2006 * \t= and cousins used "`"s. They now use \xff
of backquotes. characters.
v34 Feb 23, 2006 : * AlignMaps now converted to vim 7.0 style using * \acom now works with doxygen style /// comments
auto-loading functions. * <char-0xff> used in \t= \T= \w= and \m= instead
v33 Oct 12, 2005 : * \ts, now uses P1 in its AlignCtrl call of backquotes.
v32 Jun 28, 2005 : * s:WrapperStart() changed to AlignWrapperStart() v34 Feb 23, 2006 * AlignMaps now converted to vim 7.0 style using
s:WrapperEnd() changed to AlignWrapperEnd() auto-loading functions.
These changes let the AlignWrapper...()s to be v33 Oct 12, 2005 * \ts, now uses P1 in its AlignCtrl call
used outside of AlignMaps.vim v32 Jun 28, 2005 * s:WrapperStart() changed to AlignWrapperStart()
v31 Feb 01, 2005 : * \adcom included, with help s:WrapperEnd() changed to AlignWrapperEnd()
* \a, now works across multiple lines with These changes let the AlignWrapper...()s to be
different types used outside of AlignMaps.vim
* AlignMaps now uses <cecutil.vim> for its mark and v31 Feb 01, 2005 * \adcom included, with help
window-position saving and restoration * \a, now works across multiple lines with
Mar 04, 2005 * improved \a, different types
Apr 06, 2005 * included \aenum, \aunum, and provided * AlignMaps now uses <cecutil.vim> for its mark and
g:alignmaps_{usa|euro]number} options window-position saving and restoration
v30 Aug 20, 2004 : * \a, : handles embedded assignments and does \adec Mar 04, 2005 * improved \a,
* \acom now can handle Doxygen-style comments Apr 06, 2005 * included \aenum, \aunum, and provided
* g:loaded_alignmaps now also indicates version g:alignmaps_{usa|euro]number} options
* internal maps \WE and \WS are now re-entrant v30 Aug 20, 2004 * * \a, : handles embedded assignments and does \adec
v29 Jul 27, 2004 : * \tml aligns trailing multi-line single * \acom now can handle Doxygen-style comments
backslashes (thanks to Raul Benavente!) * g:loaded_alignmaps now also indicates version
v28 May 13, 2004 : * \a, had problems with leading blanks; fixed! * internal maps \WE and \WS are now re-entrant
v27 Mar 31, 2004 : * \T= was having problems with == and != v29 Jul 27, 2004 * \tml aligns trailing multi-line single
* Fixed more problems with \adec backslashes (thanks to Raul Benavente!)
v26 Dec 09, 2003 : * \ascom now also ignores lines without comments v28 May 13, 2004 * \a, had problems with leading blanks; fixed!
* \tt \& now not matched v27 Mar 31, 2004 * \T= was having problems with == and !=
* \a< handles both << and >> * Fixed more problems with \adec
v25 Nov 14, 2003 : * included \anum (aligns numbers with periods and v26 Dec 09, 2003 * \ascom now also ignores lines without comments
commas). \anum also supported with ctrl-v mode. * \tt \& now not matched
* \ts, \Ts, : (aligns on commas, then swaps leading * \a< handles both << and >>
spaces with commas) v25 Nov 14, 2003 * included \anum (aligns numbers with periods and
* \adec ignores preprocessor lines and lines with commas). \anum also supported with ctrl-v mode.
with comments-only * \ts, \Ts, : (aligns on commas, then swaps leading
v23 Sep 10, 2003 : * Bugfix for \afnc - no longer overwrites marks y,z spaces with commas)
* fixed bug in \tsp, \tab, \Tsp, and \Tab - lines * \adec ignores preprocessor lines and lines with
containing backslashes were having their with comments-only
backslashes removed. Included Leif Wickland's v23 Sep 10, 2003 * Bugfix for \afnc - no longer overwrites marks y,z
patch for \tsq. * fixed bug in \tsp, \tab, \Tsp, and \Tab - lines
* \adef now ignores lines holding comments only containing backslashes were having their
v18 Aug 22, 2003 : \a< lines up C++'s << operators backslashes removed. Included Leif Wickland's
saves/restores gdefault option (sets to nogd) patch for \tsq.
all b:..varname.. are now b:alignmaps_..varname.. * \adef now ignores lines holding comments only
v17 Nov 04, 2002 : \afnc now handles // comments correctly and v18 Aug 22, 2003 * \a< lines up C++'s << operators
commas within comments saves/restores gdefault option (sets to nogd)
v16 Sep 10, 2002 : changed : to :silent! for \adec all b:..varname.. are now b:alignmaps_..varname..
v15 Aug 27, 2002 : removed some <c-v>s v17 Nov 04, 2002 * \afnc now handles // comments correctly and
v14 Aug 20, 2002 : \WS, \WE mostly moved to functions, marks y and z commas within comments
now restored v16 Sep 10, 2002 * changed : to :silent! for \adec
v11 Jul 08, 2002 : \abox bug fix v15 Aug 27, 2002 * removed some <c-v>s
v9 Jun 25, 2002 : \abox now handles leading initial whitespace v14 Aug 20, 2002 * \WS, \WE mostly moved to functions, marks y and z
: various bugfixes to \afnc, \T=, etc now restored
v11 Jul 08, 2002 * \abox bug fix
v9 Jun 25, 2002 * \abox now handles leading initial whitespace
various bugfixes to \afnc, \T=, etc
============================================================================== ==============================================================================
Modelines: {{{1 Modelines: {{{1

View File

@ -59,7 +59,9 @@
'Tlist_WinWidth' taglist.txt /*'Tlist_WinWidth'* 'Tlist_WinWidth' taglist.txt /*'Tlist_WinWidth'*
'loaded_nerd_comments' NERD_commenter.txt /*'loaded_nerd_comments'* 'loaded_nerd_comments' NERD_commenter.txt /*'loaded_nerd_comments'*
'loaded_nerd_tree' NERD_tree.txt /*'loaded_nerd_tree'* 'loaded_nerd_tree' NERD_tree.txt /*'loaded_nerd_tree'*
:Align Align.txt /*:Align*
:AlignCenter textformat.txt /*:AlignCenter* :AlignCenter textformat.txt /*:AlignCenter*
:AlignCtrl Align.txt /*:AlignCtrl*
:AlignJustify textformat.txt /*:AlignJustify* :AlignJustify textformat.txt /*:AlignJustify*
:AlignLeft textformat.txt /*:AlignLeft* :AlignLeft textformat.txt /*:AlignLeft*
:AlignMapsClean Align.txt /*:AlignMapsClean* :AlignMapsClean Align.txt /*:AlignMapsClean*

View File

@ -12,7 +12,7 @@ set mousefocus
set errorbells set errorbells
set visualbell set visualbell
set showtabline=2 set showtabline=2
set guicursor=a:blinkon0 set guicursor=a:block-blinkon0
set showtabline=2 set showtabline=2
set guitablabel=%!GuiTabLabel() set guitablabel=%!GuiTabLabel()
set guitabtooltip=%!GuiTabToolTip() set guitabtooltip=%!GuiTabToolTip()

View File

@ -1,9 +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. <NdrOchipS@PcampbellAfamily.Mbiz>
" Date: Jun 18, 2012 " Date: Jan 07, 2013
" "
" NOTE: the code herein needs vim 7.0 or later " NOTE: the code herein needs vim 7.0 or later
" Copyright: Copyright (C) 1999-2012 Charles E. Campbell, Jr. {{{1 " Copyright: Copyright (C) 1999-2012 Charles E. Campbell {{{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,
@ -37,7 +37,7 @@ if &cp || exists("g:loaded_AlignMapsPlugin")
finish finish
endif endif
let s:keepcpo = &cpo let s:keepcpo = &cpo
let g:loaded_AlignMapsPlugin = "v42" let g:loaded_AlignMapsPlugin = "v43"
set cpo&vim set cpo&vim
" ===================================================================== " =====================================================================
@ -53,8 +53,8 @@ com! AlignMapsClean :call AlignMaps#AlignMapsClean()
if !hasmapto('<Plug>WrapperStart') if !hasmapto('<Plug>WrapperStart')
map <unique> <SID>WS <Plug>AlignMapsWrapperStart map <unique> <SID>WS <Plug>AlignMapsWrapperStart
endif endif
nmap <silent> <script> <Plug>AlignMapsWrapperStart :set lz<CR>:call AlignMaps#WrapperStart(0)<CR> nnoremap <silent> <script> <Plug>AlignMapsWrapperStart :set lz<CR>:call AlignMaps#WrapperStart(0)<CR>
vmap <silent> <script> <Plug>AlignMapsWrapperStart :<c-u>set lz<CR>:call AlignMaps#WrapperStart(1)<CR> vnoremap <silent> <script> <Plug>AlignMapsWrapperStart :<c-u>set lz<CR>:call AlignMaps#WrapperStart(1)<CR>
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" WE: wrapper end (internal) {{{2 " WE: wrapper end (internal) {{{2
@ -62,50 +62,52 @@ vmap <silent> <script> <Plug>AlignMapsWrapperStart :<c-u>set lz<CR>:call AlignMa
if !hasmapto('<Plug>WrapperEnd') if !hasmapto('<Plug>WrapperEnd')
nmap <unique> <SID>WE <Plug>AlignMapsWrapperEnd nmap <unique> <SID>WE <Plug>AlignMapsWrapperEnd
endif endif
nmap <silent> <script> <Plug>AlignMapsWrapperEnd :call AlignMaps#WrapperEnd()<CR>:set nolz<CR> nnoremap <silent> <script> <Plug>AlignMapsWrapperEnd :call AlignMaps#WrapperEnd()<CR>:set nolz<CR>
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Complex C-code alignment maps: {{{2 " Complex C-code alignment maps: {{{2
if !hasmapto('<Plug>AM_a?') |map <unique> <Leader>a? <Plug>AM_a?|endif if !hasmapto('<Plug>AM_a?') |call AlignMaps#MakeMap("a?")|endif
if !hasmapto('<Plug>AM_a,') |map <unique> <Leader>a, <Plug>AM_a,|endif if !hasmapto('<Plug>AM_a,') |call AlignMaps#MakeMap("a,")|endif
if !hasmapto('<Plug>AM_a<') |map <unique> <Leader>a< <Plug>AM_a<|endif if !hasmapto('<Plug>AM_a<') |call AlignMaps#MakeMap("a<")|endif
if !hasmapto('<Plug>AM_a=') |map <unique> <Leader>a= <Plug>AM_a=|endif if !hasmapto('<Plug>AM_a=') |call AlignMaps#MakeMap("a=")|endif
if !hasmapto('<Plug>AM_a(') |map <unique> <Leader>a( <Plug>AM_a(|endif if !hasmapto('<Plug>AM_a(') |call AlignMaps#MakeMap("a(")|endif
if !hasmapto('<Plug>AM_abox') |map <unique> <Leader>abox <Plug>AM_abox|endif if !hasmapto('<Plug>AM_abox') |call AlignMaps#MakeMap("abox")|endif
if !hasmapto('<Plug>AM_acom') |map <unique> <Leader>acom <Plug>AM_acom|endif if !hasmapto('<Plug>AM_acom') |call AlignMaps#MakeMap("acom")|endif
if !hasmapto('<Plug>AM_adcom')|map <unique> <Leader>adcom <Plug>AM_adcom|endif if !hasmapto('<Plug>AM_adcom')|call AlignMaps#MakeMap("adcom")|endif
if !hasmapto('<Plug>AM_aocom')|map <unique> <Leader>aocom <Plug>AM_aocom|endif if !hasmapto('<Plug>AM_aocom')|call AlignMaps#MakeMap("aocom")|endif
if !hasmapto('<Plug>AM_ascom')|map <unique> <Leader>ascom <Plug>AM_ascom|endif if !hasmapto('<Plug>AM_ascom')|call AlignMaps#MakeMap("ascom")|endif
if !hasmapto('<Plug>AM_adec') |map <unique> <Leader>adec <Plug>AM_adec|endif if !hasmapto('<Plug>AM_adec') |call AlignMaps#MakeMap("adec")|endif
if !hasmapto('<Plug>AM_adef') |map <unique> <Leader>adef <Plug>AM_adef|endif if !hasmapto('<Plug>AM_adef') |call AlignMaps#MakeMap("adef")|endif
if !hasmapto('<Plug>AM_afnc') |map <unique> <Leader>afnc <Plug>AM_afnc|endif if !hasmapto('<Plug>AM_afnc') |call AlignMaps#MakeMap("afnc")|endif
if !hasmapto('<Plug>AM_afnc') |map <unique> <Leader>afnc <Plug>AM_afnc|endif if !hasmapto('<Plug>AM_afnc') |call AlignMaps#MakeMap("afnc")|endif
" ---------------------------------------------------------------------
" Number alignment maps: {{{2 " Number alignment maps: {{{2
if !hasmapto('<Plug>AM_aunum')|map <unique> <Leader>aunum <Plug>AM_aunum|endif if !hasmapto('<Plug>AM_aunum')|call AlignMaps#MakeMap("aunum")|endif
if !hasmapto('<Plug>AM_aenum')|map <unique> <Leader>aenum <Plug>AM_aenum|endif if !hasmapto('<Plug>AM_aenum')|call AlignMaps#MakeMap("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')|call AlignMaps#MakeMap("anum")|endif
else else
if !hasmapto('<Plug>AM_anum')|map <unique> <Leader>anum <Plug>AM_aunum|endif if !hasmapto('<Plug>AM_anum')|call AlignMaps#MakeMap("anum")|endif
endif endif
" ---------------------------------------------------------------------
" Plug maps: (the real thing) {{{2 " 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 nnoremap <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 nnoremap <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 nnoremap <silent> <script> <Plug>AM_a< <SID>WS:AlignCtrl mIp1P1=l << >><CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_a( <SID>WS:AlignCtrl mIp0P1=l<CR>:'a,.Align [(,]<CR>:sil 'y+1,'z-1s/\(\s\+\),/,\1/ge<CR><SID>WE nnoremap <silent> <script> <Plug>AM_a( <SID>WS:AlignCtrl mIp0P1=l<CR>:'a,.Align [(,]<CR>:sil 'y+1,'z-1s/\(\s\+\),/,\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_a= <SID>WS:AlignCtrl mIp1P1=l<CR>:AlignCtrl g :=<CR>:'a,'zAlign :\==<CR><SID>WE nnoremap <silent> <script> <Plug>AM_a= <SID>WS:AlignCtrl mIp1P1=l<CR>:AlignCtrl g :=<CR>:'a,'zAlign :\==<CR><SID>WE
map <silent> <script> <Plug>AM_abox <SID>WS:let g:alignmaps_iws=substitute(getline("'a"),'^\(\s*\).*$','\1','e')<CR>:'a,'z-1s/^\s\+//e<CR>:'a,'z-1s/^.*$/@&@/<CR>:AlignCtrl m=p01P0w @<CR>:'a,.Align<CR>:'a,'z-1s/@/ * /<CR>:'a,'z-1s/@$/*/<CR>'aYP:s/./*/g<CR>0r/'zkYp:s/./*/g<CR>0r A/<Esc>:exe "'a-1,'z-1s/^/".g:alignmaps_iws."/e"<CR><SID>WE nnoremap <silent> <script> <Plug>AM_abox <SID>WS:let g:alignmaps_iws=substitute(getline("'a"),'^\(\s*\).*$','\1','e')<CR>:'a,'z-1s/^\s\+//e<CR>:'a,'z-1s/^.*$/@&@/<CR>:AlignCtrl m=p01P0w @<CR>:'a,.Align<CR>:'a,'z-1s/@/ * /<CR>:'a,'z-1s/@$/*/<CR>'aYP:s/./*/g<CR>0r/'zkYp:s/./*/g<CR>0r A/<Esc>:exe "'a-1,'z-1s/^/".g:alignmaps_iws."/e"<CR><SID>WE
map <silent> <script> <Plug>AM_acom <SID>WS:'a,.s/\/[*/]\/\=/@&@/e<CR>:'a,.s/\*\//@&/e<CR>:'y,'zs/^\( *\) @/\1@/e<CR>'zk:call AlignMaps#StdAlign(2)<CR>:'y,'zs/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE nnoremap <silent> <script> <Plug>AM_acom <SID>WS:'a,.s/\/[*/]\/\=/@&@/e<CR>:'a,.s/\*\//@&/e<CR>:'y,'zs/^\( *\) @/\1@/e<CR>'zk:call AlignMaps#StdAlign(2)<CR>:'y,'zs/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE
map <silent> <script> <Plug>AM_adcom <SID>WS:'a,.v/^\s*\/[/*]/s/\/[*/]\*\=/@&@/e<CR>:'a,.v/^\s*\/[/*]/s/\*\//@&/e<CR>:'y,'zv/^\s*\/[/*]/s/^\( *\) @/\1@/e<CR>'zk:call AlignMaps#StdAlign(3)<cr>:'y,'zv/^\s*\/[/*]/s/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE nnoremap <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 nnoremap <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 nnoremap <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*\%([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 nnoremap <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 nnoremap <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> nnoremap <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/\([-+]\=\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 nnoremap <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/\([-+]\=\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 nnoremap <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
@ -113,86 +115,88 @@ map <silent> <script> <Plug>AM_Htd <SID>WS:'y,'zs%<[tT][rR]><[tT][dD][^>]\{-}>\<
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" character-based right-justified alignment maps {{{2 " character-based right-justified alignment maps {{{2
if !hasmapto('<Plug>AM_T|')|map <unique> <Leader>T| <Plug>AM_T||endif if !hasmapto('<Plug>AM_T|')|call AlignMaps#MakeMap("T|")|endif
if !hasmapto('<Plug>AM_T#') |map <unique> <Leader>T# <Plug>AM_T#|endif if !hasmapto('<Plug>AM_T#') |call AlignMaps#MakeMap("T#")|endif
if !hasmapto('<Plug>AM_T,') |map <unique> <Leader>T, <Plug>AM_T,o|endif if !hasmapto('<Plug>AM_T,') |call AlignMaps#MakeMap("T,")|endif
if !hasmapto('<Plug>AM_Ts,') |map <unique> <Leader>Ts, <Plug>AM_Ts,|endif if !hasmapto('<Plug>AM_Ts,') |call AlignMaps#MakeMap("Ts,")|endif
if !hasmapto('<Plug>AM_T:') |map <unique> <Leader>T: <Plug>AM_T:|endif if !hasmapto('<Plug>AM_T:') |call AlignMaps#MakeMap("T:")|endif
if !hasmapto('<Plug>AM_T;') |map <unique> <Leader>T; <Plug>AM_T;|endif if !hasmapto('<Plug>AM_T;') |call AlignMaps#MakeMap("T;")|endif
if !hasmapto('<Plug>AM_T<') |map <unique> <Leader>T< <Plug>AM_T<|endif if !hasmapto('<Plug>AM_T<') |call AlignMaps#MakeMap("T<")|endif
if !hasmapto('<Plug>AM_T=') |map <unique> <Leader>T= <Plug>AM_T=|endif if !hasmapto('<Plug>AM_T=') |call AlignMaps#MakeMap("T=")|endif
if !hasmapto('<Plug>AM_T?') |map <unique> <Leader>T? <Plug>AM_T?|endif if !hasmapto('<Plug>AM_T?') |call AlignMaps#MakeMap("T?")|endif
if !hasmapto('<Plug>AM_T@') |map <unique> <Leader>T@ <Plug>AM_T@|endif if !hasmapto('<Plug>AM_T@') |call AlignMaps#MakeMap("T@")|endif
if !hasmapto('<Plug>AM_TW@') |map <unique> <Leader>TW@ <Plug>AM_TW@|endif if !hasmapto('<Plug>AM_TW@') |call AlignMaps#MakeMap("TW@")|endif
if !hasmapto('<Plug>AM_Tab') |map <unique> <Leader>Tab <Plug>AM_Tab|endif if !hasmapto('<Plug>AM_Tab') |call AlignMaps#MakeMap("Tab")|endif
if !hasmapto('<Plug>AM_Tsp') |map <unique> <Leader>Tsp <Plug>AM_Tsp|endif if !hasmapto('<Plug>AM_Tsp') |call AlignMaps#MakeMap("Tsp")|endif
if !hasmapto('<Plug>AM_T~') |map <unique> <Leader>T~ <Plug>AM_T~|endif if !hasmapto('<Plug>AM_T~') |call AlignMaps#MakeMap("T~")|endif
map <silent> <script> <Plug>AM_T| <SID>WS:AlignCtrl mIp0P0=r <Bar><CR>:'a,.Align<CR><SID>WE nnoremap <silent> <script> <Plug>AM_T| <SID>WS:AlignCtrl mIp0P0=r <Bar><CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T# <SID>WS:AlignCtrl mIp0P0=r #<CR>:'a,.Align<CR><SID>WE nnoremap <silent> <script> <Plug>AM_T# <SID>WS:AlignCtrl mIp0P0=r #<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T, <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<CR><SID>WE nnoremap <silent> <script> <Plug>AM_T, <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_Ts, <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<CR>:'a,.s/\(\s*\),/,\1/ge<CR><SID>WE nnoremap <silent> <script> <Plug>AM_Ts, <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<CR>:'a,.s/\(\s*\),/,\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_T: <SID>WS:AlignCtrl mIp1P1=r :<CR>:'a,.Align<CR><SID>WE nnoremap <silent> <script> <Plug>AM_T: <SID>WS:AlignCtrl mIp1P1=r :<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T; <SID>WS:AlignCtrl mIp0P0=r ;<CR>:'a,.Align<CR><SID>WE nnoremap <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 nnoremap <silent> <script> <Plug>AM_T< <SID>WS:AlignCtrl mIp0P0=r <<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T= <SID>WS:'a,'z-1s/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'z-1s@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'z-1s/; */;@/e<CR>:'a,'z-1s/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'z-1s/!=/\x="!\<Char-0x0f>"/ge<CR>:AlignCtrl mIp1P1=r = @<CR>:AlignCtrl g =<CR>:'a,'z-1Align<CR>:'a,'z-1s/; *@/;/e<CR>:'a,'z-1s/; *$/;/e<CR>:'a,'z-1s@\([*/+\-%<Bar>&\~^]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1s/\( \+\);/;\1/ge<CR>:'a,'z-1s/\xff/=/ge<CR><SID>WE:exe "norm <Plug>acom" nnoremap <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 nnoremap <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 nnoremap <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 nnoremap <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 nnoremap <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 nnoremap <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 nnoremap <silent> <script> <Plug>AM_T~ <SID>WS:AlignCtrl mIp0P0=r ~<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" character-based left-justified alignment maps {{{2 " character-based left-justified alignment maps {{{2
if !hasmapto('<Plug>AM_t|') |map <unique> <Leader>t| <Plug>AM_t||endif if !hasmapto('<Plug>AM_t|','n') |call AlignMaps#MakeMap("t|")|endif
if !hasmapto('<Plug>AM_t#') |map <unique> <Leader>t# <Plug>AM_t#|endif if !hasmapto('<Plug>AM_t#','n') |call AlignMaps#MakeMap("t#")|endif
if !hasmapto('<Plug>AM_t,') |map <unique> <Leader>t, <Plug>AM_t,|endif if !hasmapto('<Plug>AM_t,','n') |call AlignMaps#MakeMap("t,")|endif
if !hasmapto('<Plug>AM_t:') |map <unique> <Leader>t: <Plug>AM_t:|endif if !hasmapto('<Plug>AM_t:','n') |call AlignMaps#MakeMap("t:")|endif
if !hasmapto('<Plug>AM_t;') |map <unique> <Leader>t; <Plug>AM_t;|endif if !hasmapto('<Plug>AM_t;','n') |call AlignMaps#MakeMap("t;")|endif
if !hasmapto('<Plug>AM_t<') |map <unique> <Leader>t< <Plug>AM_t<|endif if !hasmapto('<Plug>AM_t<','n') |call AlignMaps#MakeMap("t<")|endif
if !hasmapto('<Plug>AM_t=') |map <unique> <Leader>t= <Plug>AM_t=|endif if !hasmapto('<Plug>AM_t=','n') |call AlignMaps#MakeMap("t=")|endif
if !hasmapto('<Plug>AM_ts,') |map <unique> <Leader>ts, <Plug>AM_ts,|endif if !hasmapto('<Plug>AM_ts,','n') |call AlignMaps#MakeMap("ts,")|endif
if !hasmapto('<Plug>AM_ts:') |map <unique> <Leader>ts: <Plug>AM_ts:|endif if !hasmapto('<Plug>AM_ts:','n') |call AlignMaps#MakeMap("ts:")|endif
if !hasmapto('<Plug>AM_ts;') |map <unique> <Leader>ts; <Plug>AM_ts;|endif if !hasmapto('<Plug>AM_ts;','n') |call AlignMaps#MakeMap("ts;")|endif
if !hasmapto('<Plug>AM_ts<') |map <unique> <Leader>ts< <Plug>AM_ts<|endif if !hasmapto('<Plug>AM_ts<','n') |call AlignMaps#MakeMap("ts<")|endif
if !hasmapto('<Plug>AM_ts=') |map <unique> <Leader>ts= <Plug>AM_ts=|endif if !hasmapto('<Plug>AM_ts=','n') |call AlignMaps#MakeMap("ts=")|endif
if !hasmapto('<Plug>AM_w=') |map <unique> <Leader>w= <Plug>AM_w=|endif if !hasmapto('<Plug>AM_w=','n') |call AlignMaps#MakeMap("w=")|endif
if !hasmapto('<Plug>AM_t?') |map <unique> <Leader>t? <Plug>AM_t?|endif if !hasmapto('<Plug>AM_t?','n') |call AlignMaps#MakeMap("t?")|endif
if !hasmapto('<Plug>AM_t~') |map <unique> <Leader>t~ <Plug>AM_t~|endif if !hasmapto('<Plug>AM_t~','n') |call AlignMaps#MakeMap("t~")|endif
if !hasmapto('<Plug>AM_t@') |map <unique> <Leader>t@ <Plug>AM_t@|endif if !hasmapto('<Plug>AM_t@','n') |call AlignMaps#MakeMap("t@")|endif
if !hasmapto('<Plug>AM_tW@') |map <unique> <Leader>tW@ <Plug>AM_tW@|endif if !hasmapto('<Plug>AM_tW@','n') |call AlignMaps#MakeMap("tW@")|endif
if !hasmapto('<Plug>AM_m=') |map <unique> <Leader>m= <Plug>AM_m=|endif if !hasmapto('<Plug>AM_m=','n') |call AlignMaps#MakeMap("m=")|endif
if !hasmapto('<Plug>AM_tab') |map <unique> <Leader>tab <Plug>AM_tab|endif if !hasmapto('<Plug>AM_tab','n') |call AlignMaps#MakeMap("tab")|endif
if !hasmapto('<Plug>AM_tml') |map <unique> <Leader>tml <Plug>AM_tml|endif if !hasmapto('<Plug>AM_tml','n') |call AlignMaps#MakeMap("tml")|endif
if !hasmapto('<Plug>AM_tsp') |map <unique> <Leader>tsp <Plug>AM_tsp|endif if !hasmapto('<Plug>AM_tsp','n') |call AlignMaps#MakeMap("tsp")|endif
if !hasmapto('<Plug>AM_tsq') |map <unique> <Leader>tsq <Plug>AM_tsq|endif if !hasmapto('<Plug>AM_tsq','n') |call AlignMaps#MakeMap("tsq")|endif
if !hasmapto('<Plug>AM_tt') |map <unique> <Leader>tt <Plug>AM_tt|endif if !hasmapto('<Plug>AM_tt','n') |call AlignMaps#MakeMap("tt")|endif
if !hasmapto('<Plug>AM_tab','n') |call AlignMaps#MakeMap("tab")|endif
map <silent> <script> <Plug>AM_t| <SID>WS:AlignCtrl mIp0P0=l <Bar><CR>:'a,.Align<CR><SID>WE " <Plug> normal mode mappings
map <silent> <script> <Plug>AM_t# <SID>WS:AlignCtrl mIp0P0=l #<CR>:'a,.Align<CR><SID>WE nnoremap <silent> <script> <Plug>AM_t| <SID>WS:AlignCtrl mIp0P0=l <Bar><CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t, <SID>WS:AlignCtrl mIp0P1=l ,<CR>:'a,.Align<CR><SID>WE nnoremap <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 mIp1P1=l :<CR>:'a,.Align<CR><SID>WE nnoremap <silent> <script> <Plug>AM_t, <SID>WS:AlignCtrl mIp0P1=l ,<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t; <SID>WS:AlignCtrl mIp0P1=l ;<CR>:'a,.Align<CR>:sil 'y,'zs/\( *\);/;\1/ge<CR><SID>WE nnoremap <silent> <script> <Plug>AM_t: <SID>WS:AlignCtrl mIp1P1=l :<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t< <SID>WS:AlignCtrl mIp0P0=l <<CR>:'a,.Align<CR><SID>WE nnoremap <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:call AlignMaps#Equals()<CR><SID>WE nnoremap <silent> <script> <Plug>AM_t< <SID>WS:AlignCtrl mIp0P0=l <<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_ts, <SID>WS:AlignCtrl mIp0P1=l #\zs<CR>:'a,.Align<CR><SID>WE nnoremap <silent> <script> <Plug>AM_t= <SID>WS:call AlignMaps#Equals()<CR><SID>WE
map <silent> <script> <Plug>AM_ts, <SID>WS:AlignCtrl mIp0P1=l ,\zs<CR>:'a,.Align<CR><SID>WE nnoremap <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 :\zs<CR>:'a,.Align<CR><SID>WE nnoremap <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 ;\zs<CR>:'a,.Align<CR><SID>WE nnoremap <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 <\zs<CR>:'a,.Align<CR><SID>WE nnoremap <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 =\zs<CR>:'a,.Align<CR><SID>WE nnoremap <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 nnoremap <silent> <script> <Plug>AM_ts= <SID>WS:AlignCtrl mIp1P1=l =\zs<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t? <SID>WS:AlignCtrl mIp0P0=l ?<CR>:'a,.Align<CR>:.,'zs/ \( *\);/;\1/ge<CR><SID>WE nnoremap <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>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE nnoremap <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:call AlignMaps#StdAlign(1)<cr><SID>WE nnoremap <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_tW@ <SID>WS:call AlignMaps#StdAlign(2)<cr><SID>WE nnoremap <silent> <script> <Plug>AM_t@ <SID>WS:call AlignMaps#StdAlign(1)<cr><SID>WE
map <silent> <script> <Plug>AM_m= <SID>WS:'a,'zs/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'zs@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'zs/!=/\="!\<Char-0x0f>"/ge<CR>'zk:AlignCtrl mIp1P1=l =<CR>:AlignCtrl g =<CR>:'a,'z-1Align<CR>:'a,'z-1s@\([*/+\-%<Bar>&\~^!=]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1s/\( \+\);/;\1/ge<CR>:'a,'z-s/%\ze[^=]/ @%@ /e<CR>'zk:call AlignMaps#StdAlign(1)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'a,'z-1s/\xff/=/ge<CR>:'y,'zs/ @//eg<CR><SID>WE nnoremap <silent> <script> <Plug>AM_tW@ <SID>WS:call AlignMaps#StdAlign(2)<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 nnoremap <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_tml <SID>WS:AlignCtrl mWp1P0=l \\\@<!\\\s*$<CR>:'a,.Align<CR><SID>WE nnoremap <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_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 nnoremap <silent> <script> <Plug>AM_tml <SID>WS:AlignCtrl mWp1P0=l \\\@<!\\\s*$<CR>:'a,.Align<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 nnoremap <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_tt <SID>WS:AlignCtrl mIp1P1=l \\\@<!& \\\\<CR>:'a,.Align<CR><SID>WE nnoremap <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
nnoremap <silent> <script> <Plug>AM_tt <SID>WS:AlignCtrl mIp1P1=l \\\@<!& \\\\<CR>:'a,.Align<CR><SID>WE
" ===================================================================== " =====================================================================
" Menu Support: {{{1 " Menu Support: {{{1

View File

@ -1,9 +1,9 @@
" AlignPlugin: tool to align multiple fields based on one or more separators " AlignPlugin: tool to align multiple fields based on one or more separators
" Author: Charles E. Campbell, Jr. " Author: Charles E. Campbell
" 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-2012 Charles E. Campbell, Jr. {{{1 " Copyright: Copyright (C) 1999-2012 Charles E. Campbell {{{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 = "v36" let g:loaded_AlignPlugin = "v37"
let s:keepcpo = &cpo let s:keepcpo = &cpo
set cpo&vim set cpo&vim

View File

@ -1,9 +1,9 @@
" cecutil.vim : save/restore window position " cecutil.vim : save/restore window position
" 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
" Version: 17 " Version: 18h ASTRO-ONLY
" Date: Sep 04, 2007 " Date: Oct 16, 2012
" "
" 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,20 +27,23 @@
" 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 = "v17" let g:loaded_cecutil = "v18h"
let s:keepcpo = &cpo let s:keepcpo = &cpo
set cpo&vim set cpo&vim
"DechoVarOn "DechoRemOn
" ----------------------- " =======================
" Public Interface: {{{1 " Public Interface: {{{1
" ----------------------- " =======================
" ---------------------------------------------------------------------
" Map Interface: {{{2 " Map Interface: {{{2
if !hasmapto('<Plug>SaveWinPosn') if !hasmapto('<Plug>SaveWinPosn')
map <unique> <Leader>swp <Plug>SaveWinPosn map <unique> <Leader>swp <Plug>SaveWinPosn
@ -51,43 +54,56 @@ endif
nmap <silent> <Plug>SaveWinPosn :call SaveWinPosn()<CR> nmap <silent> <Plug>SaveWinPosn :call SaveWinPosn()<CR>
nmap <silent> <Plug>RestoreWinPosn :call RestoreWinPosn()<CR> 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
" ===============
" Functions: {{{1
" ===============
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" SaveWinPosn: {{{1 " SaveWinPosn: {{{2
" let winposn= SaveWinPosn() will save window position in winposn variable " let winposn= SaveWinPosn() will save window position in winposn variable
" 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 = &so let so_keep = &l:so
let siso_keep = &siso let siso_keep = &siso
let ss_keep = &ss let ss_keep = &l:ss
set 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>"
@ -99,54 +115,56 @@ 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
let &so = so_keep let &l:so = so_keep
let &siso = siso_keep let &siso = siso_keep
let &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
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" RestoreWinPosn: {{{1 " RestoreWinPosn: {{{2
" call RestoreWinPosn()
" 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 = &so let so_keep = &l:so
let siso_keep = &siso let siso_keep = &l:siso
let ss_keep = &ss let ss_keep = &l:ss
set so=0 siso=0 ss=0 setlocal so=0 siso=0 ss=0
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
@ -158,49 +176,68 @@ 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
" seems to be something odd: vertical motions after RWP " Seems to be something odd: vertical motions after RWP
" cause jump to first column. Following fixes that " cause jump to first column. The following fixes that.
if wincol() > 1 " Note: was using wincol()>1, but with signs, a cursor
silent norm! hl " at column 1 yields wincol()==3. Beeping ensued.
let vekeep= &ve
set ve=all
if virtcol('.') > 1
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 &so = so_keep let &l:so = so_keep
let &siso = siso_keep let &l:siso = siso_keep
let &ss = ss_keep let &l:ss = ss_keep
" call Dret("RestoreWinPosn") " echomsg "Decho: RestoreWinPosn"
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" GoWinbufnr: go to window holding given buffer (by number) {{{1 " 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
" ---------------------------------------------------------------------
" GoWinbufnr: go to window holding given buffer (by number) {{{2
" Prefers current window; if its buffer number doesn't match, " Prefers current window; if its buffer number doesn't match,
" then will try from topleft to bottom right " then will try from topleft to bottom right
fun! GoWinbufnr(bufnum) fun! GoWinbufnr(bufnum)
@ -219,7 +256,7 @@ fun! GoWinbufnr(bufnum)
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" SaveMark: sets up a string saving a mark position. {{{1 " SaveMark: sets up a string saving a mark position. {{{2
" For example, SaveMark("a") " For example, SaveMark("a")
" Also sets up a global variable, g:savemark_{markname} " Also sets up a global variable, g:savemark_{markname}
fun! SaveMark(markname) fun! SaveMark(markname)
@ -252,7 +289,7 @@ fun! SaveMark(markname)
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" RestoreMark: {{{1 " RestoreMark: {{{2
" call RestoreMark("a") -or- call RestoreMark(savemark) " call RestoreMark("a") -or- call RestoreMark(savemark)
fun! RestoreMark(markname) fun! RestoreMark(markname)
" call Dfunc("RestoreMark(markname<".a:markname.">)") " call Dfunc("RestoreMark(markname<".a:markname.">)")
@ -294,7 +331,7 @@ fun! RestoreMark(markname)
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" DestroyMark: {{{1 " DestroyMark: {{{2
" call DestroyMark("a") -- destroys mark " call DestroyMark("a") -- destroys mark
fun! DestroyMark(markname) fun! DestroyMark(markname)
" call Dfunc("DestroyMark(markname<".a:markname.">)") " call Dfunc("DestroyMark(markname<".a:markname.">)")
@ -329,7 +366,7 @@ fun! DestroyMark(markname)
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" QArgSplitter: to avoid \ processing by <f-args>, <q-args> is needed. {{{1 " QArgSplitter: to avoid \ processing by <f-args>, <q-args> is needed. {{{2
" However, <q-args> doesn't split at all, so this one returns a list " However, <q-args> doesn't split at all, so this one returns a list
" with splits at all whitespace (only!), plus a leading length-of-list. " with splits at all whitespace (only!), plus a leading length-of-list.
" The resulting list: qarglist[0] corresponds to a:0 " The resulting list: qarglist[0] corresponds to a:0
@ -344,7 +381,7 @@ fun! QArgSplitter(qarg)
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" ListWinPosn: " ListWinPosn: {{{2
"fun! ListWinPosn() " Decho "fun! ListWinPosn() " Decho
" if !exists("b:cecutil_iwinposn") || b:cecutil_iwinposn == 0 " Decho " if !exists("b:cecutil_iwinposn") || b:cecutil_iwinposn == 0 " Decho
" call Decho("nothing on SWP stack") " Decho " call Decho("nothing on SWP stack") " Decho
@ -363,14 +400,19 @@ endfun
"com! -nargs=0 LWP call ListWinPosn() " Decho "com! -nargs=0 LWP call ListWinPosn() " Decho
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" SaveUserMaps: this function sets up a script-variable (s:restoremap) {{{1 " SaveUserMaps: this function sets up a script-variable (s:restoremap) {{{2
" which can be used to restore user maps later with " which can be used to restore user maps later with
" call RestoreUserMaps() " call RestoreUserMaps()
" "
" mapmode - see :help maparg for its list " mapmode - see :help maparg for details (n v o i c l "")
" ex. "n" = Normal " ex. "n" = Normal
" If the first letter is u, then unmapping will be done " The letters "b" and "u" are optional prefixes;
" ex. "un" = Normal + unmapping " The "u" means that the map will also be unmapped
" The "b" means that the map has a <buffer> qualifier
" ex. "un" = Normal + unmapping
" ex. "bn" = Normal + <buffer>
" ex. "bun" = Normal + <buffer> + unmapping
" ex. "ubn" = Normal + <buffer> + unmapping
" maplead - see mapchx " maplead - see mapchx
" mapchx - "<something>" handled as a single map item. " mapchx - "<something>" handled as a single map item.
" ex. "<left>" " ex. "<left>"
@ -395,60 +437,70 @@ fun! SaveUserMaps(mapmode,maplead,mapchx,suffix)
" set up dounmap: if 1, then save and unmap (a:mapmode leads with a "u") " set up dounmap: if 1, then save and unmap (a:mapmode leads with a "u")
" if 0, save only " if 0, save only
if a:mapmode =~ '^u' let mapmode = a:mapmode
let dounmap= 1 let dounmap = 0
let mapmode= strpart(a:mapmode,1) let dobuffer = ""
else while mapmode =~ '^[bu]'
let dounmap= 0 if mapmode =~ '^u'
let mapmode= a:mapmode let dounmap = 1
endif let mapmode = strpart(a:mapmode,1)
elseif mapmode =~ '^b'
let dobuffer = "<buffer> "
let mapmode = strpart(a:mapmode,1)
endif
endwhile
" call Decho("dounmap=".dounmap." dobuffer<".dobuffer.">")
" save single map :...something... " save single map :...something...
if strpart(a:mapchx,0,1) == ':' if strpart(a:mapchx,0,1) == ':'
" call Decho("save single map :...something...")
let amap= strpart(a:mapchx,1) let amap= strpart(a:mapchx,1)
if amap == "|" || amap == "\<c-v>" if amap == "|" || amap == "\<c-v>"
let amap= "\<c-v>".amap let amap= "\<c-v>".amap
endif endif
let amap = a:maplead.amap let amap = a:maplead.amap
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:silent! ".mapmode."unmap ".amap let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:sil! ".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." ".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 ".amap exe "sil! ".mapmode."unmap ".dobuffer.amap
endif endif
" save single map <something> " save single map <something>
elseif strpart(a:mapchx,0,1) == '<' elseif strpart(a:mapchx,0,1) == '<'
" call Decho("save single map <something>")
let amap = a:mapchx let amap = a:mapchx
if amap == "|" || amap == "\<c-v>" if amap == "|" || amap == "\<c-v>"
let amap= "\<c-v>".amap let amap= "\<c-v>".amap
" call Decho("amap[[".amap."]]")
endif endif
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".amap let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|sil! ".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." ".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 ".amap exe "sil! ".mapmode."unmap ".dobuffer.amap
endif endif
" save multiple maps " save multiple maps
else else
" call Decho("save multiple maps")
let i= 1 let i= 1
while i <= strlen(a:mapchx) while i <= strlen(a:mapchx)
let amap= a:maplead.strpart(a:mapchx,i-1,1) let amap= a:maplead.strpart(a:mapchx,i-1,1)
if amap == "|" || amap == "\<c-v>" if amap == "|" || amap == "\<c-v>"
let amap= "\<c-v>".amap let amap= "\<c-v>".amap
endif endif
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".amap let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|sil! ".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." ".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 ".amap exe "sil! ".mapmode."unmap ".dobuffer.amap
endif endif
let i= i + 1 let i= i + 1
endwhile endwhile
@ -457,7 +509,7 @@ fun! SaveUserMaps(mapmode,maplead,mapchx,suffix)
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" RestoreUserMaps: {{{1 " RestoreUserMaps: {{{2
" Used to restore user maps saved by SaveUserMaps() " Used to restore user maps saved by SaveUserMaps()
fun! RestoreUserMaps(suffix) fun! RestoreUserMaps(suffix)
" call Dfunc("RestoreUserMaps(suffix<".a:suffix.">)") " call Dfunc("RestoreUserMaps(suffix<".a:suffix.">)")
@ -465,18 +517,20 @@ fun! RestoreUserMaps(suffix)
let s:restoremap_{a:suffix}= substitute(s:restoremap_{a:suffix},'|\s*$','','e') let s:restoremap_{a:suffix}= substitute(s:restoremap_{a:suffix},'|\s*$','','e')
if s:restoremap_{a:suffix} != "" if s:restoremap_{a:suffix} != ""
" call Decho("exe ".s:restoremap_{a:suffix}) " call Decho("exe ".s:restoremap_{a:suffix})
exe "silent! ".s:restoremap_{a:suffix} exe "sil! ".s:restoremap_{a:suffix}
endif endif
unlet s:restoremap_{a:suffix} unlet s:restoremap_{a:suffix}
endif endif
" call Dret("RestoreUserMaps") " call Dret("RestoreUserMaps")
endfun endfun
" --------------------------------------------------------------------- " ==============
" Restore: {{{1 " Restore: {{{1
" ==============
let &cpo= s:keepcpo let &cpo= s:keepcpo
unlet s:keepcpo unlet s:keepcpo
" --------------------------------------------------------------------- " ================
" Modelines: {{{1 " Modelines: {{{1
" ================
" vim: ts=4 fdm=marker " vim: ts=4 fdm=marker

View File

@ -13,7 +13,7 @@ set nohlsearch
set nostartofline set nostartofline
" set paste " set paste
set autochdir set autochdir
set clipboard=unnamed " set clipboard=unnamed
" Let's go to 256 colors " Let's go to 256 colors
set t_Co=256 set t_Co=256
@ -49,16 +49,16 @@ set modeline
set modelines=1 set modelines=1
set encoding=utf-8 set encoding=utf-8
set listchars=tab:->,trail:.,eol:$,extends:>,precedes:< set listchars=tab:->,trail:.,eol:$,extends:>,precedes:<
set smartcase set ignorecase " Do case insensitive matching
set smartcase " But with style
set errorbells set errorbells
" set visualbell " set visualbell
set showcmd " Show (partial) command in status line. set showcmd " Show (partial) command in status line.
set showmatch " Show matching brackets. set showmatch " Show matching brackets.
set ignorecase " Do case insensitive matching
set incsearch " Incremental search set incsearch " Incremental search
set autowrite " Automatically save before commands like :next and :make set autowrite " Automatically save before commands like :next and :make
" set statusline=%<%f\ %H%m%r%=%-14.(%l,%c%)\ %P\ Buf.%n " set statusline=%<%f\ %H%m%r%=%-14.(%l,%c%)\ %P\ Buf.%n
set showtabline=0 set showtabline=1
set backupcopy=yes set backupcopy=yes
set fileformats=unix,mac,dos set fileformats=unix,mac,dos
set fileformat=unix set fileformat=unix
@ -151,6 +151,10 @@ nnoremap <silent> <Leader>N :set number!<CR>
nnoremap <silent> da "_dd nnoremap <silent> da "_dd
" Standard Unix Home/End
" nnoremap <Home> ^
" nnoremap <End> $
nnoremap <silent> <Leader>ts :ConqueTermSplit zsh<CR> nnoremap <silent> <Leader>ts :ConqueTermSplit zsh<CR>
nnoremap <silent> <Leader>tT :ConqueTermTab zsh<CR> nnoremap <silent> <Leader>tT :ConqueTermTab zsh<CR>
@ -210,16 +214,16 @@ if has("syntax")
endif endif
if has("autocmd") if has("autocmd")
filetype indent on filetype plugin indent on
filetype plugin on
" When editing a file, always jump to the last cursor position " When editing a file, always jump to the last cursor position
autocmd BufReadPost * autocmd BufReadPost *
\ if line("'\"") > 0 && line ("'\"") <= line("$") | \ if line("'\"") > 0 && line ("'\"") <= line("$") |
\ exe "normal g'\"" | \ exe "normal g'\"" |
\ endif \ endif
" Mako " Mako
autocmd BufNewFile,BufRead *.mako setf mako autocmd! BufRead,BufNewFile *.mako setfiletype mako
autocmd FileType *.mako set textwidth=0 autocmd BufWinEnter *.mako setfiletype mako
autocmd FileType mako set textwidth=0
" Python " Python
autocmd FileType python set textwidth=79 autocmd FileType python set textwidth=79