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')
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')
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')
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
2771 16279 :AutoInstall: conque_term.vim
294 18148 :AutoInstall: Align.vim
294 19633 :AutoInstall: Align.vim
1066 7618 :AutoInstall: cecutil.vim
642 15781 :AutoInstall: getscript.vim
2324 9247 :AutoInstall: TextFormat

View File

@ -1,10 +1,10 @@
" Align: tool to align multiple fields based on one or more separators
" Author: Charles E. Campbell, Jr.
" Date: Jun 18, 2012
" Version: 36
" Author: Charles E. Campbell
" Date: Mar 12, 2013
" Version: 37
" GetLatestVimScripts: 294 1 :AutoInstall: Align.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,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
@ -25,7 +25,7 @@
if exists("g:loaded_Align") || &cp
finish
endif
let g:loaded_Align = "v36"
let g:loaded_Align = "v37"
if v:version < 700
echohl WarningMsg
echo "***warning*** this version of Align needs vim 7.0"
@ -43,7 +43,11 @@ set cpo&vim
" ---------------------------------------------------------------------
" Options: {{{1
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
else
let g:Align_xstrlen= 1
@ -529,19 +533,19 @@ fun! Align#Align(hasctrl,...) range
" call Decho(" ")
" call Decho("---- Pass ".pass.": ----")
let line= begline
while line <= endline
let curline= begline
while curline <= endline
" Process each line
let txt = getline(line)
let txt = getline(curline)
" 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 )
if exists("s:AlignGPat")
" call Decho("Pass".pass.": AlignGPat<".s:AlignGPat.">")
if match(txt,s:AlignGPat) == -1
" call Decho("Pass".pass.": skipping")
let line= line + 1
let curline= curline + 1
continue
endif
endif
@ -551,7 +555,7 @@ fun! Align#Align(hasctrl,...) range
" call Decho("Pass".pass.": AlignVPat<".s:AlignVPat.">")
if match(txt,s:AlignVPat) != -1
" call Decho("Pass".pass.": skipping")
let line= line + 1
let curline= curline + 1
continue
endif
endif
@ -559,7 +563,7 @@ fun! Align#Align(hasctrl,...) range
" Always skip blank lines
if match(txt,'^\s*$') != -1
" call Decho("Pass".pass.": skipping")
let line= line + 1
let curline= curline + 1
continue
endif
@ -655,7 +659,7 @@ fun! Align#Align(hasctrl,...) range
if alignop == '*' && exists("g:AlignSkip") && type(g:AlignSkip) == 2
" call Decho("Pass".pass.": endfield=match(txt<".txt.">,seppat<".seppat.">,bgnfield=".bgnfield.")=".endfield." alignop=".alignop)
" a '*' acts like a '-' while the g:AlignSkip function reference is true except that alignop doesn't advance
while g:AlignSkip(line,endfield) && endfield != -1
while g:AlignSkip(curline,endfield) && endfield != -1
let endfield = match(txt,seppat,skipfield)
let sepfield = matchend(txt,seppat,skipfield)
let skipfield = sepfield
@ -688,22 +692,20 @@ fun! Align#Align(hasctrl,...) range
let field = bgntxt.field
let bgntxt= ""
endif
let fieldlen = s:Strlen(field)
let sFieldSize = "FieldSize_".ifield
if !exists(sFieldSize)
let fieldlen= s:Strlen(field)
if !exists("FieldSize_{ifield}")
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}
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
let sSepSize= "SepSize_".ifield
if !exists(sSepSize)
if !exists("SepSize_{ifield}")
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}
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
else
@ -714,6 +716,8 @@ fun! Align#Align(hasctrl,...) range
let alignprepad = strpart(alignprepad,1).strpart(alignprepad,0,1)
let alignpostpad = strpart(alignpostpad,1).strpart(alignpostpad,0,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'
let field = bgntxt.field
let bgntxt= ""
@ -724,21 +728,26 @@ fun! Align#Align(hasctrl,...) range
endif
let fieldlen = s:Strlen(field)
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 alignsepop == "<"
" left-justify separators
let sep = sep.s:MakeSpace(SepSize_{ifield}-seplen)
" call Decho("Pass".pass.": sep<".sep."> (left-justified)")
elseif alignsepop == ">"
" right-justify separators
let sep = s:MakeSpace(SepSize_{ifield}-seplen).sep
" call Decho("Pass".pass.": sep<".sep."> (right-justified)")
else
" center-justify separators
let sepleft = (SepSize_{ifield} - seplen)/2
let sepright = SepSize_{ifield} - seplen - sepleft
let sep = s:MakeSpace(sepleft).sep.s:MakeSpace(sepright)
" call Decho("Pass".pass.": sep<".sep."> (center-justified)")
endif
endif
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.">")
" Perform alignment according to alignment style justification
@ -786,18 +795,20 @@ fun! Align#Align(hasctrl,...) range
if pass == 2
" 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.": endtxt<".endtxt.">")
keepj call setline(line,bgntxt.newtxt.endtxt)
keepj call setline(curline,bgntxt.newtxt.endtxt)
endif
" call Decho("Pass".pass.": line#".curline."<".getline(".")."> (end-of-while)")
let line = line + 1
endwhile " line loop
let curline = curline + 1
endwhile " curline loop
let pass= pass + 1
endwhile " pass loop
" call Decho("end of two pass loop")
" call Decho("ENDWHILE: cursor at (".line(".").",".col(".").") curline#".curline)
" restore original leading whitespace
if s:AlignLeadKeep == 'W'
@ -1059,6 +1070,7 @@ fun! s:Strlen(x)
call setline(line("."),a:x)
let ret= virtcol("$") - 1
d
keepj norm! k
let &l:mod= modkeep
else

View File

@ -1,8 +1,8 @@
" AlignMaps.vim : support functions for AlignMaps
" Author: Charles E. Campbell, Jr.
" Date: Jun 18, 2012
" Version: 42
" Copyright: Copyright (C) 1999-2012 Charles E. Campbell, Jr. {{{1
" Author: Charles E. Campbell
" Date: Mar 12, 2013
" Version: 43
" Copyright: Copyright (C) 1999-2012 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
@ -16,7 +16,7 @@
if &cp || exists("g:loaded_AlignMaps")
finish
endif
let g:loaded_AlignMaps= "v42"
let g:loaded_AlignMaps= "v43"
let s:keepcpo = &cpo
set cpo&vim
"DechoTabOn
@ -111,6 +111,20 @@ fun! AlignMaps#WrapperEnd() range
" call Dret("AlignMaps#WrapperEnd : alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
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
fun! AlignMaps#StdAlign(mode) range
@ -169,15 +183,15 @@ endfun
" AlignMaps#Equals: supports \t= and \T= {{{2
fun! AlignMaps#Equals() range
" call Dfunc("AlignMaps#Equals()")
keepj 'a,'zs/\s\+\([*/+\-%|&\~^]\==\)/ \1/e
keepj 'a,'zs@ \+\([*/+\-%|&\~^]\)=@\1=@ge
keepj 'a,'zs/\s\+\([.*/+\-%|&\~^]\==\)/ \1/e
keepj 'a,'zs@ \+\([.*/+\-%|&\~^]\)=@\1=@ge
keepj 'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge
keepj 'a,'zs/\([!<>:]\)=/\=submatch(1)."\<Char-0x0f>"/ge
keepj norm g'zk
AlignCtrl mIp1P1=l =
AlignCtrl g =
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/\( \+\);/;\1/ge
if &ft == "c" || &ft == "cpp"
@ -323,37 +337,6 @@ fun! AlignMaps#FixMultiDec()
let curline = getline(".")
" 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','')
" call Decho("@x<".@x.">")
@ -386,6 +369,31 @@ fun! AlignMaps#AlignMapsClean()
" call Dret("AlignMaps#AlignMapsClean")
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
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>
(remove NOSPAM from Campbell's email first)
@ -144,7 +144,7 @@ Copyright: (c) 2004-2012 by Charles E. Campbell *Align-copyright*
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:
@ -315,7 +315,7 @@ ALIGNMENT OPTIONS *align-option* *align-options* *align-xstrlen* {{{2
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
controls subsequent alignment operation(s).
@ -756,7 +756,7 @@ ALIGNMENT CONTROL INITIALIZATION *alignctrl-init* *alignctrl-initialization* {{{
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
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|
\anum : useful for aligning numbers |alignmap-anum|
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|
\aunum: align a USA-style number |alignmap-anum|
\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
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 >
@ -1400,7 +1400,12 @@ ALIGNMENT *align-align* {{{2
4. Alignment Tools' History *align-history* {{{1
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
set to 3 that the cursor was moved (linewise)
after invocation. Fixed.
Jan 07, 2013 * now has visual mode mappings to accompany all
normal mode mappings (use |V| to invoke)
v36 May 20, 2009 * Previously, the "W" AlignCtrl setting, intended
to retain initial white space, did so by convert-
ing any leading tabs into an equivalent quantity
of blanks (using the current tabstop setting).
@ -1427,77 +1432,80 @@ ALIGN HISTORY {{{2
it should've been doing "setlocal noet".
Dec 22, 2011 * modifed s:Strlen() to use |strdisplaywidth()| when
g:Align_xstrlen is zero.
35 : Nov 02, 2008 * g:loaded_AlignPlugin testing to prevent re-loading
v35 Nov 02, 2008 * g:loaded_AlignPlugin testing to prevent re-loading
installed
Nov 19, 2008 * new sanity check for an AlignStyle of just ":"
Jan 08, 2009 * save&restore of |'mod'| now done with local
variant
34 : Jul 08, 2008 * using :AlignCtrl before entering any alignment
v34 Jul 08, 2008 * using :AlignCtrl before entering any alignment
control commands was causing an error.
33 : Sep 20, 2007 * s:Strlen() introduced to support various ways
v33 Sep 20, 2007 * s:Strlen() introduced to support various ways
used to represent characters and their effects
on string lengths. See |align-strlen|.
* Align now accepts "..." -- so it can accept
whitespace as separators.
32 : Aug 18, 2007 * uses |<q-args>| instead of |<f-args>| plus a
v32 Aug 18, 2007 * uses |<q-args>| instead of |<f-args>| plus a
custom argument splitter to allow patterns with
backslashes to slide in unaltered.
31 : Aug 06, 2007 * :[range]Align! [AlignCtrl settings] pattern(s)
v31 Aug 06, 2007 * :[range]Align! [AlignCtrl settings] pattern(s)
implemented.
30 : Feb 12, 2007 * now uses |setline()|
29 : Jan 18, 2006 * cecutil updated to use keepjumps
v30 Feb 12, 2007 * now uses |setline()|
v29 Jan 18, 2006 * cecutil updated to use keepjumps
Feb 23, 2006 * Align now converted to vim 7.0 style using
auto-loading functions.
28 : Aug 17, 2005 * report option workaround
v28 Aug 17, 2005 * report option workaround
Oct 24, 2005 * AlignCtrl l: wasn't behaving as expected; fixed
27 : Apr 15, 2005 : cpo workaround
v27 Apr 15, 2005 * cpo workaround
ignorecase workaround
26 : Aug 20, 2004 : loaded_align now also indicates version number
v26 Aug 20, 2004 * loaded_align now also indicates version number
GetLatestVimScripts :AutoInstall: now supported
25 : Jul 27, 2004 : For debugging, uses Dfunc(), Dret(), and Decho()
24 : Mar 03, 2004 : (should've done this earlier!) visualmode(1)
v25 Jul 27, 2004 * For debugging, uses Dfunc(), Dret(), and Decho()
v24 Mar 03, 2004 * (should've done this earlier!) visualmode(1)
not supported until v6.2, now Align will avoid
calling it for earlier versions. Visualmode
clearing won't take place then, of course.
23 : Oct 07, 2003 : Included Leif Wickland's ReplaceQuotedSpaces()
v23 Oct 07, 2003 * Included Leif Wickland's ReplaceQuotedSpaces()
function which supports \tsq
22 : Jan 29, 2003 : Now requires 6.1.308 or later to clear visualmode()
21 : Jan 10, 2003 : BugFix: similar problem to #19; new code
v22 Jan 29, 2003 * Now requires 6.1.308 or later to clear visualmode()
v21 Jan 10, 2003 * BugFix: similar problem to #19; new code
bypasses "norm! v\<Esc>" until initialization
is over.
20 : Dec 30, 2002 : BugFix: more on "unable to highlight" fixed
19 : Nov 21, 2002 : BugFix: some terminals gave an "unable to highlight"
v20 Dec 30, 2002 * BugFix: more on "unable to highlight" fixed
v19 Nov 21, 2002 * BugFix: some terminals gave an "unable to highlight"
message at startup; Hari Krishna Dara tracked it
down; a silent! now included to prevent noise.
18 : Nov 04, 2002 : BugFix: re-enabled anti-repeated-loading
17 : Nov 04, 2002 : BugFix: forgot to have AlignPush() push s:AlignSep
v18 Nov 04, 2002 * BugFix: re-enabled anti-repeated-loading
v17 Nov 04, 2002 * BugFix: forgot to have AlignPush() push s:AlignSep
AlignCtrl now clears visual-block mode when used so
that Align won't try to use old visual-block
selection marks '< '>
16 : Sep 18, 2002 : AlignCtrl <>| options implemented (separator
v16 Sep 18, 2002 * AlignCtrl <>| options implemented (separator
justification)
15 : Aug 22, 2002 : bug fix: AlignCtrl's ":" now acts as a modifier of
v15 Aug 22, 2002 * bug fix: AlignCtrl's ":" now acts as a modifier of
the preceding alignment operator (lrc)
14 : Aug 20, 2002 : bug fix: AlignCtrl default now keeps &ic unchanged
v14 Aug 20, 2002 * bug fix: AlignCtrl default now keeps &ic unchanged
bug fix: Align, on end-field, wasn't using correct
alignop bug fix: Align, on end-field, was appending
padding
13 : Aug 19, 2002 : bug fix: zero-length g/v patterns are accepted
v13 Aug 19, 2002 * bug fix: zero-length g/v patterns are accepted
bug fix: always skip blank lines
bug fix: AlignCtrl default now also clears g and v
patterns
12 : Aug 16, 2002 : moved keep_ic above zero-length pattern checks
v12 Aug 16, 2002 * moved keep_ic above zero-length pattern checks
added "AlignCtrl default"
fixed bug with last field getting separator spaces
at end line
11 : Jul 08, 2002 : prevent separator patterns which match zero length
v11 Jul 08, 2002 * prevent separator patterns which match zero length
-+: included as additional alignment/justification
styles
10 : Jun 26, 2002 : =~# used instead of =~ (for matching case)
v10 Jun 26, 2002 * =~# used instead of =~ (for matching case)
ignorecase option handled
9 : Jun 25, 2002 : implemented cyclic padding
v09 Jun 25, 2002 * implemented cyclic padding
ALIGNMENT MAP HISTORY *alignmap-history* {{{2
v43 Nov 28, 2012 * changed a lot of maps to use nnoremap (instead
of map)
Jan 07, 2013 *
v42 Jan 06, 2010 * new maps for \anum, \aenum, \aunum
Feb 16, 2010 * map for \t=, \T= now handles x++ = something;
for c, c++ correctly.
@ -1524,27 +1532,27 @@ ALIGNMENT MAP HISTORY *alignmap-history* {{{2
with a simple map.
Oct 24, 2008 * broke AlignMaps into a plugin and autoload
pair of scripts.
v39 Mar 06, 2008 : * \t= only does /* ... */ aligning when in *.c
v39 Mar 06, 2008 * \t= only does /* ... */ aligning when in *.c
*.cpp files.
v38 Aug 18, 2007 : * \tt altered so that it works with the new
v38 Aug 18, 2007 * \tt altered so that it works with the new
use of |<q-args>| plus a custom argument
splitter
v36 Sep 27, 2006 : * AlignWrapperStart() now has tests that marks
v36 Sep 27, 2006 * AlignWrapperStart() now has tests that marks
y and z are not set
May 15, 2007 * \anum and variants improved
v35 Sep 01, 2006 : * \t= and cousins used "`"s. They now use \xff
v35 Sep 01, 2006 * \t= and cousins used "`"s. They now use \xff
characters.
* \acom now works with doxygen style /// comments
* <char-0xff> used in \t= \T= \w= and \m= instead
of backquotes.
v34 Feb 23, 2006 : * AlignMaps now converted to vim 7.0 style using
v34 Feb 23, 2006 * AlignMaps now converted to vim 7.0 style using
auto-loading functions.
v33 Oct 12, 2005 : * \ts, now uses P1 in its AlignCtrl call
v32 Jun 28, 2005 : * s:WrapperStart() changed to AlignWrapperStart()
v33 Oct 12, 2005 * \ts, now uses P1 in its AlignCtrl call
v32 Jun 28, 2005 * s:WrapperStart() changed to AlignWrapperStart()
s:WrapperEnd() changed to AlignWrapperEnd()
These changes let the AlignWrapper...()s to be
used outside of AlignMaps.vim
v31 Feb 01, 2005 : * \adcom included, with help
v31 Feb 01, 2005 * \adcom included, with help
* \a, now works across multiple lines with
different types
* AlignMaps now uses <cecutil.vim> for its mark and
@ -1552,42 +1560,42 @@ ALIGNMENT MAP HISTORY *alignmap-history* {{{2
Mar 04, 2005 * improved \a,
Apr 06, 2005 * included \aenum, \aunum, and provided
g:alignmaps_{usa|euro]number} options
v30 Aug 20, 2004 : * \a, : handles embedded assignments and does \adec
v30 Aug 20, 2004 * * \a, : handles embedded assignments and does \adec
* \acom now can handle Doxygen-style comments
* g:loaded_alignmaps now also indicates version
* internal maps \WE and \WS are now re-entrant
v29 Jul 27, 2004 : * \tml aligns trailing multi-line single
v29 Jul 27, 2004 * \tml aligns trailing multi-line single
backslashes (thanks to Raul Benavente!)
v28 May 13, 2004 : * \a, had problems with leading blanks; fixed!
v27 Mar 31, 2004 : * \T= was having problems with == and !=
v28 May 13, 2004 * \a, had problems with leading blanks; fixed!
v27 Mar 31, 2004 * \T= was having problems with == and !=
* Fixed more problems with \adec
v26 Dec 09, 2003 : * \ascom now also ignores lines without comments
v26 Dec 09, 2003 * \ascom now also ignores lines without comments
* \tt \& now not matched
* \a< handles both << and >>
v25 Nov 14, 2003 : * included \anum (aligns numbers with periods and
v25 Nov 14, 2003 * included \anum (aligns numbers with periods and
commas). \anum also supported with ctrl-v mode.
* \ts, \Ts, : (aligns on commas, then swaps leading
spaces with commas)
* \adec ignores preprocessor lines and lines with
with comments-only
v23 Sep 10, 2003 : * Bugfix for \afnc - no longer overwrites marks y,z
v23 Sep 10, 2003 * Bugfix for \afnc - no longer overwrites marks y,z
* fixed bug in \tsp, \tab, \Tsp, and \Tab - lines
containing backslashes were having their
backslashes removed. Included Leif Wickland's
patch for \tsq.
* \adef now ignores lines holding comments only
v18 Aug 22, 2003 : \a< lines up C++'s << operators
v18 Aug 22, 2003 * \a< lines up C++'s << operators
saves/restores gdefault option (sets to nogd)
all b:..varname.. are now b:alignmaps_..varname..
v17 Nov 04, 2002 : \afnc now handles // comments correctly and
v17 Nov 04, 2002 * \afnc now handles // comments correctly and
commas within comments
v16 Sep 10, 2002 : changed : to :silent! for \adec
v15 Aug 27, 2002 : removed some <c-v>s
v14 Aug 20, 2002 : \WS, \WE mostly moved to functions, marks y and z
v16 Sep 10, 2002 * changed : to :silent! for \adec
v15 Aug 27, 2002 * removed some <c-v>s
v14 Aug 20, 2002 * \WS, \WE mostly moved to functions, marks y and z
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
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

View File

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

View File

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

View File

@ -1,9 +1,9 @@
" AlignMapsPlugin: Alignment maps based upon <Align.vim> and <AlignMaps.vim>
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
" Date: Jun 18, 2012
" Maintainer: Dr. Charles E. Campbell. <NdrOchipS@PcampbellAfamily.Mbiz>
" Date: Jan 07, 2013
"
" 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,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
@ -37,7 +37,7 @@ if &cp || exists("g:loaded_AlignMapsPlugin")
finish
endif
let s:keepcpo = &cpo
let g:loaded_AlignMapsPlugin = "v42"
let g:loaded_AlignMapsPlugin = "v43"
set cpo&vim
" =====================================================================
@ -53,8 +53,8 @@ com! AlignMapsClean :call AlignMaps#AlignMapsClean()
if !hasmapto('<Plug>WrapperStart')
map <unique> <SID>WS <Plug>AlignMapsWrapperStart
endif
nmap <silent> <script> <Plug>AlignMapsWrapperStart :set lz<CR>:call AlignMaps#WrapperStart(0)<CR>
vmap <silent> <script> <Plug>AlignMapsWrapperStart :<c-u>set lz<CR>:call AlignMaps#WrapperStart(1)<CR>
nnoremap <silent> <script> <Plug>AlignMapsWrapperStart :set lz<CR>:call AlignMaps#WrapperStart(0)<CR>
vnoremap <silent> <script> <Plug>AlignMapsWrapperStart :<c-u>set lz<CR>:call AlignMaps#WrapperStart(1)<CR>
" ---------------------------------------------------------------------
" 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')
nmap <unique> <SID>WE <Plug>AlignMapsWrapperEnd
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
if !hasmapto('<Plug>AM_a?') |map <unique> <Leader>a? <Plug>AM_a?|endif
if !hasmapto('<Plug>AM_a,') |map <unique> <Leader>a, <Plug>AM_a,|endif
if !hasmapto('<Plug>AM_a<') |map <unique> <Leader>a< <Plug>AM_a<|endif
if !hasmapto('<Plug>AM_a=') |map <unique> <Leader>a= <Plug>AM_a=|endif
if !hasmapto('<Plug>AM_a(') |map <unique> <Leader>a( <Plug>AM_a(|endif
if !hasmapto('<Plug>AM_abox') |map <unique> <Leader>abox <Plug>AM_abox|endif
if !hasmapto('<Plug>AM_acom') |map <unique> <Leader>acom <Plug>AM_acom|endif
if !hasmapto('<Plug>AM_adcom')|map <unique> <Leader>adcom <Plug>AM_adcom|endif
if !hasmapto('<Plug>AM_aocom')|map <unique> <Leader>aocom <Plug>AM_aocom|endif
if !hasmapto('<Plug>AM_ascom')|map <unique> <Leader>ascom <Plug>AM_ascom|endif
if !hasmapto('<Plug>AM_adec') |map <unique> <Leader>adec <Plug>AM_adec|endif
if !hasmapto('<Plug>AM_adef') |map <unique> <Leader>adef <Plug>AM_adef|endif
if !hasmapto('<Plug>AM_afnc') |map <unique> <Leader>afnc <Plug>AM_afnc|endif
if !hasmapto('<Plug>AM_afnc') |map <unique> <Leader>afnc <Plug>AM_afnc|endif
if !hasmapto('<Plug>AM_a?') |call AlignMaps#MakeMap("a?")|endif
if !hasmapto('<Plug>AM_a,') |call AlignMaps#MakeMap("a,")|endif
if !hasmapto('<Plug>AM_a<') |call AlignMaps#MakeMap("a<")|endif
if !hasmapto('<Plug>AM_a=') |call AlignMaps#MakeMap("a=")|endif
if !hasmapto('<Plug>AM_a(') |call AlignMaps#MakeMap("a(")|endif
if !hasmapto('<Plug>AM_abox') |call AlignMaps#MakeMap("abox")|endif
if !hasmapto('<Plug>AM_acom') |call AlignMaps#MakeMap("acom")|endif
if !hasmapto('<Plug>AM_adcom')|call AlignMaps#MakeMap("adcom")|endif
if !hasmapto('<Plug>AM_aocom')|call AlignMaps#MakeMap("aocom")|endif
if !hasmapto('<Plug>AM_ascom')|call AlignMaps#MakeMap("ascom")|endif
if !hasmapto('<Plug>AM_adec') |call AlignMaps#MakeMap("adec")|endif
if !hasmapto('<Plug>AM_adef') |call AlignMaps#MakeMap("adef")|endif
if !hasmapto('<Plug>AM_afnc') |call AlignMaps#MakeMap("afnc")|endif
if !hasmapto('<Plug>AM_afnc') |call AlignMaps#MakeMap("afnc")|endif
" ---------------------------------------------------------------------
" Number alignment maps: {{{2
if !hasmapto('<Plug>AM_aunum')|map <unique> <Leader>aunum <Plug>AM_aunum|endif
if !hasmapto('<Plug>AM_aenum')|map <unique> <Leader>aenum <Plug>AM_aenum|endif
if !hasmapto('<Plug>AM_aunum')|call AlignMaps#MakeMap("aunum")|endif
if !hasmapto('<Plug>AM_aenum')|call AlignMaps#MakeMap("aenum")|endif
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
if !hasmapto('<Plug>AM_anum')|map <unique> <Leader>anum <Plug>AM_aunum|endif
if !hasmapto('<Plug>AM_anum')|call AlignMaps#MakeMap("anum")|endif
endif
" ---------------------------------------------------------------------
" Plug maps: (the real thing) {{{2
map <silent> <script> <Plug>AM_a? <SID>WS:AlignCtrl mIp1P1lC ? : : : : <CR>:'a,.Align<CR>:'a,'z-1s/\(\s\+\)? /?\1/e<CR><SID>WE
map <silent> <script> <Plug>AM_a, <SID>WS:'y,'zs/\(\S\)\s\+/\1 /ge<CR>'yjma'zk:call AlignMaps#CharJoiner(",")<cr>:silent 'y,'zg/,/call AlignMaps#FixMultiDec()<CR>'z:exe "norm \<Plug>AM_adec"<cr><SID>WE
map <silent> <script> <Plug>AM_a< <SID>WS:AlignCtrl mIp1P1=l << >><CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_a( <SID>WS:AlignCtrl mIp0P1=l<CR>:'a,.Align [(,]<CR>:sil 'y+1,'z-1s/\(\s\+\),/,\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_a= <SID>WS:AlignCtrl mIp1P1=l<CR>:AlignCtrl g :=<CR>:'a,'zAlign :\==<CR><SID>WE
map <silent> <script> <Plug>AM_abox <SID>WS:let g:alignmaps_iws=substitute(getline("'a"),'^\(\s*\).*$','\1','e')<CR>:'a,'z-1s/^\s\+//e<CR>:'a,'z-1s/^.*$/@&@/<CR>:AlignCtrl m=p01P0w @<CR>:'a,.Align<CR>:'a,'z-1s/@/ * /<CR>:'a,'z-1s/@$/*/<CR>'aYP:s/./*/g<CR>0r/'zkYp:s/./*/g<CR>0r A/<Esc>:exe "'a-1,'z-1s/^/".g:alignmaps_iws."/e"<CR><SID>WE
map <silent> <script> <Plug>AM_acom <SID>WS:'a,.s/\/[*/]\/\=/@&@/e<CR>:'a,.s/\*\//@&/e<CR>:'y,'zs/^\( *\) @/\1@/e<CR>'zk:call AlignMaps#StdAlign(2)<CR>:'y,'zs/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE
map <silent> <script> <Plug>AM_adcom <SID>WS:'a,.v/^\s*\/[/*]/s/\/[*/]\*\=/@&@/e<CR>:'a,.v/^\s*\/[/*]/s/\*\//@&/e<CR>:'y,'zv/^\s*\/[/*]/s/^\( *\) @/\1@/e<CR>'zk:call AlignMaps#StdAlign(3)<cr>:'y,'zv/^\s*\/[/*]/s/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE
map <silent> <script> <Plug>AM_aocom <SID>WS:AlignPush<CR>:AlignCtrl g /[*/]<CR>:exe "norm \<Plug>AM_acom"<cr>:AlignPop<CR><SID>WE
map <silent> <script> <Plug>AM_ascom <SID>WS:'a,.s/\/[*/]/@&@/e<CR>:'a,.s/\*\//@&/e<CR>:silent! 'a,.g/^\s*@\/[*/]/s/@//ge<CR>:AlignCtrl v ^\s*\/[*/]<CR>:AlignCtrl g \/[*/]<CR>'zk:call AlignMaps#StdAlign(2)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE
map <silent> <script> <Plug>AM_adec <SID>WS:'a,'zs/\([^ \t/(]\)\([*&]\)/\1 \2/e<CR>:'y,'zv/^\//s/\([^ \t]\)\s\+/\1 /ge<CR>:'y,'zv/^\s*[*/]/s/\([^/][*&]\)\s\+/\1/ge<CR>:'y,'zv/^\s*[*/]/s/^\(\s*\%([a-zA-Z_][a-zA-Z_0-9<>:]*\s\+\%([a-zA-Z_*(&]\)\@=\)\+\)\([*(&]*\)\s*\([a-zA-Z0-9_()<>:]\+\)\s*\(\(\[.\{-}]\)*\)\s*\(=\)\=\s*\(.\{-}\)\=\s*;/\1@\2#@\3\4@\6@\7;@/e<CR>:'y,'zv/^\s*[*/]/s/\*\/\s*$/@*\//e<CR>:'y,'zv/^\s*[*/]/s/^\s\+\*/@@@@@* /e<CR>:'y,'zv/^\s*[*/]/s/^@@@@@\*\(.*[^*/]\)$/&@*/e<CR>'yjma'zk:AlignCtrl v ^\s*[*/#]<CR>:call AlignMaps#StdAlign(1)<cr>:'y,'zv/^\s*[*/]/s/@ //ge<CR>:'y,'zv/^\s*[*/]/s/\(\s*\);/;\1/e<CR>:'y,'zv/^#/s/# //e<CR>:'y,'zv/^\s\+[*/#]/s/\([^/*]\)\(\*\+\)\( \+\)/\1\3\2/e<CR>:'y,'zv/^\s\+[*/#]/s/\((\+\)\( \+\)\*/\2\1*/e<CR>:'y,'zv/^\s\+[*/#]/s/^\(\s\+\) \*/\1*/e<CR>:'y,'zv/^\s\+[*/#]/s/[ \t@]*$//e<CR>:'y,'zs/^[*]/ */e<CR><SID>WE
map <silent> <script> <Plug>AM_adef <SID>WS:AlignPush<CR>:AlignCtrl v ^\s*\(\/\*\<bar>\/\/\)<CR>:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/^\(\s*\)#\(\s\)*define\s*\(\I[a-zA-Z_0-9(),]*\)\s*\(.\{-}\)\($\<Bar>\/\*\)/#\1\2define @\3@\4@\5/e<CR>:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/\($\<Bar>\*\/\)/@&/e<CR>'zk:call AlignMaps#StdAlign(1)<cr>'yjma'zk:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/ @//g<CR><SID>WE
map <silent> <script> <Plug>AM_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
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_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:'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:AlignCtrl mIp1P1=l << >><CR>:'a,.Align<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
nnoremap <silent> <script> <Plug>AM_a= <SID>WS:AlignCtrl mIp1P1=l<CR>:AlignCtrl g :=<CR>:'a,'zAlign :\==<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
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
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
nnoremap <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_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_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_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_afnc :<c-u>set lz<CR>:silent call AlignMaps#Afnc()<CR>:set nolz<CR>
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
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
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
if !hasmapto('<Plug>AM_T|')|map <unique> <Leader>T| <Plug>AM_T||endif
if !hasmapto('<Plug>AM_T#') |map <unique> <Leader>T# <Plug>AM_T#|endif
if !hasmapto('<Plug>AM_T,') |map <unique> <Leader>T, <Plug>AM_T,o|endif
if !hasmapto('<Plug>AM_Ts,') |map <unique> <Leader>Ts, <Plug>AM_Ts,|endif
if !hasmapto('<Plug>AM_T:') |map <unique> <Leader>T: <Plug>AM_T:|endif
if !hasmapto('<Plug>AM_T;') |map <unique> <Leader>T; <Plug>AM_T;|endif
if !hasmapto('<Plug>AM_T<') |map <unique> <Leader>T< <Plug>AM_T<|endif
if !hasmapto('<Plug>AM_T=') |map <unique> <Leader>T= <Plug>AM_T=|endif
if !hasmapto('<Plug>AM_T?') |map <unique> <Leader>T? <Plug>AM_T?|endif
if !hasmapto('<Plug>AM_T@') |map <unique> <Leader>T@ <Plug>AM_T@|endif
if !hasmapto('<Plug>AM_TW@') |map <unique> <Leader>TW@ <Plug>AM_TW@|endif
if !hasmapto('<Plug>AM_Tab') |map <unique> <Leader>Tab <Plug>AM_Tab|endif
if !hasmapto('<Plug>AM_Tsp') |map <unique> <Leader>Tsp <Plug>AM_Tsp|endif
if !hasmapto('<Plug>AM_T~') |map <unique> <Leader>T~ <Plug>AM_T~|endif
if !hasmapto('<Plug>AM_T|')|call AlignMaps#MakeMap("T|")|endif
if !hasmapto('<Plug>AM_T#') |call AlignMaps#MakeMap("T#")|endif
if !hasmapto('<Plug>AM_T,') |call AlignMaps#MakeMap("T,")|endif
if !hasmapto('<Plug>AM_Ts,') |call AlignMaps#MakeMap("Ts,")|endif
if !hasmapto('<Plug>AM_T:') |call AlignMaps#MakeMap("T:")|endif
if !hasmapto('<Plug>AM_T;') |call AlignMaps#MakeMap("T;")|endif
if !hasmapto('<Plug>AM_T<') |call AlignMaps#MakeMap("T<")|endif
if !hasmapto('<Plug>AM_T=') |call AlignMaps#MakeMap("T=")|endif
if !hasmapto('<Plug>AM_T?') |call AlignMaps#MakeMap("T?")|endif
if !hasmapto('<Plug>AM_T@') |call AlignMaps#MakeMap("T@")|endif
if !hasmapto('<Plug>AM_TW@') |call AlignMaps#MakeMap("TW@")|endif
if !hasmapto('<Plug>AM_Tab') |call AlignMaps#MakeMap("Tab")|endif
if !hasmapto('<Plug>AM_Tsp') |call AlignMaps#MakeMap("Tsp")|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
map <silent> <script> <Plug>AM_T# <SID>WS:AlignCtrl mIp0P0=r #<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T, <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_Ts, <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<CR>:'a,.s/\(\s*\),/,\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_T: <SID>WS:AlignCtrl mIp1P1=r :<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T; <SID>WS:AlignCtrl mIp0P0=r ;<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T< <SID>WS:AlignCtrl mIp0P0=r <<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T= <SID>WS:'a,'z-1s/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'z-1s@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'z-1s/; */;@/e<CR>:'a,'z-1s/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'z-1s/!=/\x="!\<Char-0x0f>"/ge<CR>:AlignCtrl mIp1P1=r = @<CR>:AlignCtrl g =<CR>:'a,'z-1Align<CR>:'a,'z-1s/; *@/;/e<CR>:'a,'z-1s/; *$/;/e<CR>:'a,'z-1s@\([*/+\-%<Bar>&\~^]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1s/\( \+\);/;\1/ge<CR>:'a,'z-1s/\xff/=/ge<CR><SID>WE:exe "norm <Plug>acom"
map <silent> <script> <Plug>AM_T? <SID>WS:AlignCtrl mIp0P0=r ?<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_T@ <SID>WS:AlignCtrl mIp0P0=r @<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_TW@ <SID>WS:AlignCtrl mWp0P0=r @<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_Tab <SID>WS:'a,.s/^\(\t*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\t','@','g'),'\')/<CR>:AlignCtrl mI=r @<CR>:'a,.Align<CR>:'y+1,'z-1s/@/ /g<CR><SID>WE
map <silent> <script> <Plug>AM_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 <Bar><CR>:'a,.Align<CR><SID>WE
nnoremap <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 mIp0P1=r ,<CR>:'a,.Align<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
nnoremap <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 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
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"
nnoremap <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><SID>WE
nnoremap <silent> <script> <Plug>AM_TW@ <SID>WS:AlignCtrl mWp0P0=r @<CR>:'a,.Align<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
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
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
if !hasmapto('<Plug>AM_t|') |map <unique> <Leader>t| <Plug>AM_t||endif
if !hasmapto('<Plug>AM_t#') |map <unique> <Leader>t# <Plug>AM_t#|endif
if !hasmapto('<Plug>AM_t,') |map <unique> <Leader>t, <Plug>AM_t,|endif
if !hasmapto('<Plug>AM_t:') |map <unique> <Leader>t: <Plug>AM_t:|endif
if !hasmapto('<Plug>AM_t;') |map <unique> <Leader>t; <Plug>AM_t;|endif
if !hasmapto('<Plug>AM_t<') |map <unique> <Leader>t< <Plug>AM_t<|endif
if !hasmapto('<Plug>AM_t=') |map <unique> <Leader>t= <Plug>AM_t=|endif
if !hasmapto('<Plug>AM_ts,') |map <unique> <Leader>ts, <Plug>AM_ts,|endif
if !hasmapto('<Plug>AM_ts:') |map <unique> <Leader>ts: <Plug>AM_ts:|endif
if !hasmapto('<Plug>AM_ts;') |map <unique> <Leader>ts; <Plug>AM_ts;|endif
if !hasmapto('<Plug>AM_ts<') |map <unique> <Leader>ts< <Plug>AM_ts<|endif
if !hasmapto('<Plug>AM_ts=') |map <unique> <Leader>ts= <Plug>AM_ts=|endif
if !hasmapto('<Plug>AM_w=') |map <unique> <Leader>w= <Plug>AM_w=|endif
if !hasmapto('<Plug>AM_t?') |map <unique> <Leader>t? <Plug>AM_t?|endif
if !hasmapto('<Plug>AM_t~') |map <unique> <Leader>t~ <Plug>AM_t~|endif
if !hasmapto('<Plug>AM_t@') |map <unique> <Leader>t@ <Plug>AM_t@|endif
if !hasmapto('<Plug>AM_tW@') |map <unique> <Leader>tW@ <Plug>AM_tW@|endif
if !hasmapto('<Plug>AM_m=') |map <unique> <Leader>m= <Plug>AM_m=|endif
if !hasmapto('<Plug>AM_tab') |map <unique> <Leader>tab <Plug>AM_tab|endif
if !hasmapto('<Plug>AM_tml') |map <unique> <Leader>tml <Plug>AM_tml|endif
if !hasmapto('<Plug>AM_tsp') |map <unique> <Leader>tsp <Plug>AM_tsp|endif
if !hasmapto('<Plug>AM_tsq') |map <unique> <Leader>tsq <Plug>AM_tsq|endif
if !hasmapto('<Plug>AM_tt') |map <unique> <Leader>tt <Plug>AM_tt|endif
if !hasmapto('<Plug>AM_t|','n') |call AlignMaps#MakeMap("t|")|endif
if !hasmapto('<Plug>AM_t#','n') |call AlignMaps#MakeMap("t#")|endif
if !hasmapto('<Plug>AM_t,','n') |call AlignMaps#MakeMap("t,")|endif
if !hasmapto('<Plug>AM_t:','n') |call AlignMaps#MakeMap("t:")|endif
if !hasmapto('<Plug>AM_t;','n') |call AlignMaps#MakeMap("t;")|endif
if !hasmapto('<Plug>AM_t<','n') |call AlignMaps#MakeMap("t<")|endif
if !hasmapto('<Plug>AM_t=','n') |call AlignMaps#MakeMap("t=")|endif
if !hasmapto('<Plug>AM_ts,','n') |call AlignMaps#MakeMap("ts,")|endif
if !hasmapto('<Plug>AM_ts:','n') |call AlignMaps#MakeMap("ts:")|endif
if !hasmapto('<Plug>AM_ts;','n') |call AlignMaps#MakeMap("ts;")|endif
if !hasmapto('<Plug>AM_ts<','n') |call AlignMaps#MakeMap("ts<")|endif
if !hasmapto('<Plug>AM_ts=','n') |call AlignMaps#MakeMap("ts=")|endif
if !hasmapto('<Plug>AM_w=','n') |call AlignMaps#MakeMap("w=")|endif
if !hasmapto('<Plug>AM_t?','n') |call AlignMaps#MakeMap("t?")|endif
if !hasmapto('<Plug>AM_t~','n') |call AlignMaps#MakeMap("t~")|endif
if !hasmapto('<Plug>AM_t@','n') |call AlignMaps#MakeMap("t@")|endif
if !hasmapto('<Plug>AM_tW@','n') |call AlignMaps#MakeMap("tW@")|endif
if !hasmapto('<Plug>AM_m=','n') |call AlignMaps#MakeMap("m=")|endif
if !hasmapto('<Plug>AM_tab','n') |call AlignMaps#MakeMap("tab")|endif
if !hasmapto('<Plug>AM_tml','n') |call AlignMaps#MakeMap("tml")|endif
if !hasmapto('<Plug>AM_tsp','n') |call AlignMaps#MakeMap("tsp")|endif
if !hasmapto('<Plug>AM_tsq','n') |call AlignMaps#MakeMap("tsq")|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
map <silent> <script> <Plug>AM_t# <SID>WS:AlignCtrl mIp0P0=l #<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t, <SID>WS:AlignCtrl mIp0P1=l ,<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t: <SID>WS:AlignCtrl mIp1P1=l :<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t; <SID>WS:AlignCtrl mIp0P1=l ;<CR>:'a,.Align<CR>:sil 'y,'zs/\( *\);/;\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_t< <SID>WS:AlignCtrl mIp0P0=l <<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t= <SID>WS:call AlignMaps#Equals()<CR><SID>WE
map <silent> <script> <Plug>AM_ts, <SID>WS:AlignCtrl mIp0P1=l #\zs<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_ts, <SID>WS:AlignCtrl mIp0P1=l ,\zs<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_ts: <SID>WS:AlignCtrl mIp1P1=l :\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
map <silent> <script> <Plug>AM_ts< <SID>WS:AlignCtrl mIp1P1=l <\zs<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_ts= <SID>WS:AlignCtrl mIp1P1=l =\zs<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_w= <SID>WS:'a,'zg/=/s/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'zg/=/s@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'zg/=/s/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'zg/=/s/!=/\="!\<Char-0x0f>"/ge<CR>'zk:AlignCtrl mWp1P1=l =<CR>:AlignCtrl g =<CR>:'a,'z-1g/=/Align<CR>:'a,'z-1g/=/s@\([*/+\-%<Bar>&\~^!=]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1g/=/s/\( \+\);/;\1/ge<CR>:'a,'z-1v/^\s*\/[*/]/s/\/[*/]/@&@/e<CR>:'a,'z-1v/^\s*\/[*/]/s/\*\//@&/e<CR>'zk:call AlignMaps#StdAlign(1)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'a,'z-1g/=/s/\xff/=/ge<CR>:'y,'zg/=/s/ @//eg<CR><SID>WE
map <silent> <script> <Plug>AM_t? <SID>WS:AlignCtrl mIp0P0=l ?<CR>:'a,.Align<CR>:.,'zs/ \( *\);/;\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_t~ <SID>WS:AlignCtrl mIp0P0=l ~<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_t@ <SID>WS:call AlignMaps#StdAlign(1)<cr><SID>WE
map <silent> <script> <Plug>AM_tW@ <SID>WS:call AlignMaps#StdAlign(2)<cr><SID>WE
map <silent> <script> <Plug>AM_m= <SID>WS:'a,'zs/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'zs@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'zs/!=/\="!\<Char-0x0f>"/ge<CR>'zk:AlignCtrl mIp1P1=l =<CR>:AlignCtrl g =<CR>:'a,'z-1Align<CR>:'a,'z-1s@\([*/+\-%<Bar>&\~^!=]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1s/\( \+\);/;\1/ge<CR>:'a,'z-s/%\ze[^=]/ @%@ /e<CR>'zk:call AlignMaps#StdAlign(1)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'a,'z-1s/\xff/=/ge<CR>:'y,'zs/ @//eg<CR><SID>WE
map <silent> <script> <Plug>AM_tab <SID>WS:'a,.s/^\(\t*\)\(.*\)$/\=submatch(1).escape(substitute(submatch(2),'\t',"\<Char-0x0f>",'g'),'\')/<CR>:if &ts == 1<bar>exe "AlignCtrl mI=lp0P0 \<Char-0x0f>"<bar>else<bar>exe "AlignCtrl mI=l"<bar>endif<CR>:'a,.Align <Char-0x0f><CR>:exe "'y+1,'z-1s/\<Char-0x0f>/".((&ts == 1)? '\t' : ' ')."/g"<CR><SID>WE
map <silent> <script> <Plug>AM_tml <SID>WS:AlignCtrl mWp1P0=l \\\@<!\\\s*$<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_tsp <SID>WS:keepj 'a,.s/^\(\s*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\s\+','@','g'),'\')/<CR>:AlignCtrl mI=lp0P0 @<CR>:'a,.Align<CR>:keepj 'y+1,'z-1s/@/ /g<CR><SID>WE
map <silent> <script> <Plug>AM_tsq <SID>WS:'a,.AlignReplaceQuotedSpaces<CR>:keepj 'a,.s/^\(\s*\)\(.*\)/\=submatch(1).substitute(submatch(2),'\s\+','@','g')/<CR>:AlignCtrl mIp0P0=l @<CR>:'a,.Align<CR>:keepj 'y+1,'z-1s/[%@]/ /g<CR><SID>WE
map <silent> <script> <Plug>AM_tt <SID>WS:AlignCtrl mIp1P1=l \\\@<!& \\\\<CR>:'a,.Align<CR><SID>WE
" <Plug> normal mode mappings
nnoremap <silent> <script> <Plug>AM_t| <SID>WS:AlignCtrl mIp0P0=l <Bar><CR>:'a,.Align<CR><SID>WE
nnoremap <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><SID>WE
nnoremap <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>:sil 'y,'zs/\( *\);/;\1/ge<CR><SID>WE
nnoremap <silent> <script> <Plug>AM_t< <SID>WS:AlignCtrl mIp0P0=l <<CR>:'a,.Align<CR><SID>WE
nnoremap <silent> <script> <Plug>AM_t= <SID>WS:call AlignMaps#Equals()<CR><SID>WE
nnoremap <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
nnoremap <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
nnoremap <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
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
nnoremap <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_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:call AlignMaps#StdAlign(1)<cr><SID>WE
nnoremap <silent> <script> <Plug>AM_tW@ <SID>WS:call AlignMaps#StdAlign(2)<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
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
nnoremap <silent> <script> <Plug>AM_tml <SID>WS:AlignCtrl mWp1P0=l \\\@<!\\\s*$<CR>:'a,.Align<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
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

View File

@ -1,9 +1,9 @@
" 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
" GetLatestVimScripts: 294 1 :AutoInstall: Align.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,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
@ -22,7 +22,7 @@
if &cp || exists("g:loaded_AlignPlugin")
finish
endif
let g:loaded_AlignPlugin = "v36"
let g:loaded_AlignPlugin = "v37"
let s:keepcpo = &cpo
set cpo&vim

View File

@ -1,9 +1,9 @@
" cecutil.vim : save/restore window position
" save/restore mark position
" save/restore selected user maps
" Author: Charles E. Campbell, Jr.
" Version: 17
" Date: Sep 04, 2007
" Author: Charles E. Campbell
" Version: 18h ASTRO-ONLY
" Date: Oct 16, 2012
"
" Saving Restoring Destroying Marks: {{{1
" call SaveMark(markname) let savemark= SaveMark(markname)
@ -27,20 +27,23 @@
" You believe that God is one. You do well. The demons also {{{1
" believe, and shudder. But do you want to know, vain man, that
" faith apart from works is dead? (James 2:19,20 WEB)
"redraw!|call inputsave()|call input("Press <cr> to continue")|call inputrestore()
" ---------------------------------------------------------------------
" Load Once: {{{1
if &cp || exists("g:loaded_cecutil")
finish
endif
let g:loaded_cecutil = "v17"
let g:loaded_cecutil = "v18h"
let s:keepcpo = &cpo
set cpo&vim
"DechoVarOn
"DechoRemOn
" -----------------------
" =======================
" Public Interface: {{{1
" -----------------------
" =======================
" ---------------------------------------------------------------------
" Map Interface: {{{2
if !hasmapto('<Plug>SaveWinPosn')
map <unique> <Leader>swp <Plug>SaveWinPosn
@ -51,43 +54,56 @@ endif
nmap <silent> <Plug>SaveWinPosn :call SaveWinPosn()<CR>
nmap <silent> <Plug>RestoreWinPosn :call RestoreWinPosn()<CR>
" ---------------------------------------------------------------------
" Command Interface: {{{2
com! -bar -nargs=0 SWP call SaveWinPosn()
com! -bar -nargs=0 RWP call RestoreWinPosn()
com! -bar -nargs=? RWP call RestoreWinPosn(<args>)
com! -bar -nargs=1 SM call SaveMark(<q-args>)
com! -bar -nargs=1 RM call RestoreMark(<q-args>)
com! -bar -nargs=1 DM call DestroyMark(<q-args>)
com! -bar -nargs=1 WLR call s:WinLineRestore(<q-args>)
if v:version < 630
let s:modifier= "sil "
let s:modifier= "sil! "
else
let s:modifier= "sil keepj "
let s:modifier= "sil! keepj "
endif
" ===============
" Functions: {{{1
" ===============
" ---------------------------------------------------------------------
" SaveWinPosn: {{{1
" SaveWinPosn: {{{2
" let winposn= SaveWinPosn() will save window position in winposn variable
" call SaveWinPosn() will save window position in b:cecutil_winposn{b:cecutil_iwinposn}
" let winposn= SaveWinPosn(0) will *only* save window position in winposn variable (no stacking done)
fun! SaveWinPosn(...)
" call Dfunc("SaveWinPosn() a:0=".a:0)
if line(".") == 1 && getline(1) == ""
" call Dfunc("SaveWinPosn : empty buffer")
" echomsg "Decho: SaveWinPosn() a:0=".a:0
if line("$") == 1 && getline(1) == ""
" echomsg "Decho: SaveWinPosn : empty buffer"
return ""
endif
let so_keep = &so
let so_keep = &l:so
let siso_keep = &siso
let ss_keep = &ss
set so=0 siso=0 ss=0
let ss_keep = &l:ss
setlocal so=0 siso=0 ss=0
let swline = line(".")
let swcol = col(".")
let swwline = winline() - 1
let swwcol = virtcol(".") - wincol()
let savedposn = "call GoWinbufnr(".winbufnr(0).")|silent ".swline
let swline = line(".") " save-window line in file
let swcol = col(".") " save-window column in file
if swcol >= col("$")
let swcol= swcol + virtcol(".") - virtcol("$") " adjust for virtual edit (cursor past end-of-line)
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>"
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
if swwcol > 0
let savedposn= savedposn.":".s:modifier."norm! 0".swwcol."zl\<cr>"
@ -103,44 +119,46 @@ fun! SaveWinPosn(...)
else
let b:cecutil_iwinposn= b:cecutil_iwinposn + 1
endif
" call Decho("saving posn to SWP stack")
" echomsg "Decho: saving posn to SWP stack"
let b:cecutil_winposn{b:cecutil_iwinposn}= savedposn
endif
let &so = so_keep
let &l:so = so_keep
let &siso = siso_keep
let &ss = ss_keep
let &l:ss = ss_keep
" if exists("b:cecutil_iwinposn") " Decho
" call Decho("b:cecutil_winpos{".b:cecutil_iwinposn."}[".b:cecutil_winposn{b:cecutil_iwinposn}."]")
" echomsg "Decho: b:cecutil_winpos{".b:cecutil_iwinposn."}[".b:cecutil_winposn{b:cecutil_iwinposn}."]"
" else " Decho
" call Decho("b:cecutil_iwinposn doesn't exist")
" echomsg "Decho: b:cecutil_iwinposn doesn't exist"
" endif " Decho
" call Dret("SaveWinPosn [".savedposn."]")
" echomsg "Decho: SaveWinPosn [".savedposn."]"
return savedposn
endfun
" ---------------------------------------------------------------------
" RestoreWinPosn: {{{1
" RestoreWinPosn: {{{2
" call RestoreWinPosn()
" call RestoreWinPosn(winposn)
fun! RestoreWinPosn(...)
" call Dfunc("RestoreWinPosn() a:0=".a:0)
" call Decho("getline(1)<".getline(1).">")
" call Decho("line(.)=".line("."))
if line(".") == 1 && getline(1) == ""
" call Dfunc("RestoreWinPosn : empty buffer")
" echomsg "Decho: RestoreWinPosn() a:0=".a:0
" echomsg "Decho: getline(1)<".getline(1).">"
" echomsg "Decho: line(.)=".line(".")
if line("$") == 1 && getline(1) == ""
" echomsg "Decho: RestoreWinPosn : empty buffer"
return ""
endif
let so_keep = &so
let siso_keep = &siso
let ss_keep = &ss
set so=0 siso=0 ss=0
let so_keep = &l:so
let siso_keep = &l:siso
let ss_keep = &l:ss
setlocal so=0 siso=0 ss=0
if a:0 == 0 || a:1 == ""
" use saved window position in b:cecutil_winposn{b:cecutil_iwinposn} if it exists
if exists("b:cecutil_iwinposn") && exists("b:cecutil_winposn{b:cecutil_iwinposn}")
" call Decho("using stack b:cecutil_winposn{".b:cecutil_iwinposn."}<".b:cecutil_winposn{b:cecutil_iwinposn}.">")
" echomsg "Decho: using stack b:cecutil_winposn{".b:cecutil_iwinposn."}<".b:cecutil_winposn{b:cecutil_iwinposn}.">"
try
exe "silent! ".b:cecutil_winposn{b:cecutil_iwinposn}
exe s:modifier.b:cecutil_winposn{b:cecutil_iwinposn}
catch /^Vim\%((\a\+)\)\=:E749/
" ignore empty buffer error messages
endtry
@ -164,9 +182,9 @@ fun! RestoreWinPosn(...)
endif
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
exe "silent ".a:1
exe a:1
" remove a:1 pattern from b:cecutil_winposn{b:cecutil_iwinposn} stack
if exists("b:cecutil_iwinposn")
let jwinposn= b:cecutil_iwinposn
@ -184,23 +202,42 @@ fun! RestoreWinPosn(...)
endif
endif
" seems to be something odd: vertical motions after RWP
" cause jump to first column. Following fixes that
if wincol() > 1
silent norm! hl
" Seems to be something odd: vertical motions after RWP
" cause jump to first column. The following fixes that.
" Note: was using wincol()>1, but with signs, a cursor
" at column 1 yields wincol()==3. Beeping ensued.
let vekeep= &ve
set ve=all
if virtcol('.') > 1
exe s:modifier."norm! hl"
elseif virtcol(".") < virtcol("$")
silent norm! lh
exe s:modifier."norm! lh"
endif
let &ve= vekeep
let &so = so_keep
let &siso = siso_keep
let &ss = ss_keep
let &l:so = so_keep
let &l:siso = siso_keep
let &l:ss = ss_keep
" call Dret("RestoreWinPosn")
" echomsg "Decho: RestoreWinPosn"
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,
" then will try from topleft to bottom right
fun! GoWinbufnr(bufnum)
@ -219,7 +256,7 @@ fun! GoWinbufnr(bufnum)
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")
" Also sets up a global variable, g:savemark_{markname}
fun! SaveMark(markname)
@ -252,7 +289,7 @@ fun! SaveMark(markname)
endfun
" ---------------------------------------------------------------------
" RestoreMark: {{{1
" RestoreMark: {{{2
" call RestoreMark("a") -or- call RestoreMark(savemark)
fun! RestoreMark(markname)
" call Dfunc("RestoreMark(markname<".a:markname.">)")
@ -294,7 +331,7 @@ fun! RestoreMark(markname)
endfun
" ---------------------------------------------------------------------
" DestroyMark: {{{1
" DestroyMark: {{{2
" call DestroyMark("a") -- destroys mark
fun! DestroyMark(markname)
" call Dfunc("DestroyMark(markname<".a:markname.">)")
@ -329,7 +366,7 @@ fun! DestroyMark(markname)
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
" with splits at all whitespace (only!), plus a leading length-of-list.
" The resulting list: qarglist[0] corresponds to a:0
@ -344,7 +381,7 @@ fun! QArgSplitter(qarg)
endfun
" ---------------------------------------------------------------------
" ListWinPosn:
" ListWinPosn: {{{2
"fun! ListWinPosn() " Decho
" if !exists("b:cecutil_iwinposn") || b:cecutil_iwinposn == 0 " Decho
" call Decho("nothing on SWP stack") " Decho
@ -363,14 +400,19 @@ endfun
"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
" call RestoreUserMaps()
"
" mapmode - see :help maparg for its list
" mapmode - see :help maparg for details (n v o i c l "")
" ex. "n" = Normal
" If the first letter is u, then unmapping will be done
" The letters "b" and "u" are optional prefixes;
" The "u" means that the map will also be unmapped
" The "b" means that the map has a <buffer> qualifier
" ex. "un" = Normal + unmapping
" ex. "bn" = Normal + <buffer>
" ex. "bun" = Normal + <buffer> + unmapping
" ex. "ubn" = Normal + <buffer> + unmapping
" maplead - see mapchx
" mapchx - "<something>" handled as a single map item.
" ex. "<left>"
@ -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")
" if 0, save only
if a:mapmode =~ '^u'
let dounmap= 1
let mapmode= strpart(a:mapmode,1)
else
let dounmap= 0
let mapmode= a:mapmode
let mapmode = a:mapmode
let dounmap = 0
let dobuffer = ""
while mapmode =~ '^[bu]'
if mapmode =~ '^u'
let dounmap = 1
let mapmode = strpart(a:mapmode,1)
elseif mapmode =~ '^b'
let dobuffer = "<buffer> "
let mapmode = strpart(a:mapmode,1)
endif
endwhile
" call Decho("dounmap=".dounmap." dobuffer<".dobuffer.">")
" save single map :...something...
if strpart(a:mapchx,0,1) == ':'
" call Decho("save single map :...something...")
let amap= strpart(a:mapchx,1)
if amap == "|" || amap == "\<c-v>"
let amap= "\<c-v>".amap
endif
let amap = a:maplead.amap
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:silent! ".mapmode."unmap ".amap
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:sil! ".mapmode."unmap ".dobuffer.amap
if maparg(amap,mapmode) != ""
let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:".mapmode."map ".amap." ".maprhs
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:".mapmode."map ".dobuffer.amap." ".maprhs
endif
if dounmap
exe "silent! ".mapmode."unmap ".amap
exe "sil! ".mapmode."unmap ".dobuffer.amap
endif
" save single map <something>
elseif strpart(a:mapchx,0,1) == '<'
" call Decho("save single map <something>")
let amap = a:mapchx
if amap == "|" || amap == "\<c-v>"
let amap= "\<c-v>".amap
" call Decho("amap[[".amap."]]")
endif
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".amap
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|sil! ".mapmode."unmap ".dobuffer.amap
if maparg(a:mapchx,mapmode) != ""
let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".amap." ".maprhs
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".dobuffer.amap." ".maprhs
endif
if dounmap
exe "silent! ".mapmode."unmap ".amap
exe "sil! ".mapmode."unmap ".dobuffer.amap
endif
" save multiple maps
else
" call Decho("save multiple maps")
let i= 1
while i <= strlen(a:mapchx)
let amap= a:maplead.strpart(a:mapchx,i-1,1)
if amap == "|" || amap == "\<c-v>"
let amap= "\<c-v>".amap
endif
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".amap
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|sil! ".mapmode."unmap ".dobuffer.amap
if maparg(amap,mapmode) != ""
let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".amap." ".maprhs
let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".dobuffer.amap." ".maprhs
endif
if dounmap
exe "silent! ".mapmode."unmap ".amap
exe "sil! ".mapmode."unmap ".dobuffer.amap
endif
let i= i + 1
endwhile
@ -457,7 +509,7 @@ fun! SaveUserMaps(mapmode,maplead,mapchx,suffix)
endfun
" ---------------------------------------------------------------------
" RestoreUserMaps: {{{1
" RestoreUserMaps: {{{2
" Used to restore user maps saved by SaveUserMaps()
fun! RestoreUserMaps(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')
if s:restoremap_{a:suffix} != ""
" call Decho("exe ".s:restoremap_{a:suffix})
exe "silent! ".s:restoremap_{a:suffix}
exe "sil! ".s:restoremap_{a:suffix}
endif
unlet s:restoremap_{a:suffix}
endif
" call Dret("RestoreUserMaps")
endfun
" ---------------------------------------------------------------------
" ==============
" Restore: {{{1
" ==============
let &cpo= s:keepcpo
unlet s:keepcpo
" ---------------------------------------------------------------------
" ================
" Modelines: {{{1
" ================
" vim: ts=4 fdm=marker

View File

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