dotfiles

config files for my linux setup
git clone git://edryd.org/dotfiles
Log | Files | Refs | README

solarized.vim (51917B)


      1 " Name:     Solarized vim colorscheme
      2 " Author:   Ethan Schoonover <es@ethanschoonover.com>
      3 " URL:      http://ethanschoonover.com/solarized
      4 "           (see this url for latest release & screenshots)
      5 " License:  OSI approved MIT license (see end of this file)
      6 " Created:  In the middle of the night
      7 " Modified: 2011 May 05
      8 "
      9 " Usage "{{{
     10 "
     11 " ---------------------------------------------------------------------
     12 " ABOUT:
     13 " ---------------------------------------------------------------------
     14 " Solarized is a carefully designed selective contrast colorscheme with dual
     15 " light and dark modes that runs in both GUI, 256 and 16 color modes.
     16 "
     17 " See the homepage above for screenshots and details.
     18 "
     19 " ---------------------------------------------------------------------
     20 " OPTIONS:
     21 " ---------------------------------------------------------------------
     22 " See the "solarized.txt" help file included with this colorscheme (in the 
     23 " "doc" subdirectory) for information on options, usage, the Toggle Background 
     24 " function and more. If you have already installed Solarized, this is available 
     25 " from the Solarized menu and command line as ":help solarized"
     26 "
     27 " ---------------------------------------------------------------------
     28 " INSTALLATION:
     29 " ---------------------------------------------------------------------
     30 " Two options for installation: manual or pathogen
     31 "
     32 " MANUAL INSTALLATION OPTION:
     33 " ---------------------------------------------------------------------
     34 "
     35 " 1.  Download the solarized distribution (available on the homepage above)
     36 "     and unarchive the file.
     37 " 2.  Move `solarized.vim` to your `.vim/colors` directory.
     38 " 3.  Move each of the files in each subdirectories to the corresponding .vim
     39 "     subdirectory (e.g. autoload/togglebg.vim goes into your .vim/autoload 
     40 "     directory as .vim/autoload/togglebg.vim).
     41 "
     42 " RECOMMENDED PATHOGEN INSTALLATION OPTION:
     43 " ---------------------------------------------------------------------
     44 "
     45 " 1.  Download and install Tim Pope's Pathogen from:
     46 "     https://github.com/tpope/vim-pathogen
     47 "
     48 " 2.  Next, move or clone the `vim-colors-solarized` directory so that it is
     49 "     a subdirectory of the `.vim/bundle` directory.
     50 "
     51 "     a. **clone with git:**
     52 "
     53 "       $ cd ~/.vim/bundle
     54 "       $ git clone git://github.com/altercation/vim-colors-solarized.git
     55 "
     56 "     b. **or move manually into the pathogen bundle directory:**
     57 "         In the parent directory of vim-colors-solarized:
     58 "
     59 "         $ mv vim-colors-solarized ~/.vim/bundle/
     60 "
     61 " MODIFY VIMRC:
     62 "
     63 " After either Option 1 or Option 2 above, put the following two lines in your
     64 " .vimrc:
     65 "
     66 "     syntax enable
     67 "     set background=dark
     68 "     colorscheme solarized
     69 "
     70 " or, for the light background mode of Solarized:
     71 "
     72 "     syntax enable
     73 "     set background=light
     74 "     colorscheme solarized
     75 "
     76 " I like to have a different background in GUI and terminal modes, so I can use
     77 " the following if-then. However, I find vim's background autodetection to be
     78 " pretty good and, at least with MacVim, I can leave this background value
     79 " assignment out entirely and get the same results.
     80 "
     81 "     if has('gui_running')
     82 "       set background=light
     83 "     else
     84 "       set background=dark
     85 "     endif
     86 "
     87 " See the Solarized homepage at http://ethanschoonover.com/solarized for
     88 " screenshots which will help you select either the light or dark background.
     89 "
     90 " ---------------------------------------------------------------------
     91 " COLOR VALUES
     92 " ---------------------------------------------------------------------
     93 " Download palettes and files from: http://ethanschoonover.com/solarized
     94 "
     95 " L\*a\*b values are canonical (White D65, Reference D50), other values are
     96 " matched in sRGB space.
     97 "
     98 " SOLARIZED HEX     16/8 TERMCOL  XTERM/HEX   L*A*B      sRGB        HSB
     99 " --------- ------- ---- -------  ----------- ---------- ----------- -----------
    100 " base03    #002b36  8/4 brblack  234 #1c1c1c 15 -12 -12   0  43  54 193 100  21
    101 " base02    #073642  0/4 black    235 #262626 20 -12 -12   7  54  66 192  90  26
    102 " base01    #586e75 10/7 brgreen  240 #4e4e4e 45 -07 -07  88 110 117 194  25  46
    103 " base00    #657b83 11/7 bryellow 241 #585858 50 -07 -07 101 123 131 195  23  51
    104 " base0     #839496 12/6 brblue   244 #808080 60 -06 -03 131 148 150 186  13  59
    105 " base1     #93a1a1 14/4 brcyan   245 #8a8a8a 65 -05 -02 147 161 161 180   9  63
    106 " base2     #eee8d5  7/7 white    254 #d7d7af 92 -00  10 238 232 213  44  11  93
    107 " base3     #fdf6e3 15/7 brwhite  230 #ffffd7 97  00  10 253 246 227  44  10  99
    108 " yellow    #b58900  3/3 yellow   136 #af8700 60  10  65 181 137   0  45 100  71
    109 " orange    #cb4b16  9/3 brred    166 #d75f00 50  50  55 203  75  22  18  89  80
    110 " red       #dc322f  1/1 red      160 #d70000 50  65  45 220  50  47   1  79  86
    111 " magenta   #d33682  5/5 magenta  125 #af005f 50  65 -05 211  54 130 331  74  83
    112 " violet    #6c71c4 13/5 brmagenta 61 #5f5faf 50  15 -45 108 113 196 237  45  77
    113 " blue      #268bd2  4/4 blue      33 #0087ff 55 -10 -45  38 139 210 205  82  82
    114 " cyan      #2aa198  6/6 cyan      37 #00afaf 60 -35 -05  42 161 152 175  74  63
    115 " green     #859900  2/2 green     64 #5f8700 60 -20  65 133 153   0  68 100  60
    116 "
    117 " ---------------------------------------------------------------------
    118 " COLORSCHEME HACKING
    119 " ---------------------------------------------------------------------
    120 "
    121 " Useful commands for testing colorschemes:
    122 " :source $VIMRUNTIME/syntax/hitest.vim
    123 " :help highlight-groups
    124 " :help cterm-colors
    125 " :help group-name
    126 "
    127 " Useful links for developing colorschemes:
    128 " http://www.vim.org/scripts/script.php?script_id=2937
    129 " http://vimcasts.org/episodes/creating-colorschemes-for-vim/
    130 " http://www.frexx.de/xterm-256-notes/"
    131 "
    132 " }}}
    133 " Environment Specific Overrides "{{{
    134 " Allow or disallow certain features based on current terminal emulator or 
    135 " environment.
    136 
    137 " Terminals that support italics
    138 let s:terms_italic=[
    139             \"rxvt",
    140             \"gnome-terminal"
    141             \]
    142 " For reference only, terminals are known to be incomptible.
    143 " Terminals that are in neither list need to be tested.
    144 let s:terms_noitalic=[
    145             \"iTerm.app",
    146             \"Apple_Terminal"
    147             \]
    148 if has("gui_running")
    149     let s:terminal_italic=1 " TODO: could refactor to not require this at all
    150 else
    151     let s:terminal_italic=0 " terminals will be guilty until proven compatible
    152     for term in s:terms_italic
    153         if $TERM_PROGRAM =~ term
    154             let s:terminal_italic=1
    155         endif
    156     endfor
    157 endif
    158 
    159 " }}}
    160 " Default option values"{{{
    161 " ---------------------------------------------------------------------
    162 " s:options_list is used to autogenerate a list of all non-default options 
    163 " using "call SolarizedOptions()" or with the "Generate .vimrc commands" 
    164 " Solarized menu option. See the "Menus" section below for the function itself.
    165 let s:options_list=[
    166             \'" this block of commands has been autogenerated by solarized.vim and',
    167             \'" includes the current, non-default Solarized option values.',
    168             \'" To use, place these commands in your .vimrc file (replacing any',
    169             \'" existing colorscheme commands). See also ":help solarized"',
    170             \'',
    171             \'" ------------------------------------------------------------------',
    172             \'" Solarized Colorscheme Config',
    173             \'" ------------------------------------------------------------------',
    174             \]
    175 let s:colorscheme_list=[
    176             \'syntax enable',
    177             \'set background='.&background,
    178             \'colorscheme solarized',
    179             \]
    180 let s:defaults_list=[
    181             \'" ------------------------------------------------------------------',
    182             \'',
    183             \'" The following items are available options, but do not need to be',
    184             \'" included in your .vimrc as they are currently set to their defaults.',
    185             \''
    186             \]
    187 let s:lazycat_list=[
    188             \'" lazy method of appending this onto your .vimrc ":w! >> ~/.vimrc"',
    189             \'" ------------------------------------------------------------------',
    190             \]
    191 
    192 function! s:SetOption(name,default)
    193     if type(a:default) == type(0)
    194         let l:wrap=''
    195         let l:ewrap=''
    196     else
    197         let l:wrap='"'
    198         let l:ewrap='\"'
    199     endif
    200     if !exists("g:solarized_".a:name) || g:solarized_{a:name}==a:default
    201         exe 'let g:solarized_'.a:name.'='.l:wrap.a:default.l:wrap.'"'
    202         exe 'call add(s:defaults_list, "\" let g:solarized_'.a:name.'='.l:ewrap.g:solarized_{a:name}.l:ewrap.'")'
    203     else
    204         exe 'call add(s:options_list,  "let g:solarized_'.a:name.'='.l:ewrap.g:solarized_{a:name}.l:ewrap.'    \"default value is '.a:default.'")'
    205     endif
    206 endfunction
    207 
    208 if ($TERM_PROGRAM ==? "apple_terminal" && &t_Co < 256)
    209     let s:solarized_termtrans_default = 1
    210 else
    211     let s:solarized_termtrans_default = 0
    212 endif
    213 call s:SetOption("termtrans",s:solarized_termtrans_default)
    214 call s:SetOption("degrade",0)
    215 call s:SetOption("bold",1)
    216 call s:SetOption("underline",1)
    217 call s:SetOption("italic",1) " note that we need to override this later if the terminal doesn't support
    218 call s:SetOption("termcolors",16)
    219 call s:SetOption("contrast","normal")
    220 call s:SetOption("visibility","normal")
    221 call s:SetOption("diffmode","normal")
    222 call s:SetOption("hitrail",0)
    223 call s:SetOption("menu",1)
    224 
    225 "}}}
    226 " Colorscheme initialization "{{{
    227 " ---------------------------------------------------------------------
    228 hi clear
    229 if exists("syntax_on")
    230   syntax reset
    231 endif
    232 let colors_name = "solarized"
    233 
    234 "}}}
    235 " GUI & CSApprox hexadecimal palettes"{{{
    236 " ---------------------------------------------------------------------
    237 "
    238 " Set both gui and terminal color values in separate conditional statements
    239 " Due to possibility that CSApprox is running (though I suppose we could just
    240 " leave the hex values out entirely in that case and include only cterm colors)
    241 " We also check to see if user has set solarized (force use of the
    242 " neutral gray monotone palette component)
    243 if (has("gui_running") && g:solarized_degrade == 0)
    244     let s:vmode       = "gui"
    245     let s:base03      = "#002b36"
    246     let s:base02      = "#073642"
    247     let s:base01      = "#586e75"
    248     let s:base00      = "#657b83"
    249     let s:base0       = "#839496"
    250     let s:base1       = "#93a1a1"
    251     let s:base2       = "#eee8d5"
    252     let s:base3       = "#fdf6e3"
    253     let s:yellow      = "#b58900"
    254     let s:orange      = "#cb4b16"
    255     let s:red         = "#dc322f"
    256     let s:magenta     = "#d33682"
    257     let s:violet      = "#6c71c4"
    258     let s:blue        = "#268bd2"
    259     let s:cyan        = "#2aa198"
    260     "let s:green       = "#859900" "original
    261     let s:green       = "#719e07" "experimental
    262 elseif (has("gui_running") && g:solarized_degrade == 1)
    263     " These colors are identical to the 256 color mode. They may be viewed
    264     " while in gui mode via "let g:solarized_degrade=1", though this is not
    265     " recommened and is for testing only.
    266     let s:vmode       = "gui"
    267     let s:base03      = "#1c1c1c"
    268     let s:base02      = "#262626"
    269     let s:base01      = "#4e4e4e"
    270     let s:base00      = "#585858"
    271     let s:base0       = "#808080"
    272     let s:base1       = "#8a8a8a"
    273     let s:base2       = "#d7d7af"
    274     let s:base3       = "#ffffd7"
    275     let s:yellow      = "#af8700"
    276     let s:orange      = "#d75f00"
    277     let s:red         = "#af0000"
    278     let s:magenta     = "#af005f"
    279     let s:violet      = "#5f5faf"
    280     let s:blue        = "#0087ff"
    281     let s:cyan        = "#00afaf"
    282     let s:green       = "#5f8700"
    283 elseif g:solarized_termcolors != 256 && &t_Co >= 16
    284     let s:vmode       = "cterm"
    285     let s:base03      = "8"
    286     let s:base02      = "0"
    287     let s:base01      = "10"
    288     let s:base00      = "11"
    289     let s:base0       = "12"
    290     let s:base1       = "14"
    291     let s:base2       = "7"
    292     let s:base3       = "15"
    293     let s:yellow      = "3"
    294     let s:orange      = "9"
    295     let s:red         = "1"
    296     let s:magenta     = "5"
    297     let s:violet      = "13"
    298     let s:blue        = "4"
    299     let s:cyan        = "6"
    300     let s:green       = "2"
    301 elseif g:solarized_termcolors == 256
    302     let s:vmode       = "cterm"
    303     let s:base03      = "234"
    304     let s:base02      = "235"
    305     let s:base01      = "239"
    306     let s:base00      = "240"
    307     let s:base0       = "244"
    308     let s:base1       = "245"
    309     let s:base2       = "187"
    310     let s:base3       = "230"
    311     let s:yellow      = "136"
    312     let s:orange      = "166"
    313     let s:red         = "124"
    314     let s:magenta     = "125"
    315     let s:violet      = "61"
    316     let s:blue        = "33"
    317     let s:cyan        = "37"
    318     let s:green       = "64"
    319 else
    320     let s:vmode       = "cterm"
    321     let s:bright      = "* term=bold cterm=bold"
    322 "   let s:base03      = "0".s:bright
    323 "   let s:base02      = "0"
    324 "   let s:base01      = "2".s:bright
    325 "   let s:base00      = "3".s:bright
    326 "   let s:base0       = "4".s:bright
    327 "   let s:base1       = "6".s:bright
    328 "   let s:base2       = "7"
    329 "   let s:base3       = "7".s:bright
    330 "   let s:yellow      = "3"
    331 "   let s:orange      = "1".s:bright
    332 "   let s:red         = "1"
    333 "   let s:magenta     = "5"
    334 "   let s:violet      = "5".s:bright
    335 "   let s:blue        = "4"
    336 "   let s:cyan        = "6"
    337 "   let s:green       = "2"
    338     let s:base03      = "DarkGray"      " 0*
    339     let s:base02      = "Black"         " 0
    340     let s:base01      = "LightGreen"    " 2*
    341     let s:base00      = "LightYellow"   " 3*
    342     let s:base0       = "LightBlue"     " 4*
    343     let s:base1       = "LightCyan"     " 6*
    344     let s:base2       = "LightGray"     " 7
    345     let s:base3       = "White"         " 7*
    346     let s:yellow      = "DarkYellow"    " 3
    347     let s:orange      = "LightRed"      " 1*
    348     let s:red         = "DarkRed"       " 1
    349     let s:magenta     = "DarkMagenta"   " 5
    350     let s:violet      = "LightMagenta"  " 5*
    351     let s:blue        = "DarkBlue"      " 4
    352     let s:cyan        = "DarkCyan"      " 6
    353     let s:green       = "DarkGreen"     " 2
    354 
    355 endif
    356 "}}}
    357 " Formatting options and null values for passthrough effect "{{{
    358 " ---------------------------------------------------------------------
    359     let s:none            = "NONE"
    360     let s:none            = "NONE"
    361     let s:t_none          = "NONE"
    362     let s:n               = "NONE"
    363     let s:c               = ",undercurl"
    364     let s:r               = ",reverse"
    365     let s:s               = ",standout"
    366     let s:ou              = ""
    367     let s:ob              = ""
    368 "}}}
    369 " Background value based on termtrans setting "{{{
    370 " ---------------------------------------------------------------------
    371 if (has("gui_running") || g:solarized_termtrans == 0)
    372     let s:back        = s:base03
    373 else
    374     let s:back        = "NONE"
    375 endif
    376 "}}}
    377 " Alternate light scheme "{{{
    378 " ---------------------------------------------------------------------
    379 if &background == "light"
    380     let s:temp03      = s:base03
    381     let s:temp02      = s:base02
    382     let s:temp01      = s:base01
    383     let s:temp00      = s:base00
    384     let s:base03      = s:base3
    385     let s:base02      = s:base2
    386     let s:base01      = s:base1
    387     let s:base00      = s:base0
    388     let s:base0       = s:temp00
    389     let s:base1       = s:temp01
    390     let s:base2       = s:temp02
    391     let s:base3       = s:temp03
    392     if (s:back != "NONE")
    393         let s:back    = s:base03
    394     endif
    395 endif
    396 "}}}
    397 " Optional contrast schemes "{{{
    398 " ---------------------------------------------------------------------
    399 if g:solarized_contrast == "high"
    400     let s:base01      = s:base00
    401     let s:base00      = s:base0
    402     let s:base0       = s:base1
    403     let s:base1       = s:base2
    404     let s:base2       = s:base3
    405     let s:back        = s:back
    406 endif
    407 if g:solarized_contrast == "low"
    408     let s:back        = s:base02
    409     let s:ou          = ",underline"
    410 endif
    411 "}}}
    412 " Overrides dependent on user specified values and environment "{{{
    413 " ---------------------------------------------------------------------
    414 if (g:solarized_bold == 0 || &t_Co == 8 )
    415     let s:b           = ""
    416     let s:bb          = ",bold"
    417 else
    418     let s:b           = ",bold"
    419     let s:bb          = ""
    420 endif
    421 
    422 if g:solarized_underline == 0
    423     let s:u           = ""
    424 else
    425     let s:u           = ",underline"
    426 endif
    427 
    428 if g:solarized_italic == 0 || s:terminal_italic == 0
    429     let s:i           = ""
    430 else
    431     let s:i           = ",italic"
    432 endif
    433 "}}}
    434 " Highlighting primitives"{{{
    435 " ---------------------------------------------------------------------
    436 
    437 exe "let s:bg_none      = ' ".s:vmode."bg=".s:none   ."'"
    438 exe "let s:bg_back      = ' ".s:vmode."bg=".s:back   ."'"
    439 exe "let s:bg_base03    = ' ".s:vmode."bg=".s:base03 ."'"
    440 exe "let s:bg_base02    = ' ".s:vmode."bg=".s:base02 ."'"
    441 exe "let s:bg_base01    = ' ".s:vmode."bg=".s:base01 ."'"
    442 exe "let s:bg_base00    = ' ".s:vmode."bg=".s:base00 ."'"
    443 exe "let s:bg_base0     = ' ".s:vmode."bg=".s:base0  ."'"
    444 exe "let s:bg_base1     = ' ".s:vmode."bg=".s:base1  ."'"
    445 exe "let s:bg_base2     = ' ".s:vmode."bg=".s:base2  ."'"
    446 exe "let s:bg_base3     = ' ".s:vmode."bg=".s:base3  ."'"
    447 exe "let s:bg_green     = ' ".s:vmode."bg=".s:green  ."'"
    448 exe "let s:bg_yellow    = ' ".s:vmode."bg=".s:yellow ."'"
    449 exe "let s:bg_orange    = ' ".s:vmode."bg=".s:orange ."'"
    450 exe "let s:bg_red       = ' ".s:vmode."bg=".s:red    ."'"
    451 exe "let s:bg_magenta   = ' ".s:vmode."bg=".s:magenta."'"
    452 exe "let s:bg_violet    = ' ".s:vmode."bg=".s:violet ."'"
    453 exe "let s:bg_blue      = ' ".s:vmode."bg=".s:blue   ."'"
    454 exe "let s:bg_cyan      = ' ".s:vmode."bg=".s:cyan   ."'"
    455 
    456 exe "let s:fg_none      = ' ".s:vmode."fg=".s:none   ."'"
    457 exe "let s:fg_back      = ' ".s:vmode."fg=".s:back   ."'"
    458 exe "let s:fg_base03    = ' ".s:vmode."fg=".s:base03 ."'"
    459 exe "let s:fg_base02    = ' ".s:vmode."fg=".s:base02 ."'"
    460 exe "let s:fg_base01    = ' ".s:vmode."fg=".s:base01 ."'"
    461 exe "let s:fg_base00    = ' ".s:vmode."fg=".s:base00 ."'"
    462 exe "let s:fg_base0     = ' ".s:vmode."fg=".s:base0  ."'"
    463 exe "let s:fg_base1     = ' ".s:vmode."fg=".s:base1  ."'"
    464 exe "let s:fg_base2     = ' ".s:vmode."fg=".s:base2  ."'"
    465 exe "let s:fg_base3     = ' ".s:vmode."fg=".s:base3  ."'"
    466 exe "let s:fg_green     = ' ".s:vmode."fg=".s:green  ."'"
    467 exe "let s:fg_yellow    = ' ".s:vmode."fg=".s:yellow ."'"
    468 exe "let s:fg_orange    = ' ".s:vmode."fg=".s:orange ."'"
    469 exe "let s:fg_red       = ' ".s:vmode."fg=".s:red    ."'"
    470 exe "let s:fg_magenta   = ' ".s:vmode."fg=".s:magenta."'"
    471 exe "let s:fg_violet    = ' ".s:vmode."fg=".s:violet ."'"
    472 exe "let s:fg_blue      = ' ".s:vmode."fg=".s:blue   ."'"
    473 exe "let s:fg_cyan      = ' ".s:vmode."fg=".s:cyan   ."'"
    474 
    475 exe "let s:fmt_none     = ' ".s:vmode."=NONE".          " term=NONE".    "'"
    476 exe "let s:fmt_bold     = ' ".s:vmode."=NONE".s:b.      " term=NONE".s:b."'"
    477 exe "let s:fmt_bldi     = ' ".s:vmode."=NONE".s:b.      " term=NONE".s:b."'"
    478 exe "let s:fmt_undr     = ' ".s:vmode."=NONE".s:u.      " term=NONE".s:u."'"
    479 exe "let s:fmt_undb     = ' ".s:vmode."=NONE".s:u.s:b.  " term=NONE".s:u.s:b."'"
    480 exe "let s:fmt_undi     = ' ".s:vmode."=NONE".s:u.      " term=NONE".s:u."'"
    481 exe "let s:fmt_uopt     = ' ".s:vmode."=NONE".s:ou.     " term=NONE".s:ou."'"
    482 exe "let s:fmt_curl     = ' ".s:vmode."=NONE".s:c.      " term=NONE".s:c."'"
    483 exe "let s:fmt_ital     = ' ".s:vmode."=NONE".s:i.      " term=NONE".s:i."'"
    484 exe "let s:fmt_stnd     = ' ".s:vmode."=NONE".s:s.      " term=NONE".s:s."'"
    485 exe "let s:fmt_revr     = ' ".s:vmode."=NONE".s:r.      " term=NONE".s:r."'"
    486 exe "let s:fmt_revb     = ' ".s:vmode."=NONE".s:r.s:b.  " term=NONE".s:r.s:b."'"
    487 " revbb (reverse bold for bright colors) is only set to actual bold in low 
    488 " color terminals (t_co=8, such as OS X Terminal.app) and should only be used 
    489 " with colors 8-15.
    490 exe "let s:fmt_revbb    = ' ".s:vmode."=NONE".s:r.s:bb.   " term=NONE".s:r.s:bb."'"
    491 exe "let s:fmt_revbbu   = ' ".s:vmode."=NONE".s:r.s:bb.s:u." term=NONE".s:r.s:bb.s:u."'"
    492 
    493 if has("gui_running")
    494     exe "let s:sp_none      = ' guisp=".s:none   ."'"
    495     exe "let s:sp_back      = ' guisp=".s:back   ."'"
    496     exe "let s:sp_base03    = ' guisp=".s:base03 ."'"
    497     exe "let s:sp_base02    = ' guisp=".s:base02 ."'"
    498     exe "let s:sp_base01    = ' guisp=".s:base01 ."'"
    499     exe "let s:sp_base00    = ' guisp=".s:base00 ."'"
    500     exe "let s:sp_base0     = ' guisp=".s:base0  ."'"
    501     exe "let s:sp_base1     = ' guisp=".s:base1  ."'"
    502     exe "let s:sp_base2     = ' guisp=".s:base2  ."'"
    503     exe "let s:sp_base3     = ' guisp=".s:base3  ."'"
    504     exe "let s:sp_green     = ' guisp=".s:green  ."'"
    505     exe "let s:sp_yellow    = ' guisp=".s:yellow ."'"
    506     exe "let s:sp_orange    = ' guisp=".s:orange ."'"
    507     exe "let s:sp_red       = ' guisp=".s:red    ."'"
    508     exe "let s:sp_magenta   = ' guisp=".s:magenta."'"
    509     exe "let s:sp_violet    = ' guisp=".s:violet ."'"
    510     exe "let s:sp_blue      = ' guisp=".s:blue   ."'"
    511     exe "let s:sp_cyan      = ' guisp=".s:cyan   ."'"
    512 else
    513     let s:sp_none      = ""
    514     let s:sp_back      = ""
    515     let s:sp_base03    = ""
    516     let s:sp_base02    = ""
    517     let s:sp_base01    = ""
    518     let s:sp_base00    = ""
    519     let s:sp_base0     = ""
    520     let s:sp_base1     = ""
    521     let s:sp_base2     = ""
    522     let s:sp_base3     = ""
    523     let s:sp_green     = ""
    524     let s:sp_yellow    = ""
    525     let s:sp_orange    = ""
    526     let s:sp_red       = ""
    527     let s:sp_magenta   = ""
    528     let s:sp_violet    = ""
    529     let s:sp_blue      = ""
    530     let s:sp_cyan      = ""
    531 endif
    532 
    533 "}}}
    534 " Basic highlighting"{{{
    535 " ---------------------------------------------------------------------
    536 " note that link syntax to avoid duplicate configuration doesn't work with the
    537 " exe compiled formats
    538 
    539 exe "hi! Normal"         .s:fmt_none   .s:fg_base0  .s:bg_back
    540 
    541 exe "hi! Comment"        .s:fmt_ital   .s:fg_base01 .s:bg_none
    542 "       *Comment         any comment
    543 
    544 exe "hi! Constant"       .s:fmt_none   .s:fg_cyan   .s:bg_none
    545 "       *Constant        any constant
    546 "        String          a string constant: "this is a string"
    547 "        Character       a character constant: 'c', '\n'
    548 "        Number          a number constant: 234, 0xff
    549 "        Boolean         a boolean constant: TRUE, false
    550 "        Float           a floating point constant: 2.3e10
    551 
    552 exe "hi! Identifier"     .s:fmt_none   .s:fg_blue   .s:bg_none
    553 "       *Identifier      any variable name
    554 "        Function        function name (also: methods for classes)
    555 "
    556 exe "hi! Statement"      .s:fmt_none   .s:fg_green  .s:bg_none
    557 "       *Statement       any statement
    558 "        Conditional     if, then, else, endif, switch, etc.
    559 "        Repeat          for, do, while, etc.
    560 "        Label           case, default, etc.
    561 "        Operator        "sizeof", "+", "*", etc.
    562 "        Keyword         any other keyword
    563 "        Exception       try, catch, throw
    564 
    565 exe "hi! PreProc"        .s:fmt_none   .s:fg_orange .s:bg_none
    566 "       *PreProc         generic Preprocessor
    567 "        Include         preprocessor #include
    568 "        Define          preprocessor #define
    569 "        Macro           same as Define
    570 "        PreCondit       preprocessor #if, #else, #endif, etc.
    571 
    572 exe "hi! Type"           .s:fmt_none   .s:fg_yellow .s:bg_none
    573 "       *Type            int, long, char, etc.
    574 "        StorageClass    static, register, volatile, etc.
    575 "        Structure       struct, union, enum, etc.
    576 "        Typedef         A typedef
    577 
    578 exe "hi! Special"        .s:fmt_none   .s:fg_red    .s:bg_none
    579 "       *Special         any special symbol
    580 "        SpecialChar     special character in a constant
    581 "        Tag             you can use CTRL-] on this
    582 "        Delimiter       character that needs attention
    583 "        SpecialComment  special things inside a comment
    584 "        Debug           debugging statements
    585 
    586 exe "hi! Underlined"     .s:fmt_none   .s:fg_violet .s:bg_none
    587 "       *Underlined      text that stands out, HTML links
    588 
    589 exe "hi! Ignore"         .s:fmt_none   .s:fg_none   .s:bg_none
    590 "       *Ignore          left blank, hidden  |hl-Ignore|
    591 
    592 exe "hi! Error"          .s:fmt_bold   .s:fg_red    .s:bg_none
    593 "       *Error           any erroneous construct
    594 
    595 exe "hi! Todo"           .s:fmt_bold   .s:fg_magenta.s:bg_none
    596 "       *Todo            anything that needs extra attention; mostly the
    597 "                        keywords TODO FIXME and XXX
    598 "
    599 "}}}
    600 " Extended highlighting "{{{
    601 " ---------------------------------------------------------------------
    602 if      (g:solarized_visibility=="high")
    603     exe "hi! SpecialKey" .s:fmt_revr   .s:fg_red    .s:bg_none
    604     exe "hi! NonText"    .s:fmt_bold   .s:fg_red    .s:bg_none
    605 elseif  (g:solarized_visibility=="low")
    606     exe "hi! SpecialKey" .s:fmt_bold   .s:fg_base02 .s:bg_none
    607     exe "hi! NonText"    .s:fmt_bold   .s:fg_base02 .s:bg_none
    608 else
    609     exe "hi! SpecialKey" .s:fmt_bold   .s:fg_base00 .s:bg_base02
    610     exe "hi! NonText"    .s:fmt_bold   .s:fg_base00 .s:bg_none
    611 endif
    612 exe "hi! StatusLine"     .s:fmt_none   .s:fg_base1  .s:bg_base02 .s:fmt_revbb
    613 exe "hi! StatusLineNC"   .s:fmt_none   .s:fg_base00 .s:bg_base02 .s:fmt_revbb
    614 exe "hi! Visual"         .s:fmt_none   .s:fg_base01 .s:bg_base03 .s:fmt_revbb
    615 exe "hi! Directory"      .s:fmt_none   .s:fg_blue   .s:bg_none
    616 exe "hi! ErrorMsg"       .s:fmt_revr   .s:fg_red    .s:bg_none
    617 exe "hi! IncSearch"      .s:fmt_stnd   .s:fg_orange .s:bg_none
    618 exe "hi! Search"         .s:fmt_revr   .s:fg_yellow .s:bg_none
    619 exe "hi! MoreMsg"        .s:fmt_none   .s:fg_blue   .s:bg_none
    620 exe "hi! ModeMsg"        .s:fmt_none   .s:fg_blue   .s:bg_none
    621 exe "hi! LineNr"         .s:fmt_none   .s:fg_base01 .s:bg_base02
    622 exe "hi! Question"       .s:fmt_bold   .s:fg_cyan   .s:bg_none
    623 if ( has("gui_running") || &t_Co > 8 )
    624     exe "hi! VertSplit"  .s:fmt_none   .s:fg_base00 .s:bg_base00
    625 else
    626     exe "hi! VertSplit"  .s:fmt_revbb  .s:fg_base00 .s:bg_base02
    627 endif
    628 exe "hi! Title"          .s:fmt_bold   .s:fg_orange .s:bg_none
    629 exe "hi! VisualNOS"      .s:fmt_stnd   .s:fg_none   .s:bg_base02 .s:fmt_revbb
    630 exe "hi! WarningMsg"     .s:fmt_bold   .s:fg_red    .s:bg_none
    631 exe "hi! WildMenu"       .s:fmt_none   .s:fg_base2  .s:bg_base02 .s:fmt_revbb
    632 exe "hi! Folded"         .s:fmt_undb   .s:fg_base0  .s:bg_base02  .s:sp_base03
    633 exe "hi! FoldColumn"     .s:fmt_none   .s:fg_base0  .s:bg_base02
    634 if      (g:solarized_diffmode=="high")
    635 exe "hi! DiffAdd"        .s:fmt_revr   .s:fg_green  .s:bg_none
    636 exe "hi! DiffChange"     .s:fmt_revr   .s:fg_yellow .s:bg_none
    637 exe "hi! DiffDelete"     .s:fmt_revr   .s:fg_red    .s:bg_none
    638 exe "hi! DiffText"       .s:fmt_revr   .s:fg_blue   .s:bg_none
    639 elseif  (g:solarized_diffmode=="low")
    640 exe "hi! DiffAdd"        .s:fmt_undr   .s:fg_green  .s:bg_none   .s:sp_green
    641 exe "hi! DiffChange"     .s:fmt_undr   .s:fg_yellow .s:bg_none   .s:sp_yellow
    642 exe "hi! DiffDelete"     .s:fmt_bold   .s:fg_red    .s:bg_none
    643 exe "hi! DiffText"       .s:fmt_undr   .s:fg_blue   .s:bg_none   .s:sp_blue
    644 else " normal
    645     if has("gui_running")
    646 exe "hi! DiffAdd"        .s:fmt_bold   .s:fg_green  .s:bg_base02 .s:sp_green
    647 exe "hi! DiffChange"     .s:fmt_bold   .s:fg_yellow .s:bg_base02 .s:sp_yellow
    648 exe "hi! DiffDelete"     .s:fmt_bold   .s:fg_red    .s:bg_base02
    649 exe "hi! DiffText"       .s:fmt_bold   .s:fg_blue   .s:bg_base02 .s:sp_blue
    650     else
    651 exe "hi! DiffAdd"        .s:fmt_none   .s:fg_green  .s:bg_base02 .s:sp_green
    652 exe "hi! DiffChange"     .s:fmt_none   .s:fg_yellow .s:bg_base02 .s:sp_yellow
    653 exe "hi! DiffDelete"     .s:fmt_none   .s:fg_red    .s:bg_base02
    654 exe "hi! DiffText"       .s:fmt_none   .s:fg_blue   .s:bg_base02 .s:sp_blue
    655     endif
    656 endif
    657 exe "hi! SignColumn"     .s:fmt_none   .s:fg_base0
    658 exe "hi! Conceal"        .s:fmt_none   .s:fg_blue   .s:bg_none
    659 exe "hi! SpellBad"       .s:fmt_curl   .s:fg_none   .s:bg_none    .s:sp_red
    660 exe "hi! SpellCap"       .s:fmt_curl   .s:fg_none   .s:bg_none    .s:sp_violet
    661 exe "hi! SpellRare"      .s:fmt_curl   .s:fg_none   .s:bg_none    .s:sp_cyan
    662 exe "hi! SpellLocal"     .s:fmt_curl   .s:fg_none   .s:bg_none    .s:sp_yellow
    663 exe "hi! Pmenu"          .s:fmt_none   .s:fg_base0  .s:bg_base02  .s:fmt_revbb
    664 exe "hi! PmenuSel"       .s:fmt_none   .s:fg_base01 .s:bg_base2   .s:fmt_revbb
    665 exe "hi! PmenuSbar"      .s:fmt_none   .s:fg_base2  .s:bg_base0   .s:fmt_revbb
    666 exe "hi! PmenuThumb"     .s:fmt_none   .s:fg_base0  .s:bg_base03  .s:fmt_revbb
    667 exe "hi! TabLine"        .s:fmt_undr   .s:fg_base0  .s:bg_base02  .s:sp_base0
    668 exe "hi! TabLineFill"    .s:fmt_undr   .s:fg_base0  .s:bg_base02  .s:sp_base0
    669 exe "hi! TabLineSel"     .s:fmt_undr   .s:fg_base01 .s:bg_base2   .s:sp_base0  .s:fmt_revbbu
    670 exe "hi! CursorColumn"   .s:fmt_none   .s:fg_none   .s:bg_base02
    671 exe "hi! CursorLine"     .s:fmt_uopt   .s:fg_none   .s:bg_base02  .s:sp_base1
    672 exe "hi! ColorColumn"    .s:fmt_none   .s:fg_none   .s:bg_base02
    673 exe "hi! Cursor"         .s:fmt_none   .s:fg_base03 .s:bg_base0
    674 hi! link lCursor Cursor
    675 exe "hi! MatchParen"     .s:fmt_bold   .s:fg_red    .s:bg_base01
    676 
    677 "}}}
    678 " vim syntax highlighting "{{{
    679 " ---------------------------------------------------------------------
    680 "exe "hi! vimLineComment" . s:fg_base01 .s:bg_none   .s:fmt_ital
    681 "hi! link vimComment Comment
    682 "hi! link vimLineComment Comment
    683 hi! link vimVar Identifier
    684 hi! link vimFunc Function
    685 hi! link vimUserFunc Function
    686 hi! link helpSpecial Special
    687 hi! link vimSet Normal
    688 hi! link vimSetEqual Normal
    689 exe "hi! vimCommentString"  .s:fmt_none    .s:fg_violet .s:bg_none
    690 exe "hi! vimCommand"        .s:fmt_none    .s:fg_yellow .s:bg_none
    691 exe "hi! vimCmdSep"         .s:fmt_bold    .s:fg_blue   .s:bg_none
    692 exe "hi! helpExample"       .s:fmt_none    .s:fg_base1  .s:bg_none
    693 exe "hi! helpOption"        .s:fmt_none    .s:fg_cyan   .s:bg_none
    694 exe "hi! helpNote"          .s:fmt_none    .s:fg_magenta.s:bg_none
    695 exe "hi! helpVim"           .s:fmt_none    .s:fg_magenta.s:bg_none
    696 exe "hi! helpHyperTextJump" .s:fmt_undr    .s:fg_blue   .s:bg_none
    697 exe "hi! helpHyperTextEntry".s:fmt_none    .s:fg_green  .s:bg_none
    698 exe "hi! vimIsCommand"      .s:fmt_none    .s:fg_base00 .s:bg_none
    699 exe "hi! vimSynMtchOpt"     .s:fmt_none    .s:fg_yellow .s:bg_none
    700 exe "hi! vimSynType"        .s:fmt_none    .s:fg_cyan   .s:bg_none
    701 exe "hi! vimHiLink"         .s:fmt_none    .s:fg_blue   .s:bg_none
    702 exe "hi! vimHiGroup"        .s:fmt_none    .s:fg_blue   .s:bg_none
    703 exe "hi! vimGroup"          .s:fmt_undb    .s:fg_blue   .s:bg_none
    704 "}}}
    705 " diff highlighting "{{{
    706 " ---------------------------------------------------------------------
    707 hi! link diffAdded Statement
    708 hi! link diffLine Identifier
    709 "}}}
    710 " git & gitcommit highlighting "{{{
    711 "git
    712 "exe "hi! gitDateHeader"
    713 "exe "hi! gitIdentityHeader"
    714 "exe "hi! gitIdentityKeyword"
    715 "exe "hi! gitNotesHeader"
    716 "exe "hi! gitReflogHeader"
    717 "exe "hi! gitKeyword"
    718 "exe "hi! gitIdentity"
    719 "exe "hi! gitEmailDelimiter"
    720 "exe "hi! gitEmail"
    721 "exe "hi! gitDate"
    722 "exe "hi! gitMode"
    723 "exe "hi! gitHashAbbrev"
    724 "exe "hi! gitHash"
    725 "exe "hi! gitReflogMiddle"
    726 "exe "hi! gitReference"
    727 "exe "hi! gitStage"
    728 "exe "hi! gitType"
    729 "exe "hi! gitDiffAdded"
    730 "exe "hi! gitDiffRemoved"
    731 "gitcommit
    732 "exe "hi! gitcommitSummary"      
    733 exe "hi! gitcommitComment"      .s:fmt_ital     .s:fg_base01    .s:bg_none
    734 hi! link gitcommitUntracked gitcommitComment
    735 hi! link gitcommitDiscarded gitcommitComment
    736 hi! link gitcommitSelected  gitcommitComment
    737 exe "hi! gitcommitUnmerged"     .s:fmt_bold     .s:fg_green     .s:bg_none
    738 exe "hi! gitcommitOnBranch"     .s:fmt_bold     .s:fg_base01    .s:bg_none
    739 exe "hi! gitcommitBranch"       .s:fmt_bold     .s:fg_magenta   .s:bg_none
    740 hi! link gitcommitNoBranch gitcommitBranch
    741 exe "hi! gitcommitDiscardedType".s:fmt_none     .s:fg_red       .s:bg_none
    742 exe "hi! gitcommitSelectedType" .s:fmt_none     .s:fg_green     .s:bg_none
    743 "exe "hi! gitcommitUnmergedType"
    744 "exe "hi! gitcommitType"
    745 "exe "hi! gitcommitNoChanges"
    746 "exe "hi! gitcommitHeader"
    747 exe "hi! gitcommitHeader"       .s:fmt_none     .s:fg_base01    .s:bg_none
    748 exe "hi! gitcommitUntrackedFile".s:fmt_bold     .s:fg_cyan      .s:bg_none
    749 exe "hi! gitcommitDiscardedFile".s:fmt_bold     .s:fg_red       .s:bg_none
    750 exe "hi! gitcommitSelectedFile" .s:fmt_bold     .s:fg_green     .s:bg_none
    751 exe "hi! gitcommitUnmergedFile" .s:fmt_bold     .s:fg_yellow    .s:bg_none
    752 exe "hi! gitcommitFile"         .s:fmt_bold     .s:fg_base0     .s:bg_none
    753 hi! link gitcommitDiscardedArrow gitcommitDiscardedFile
    754 hi! link gitcommitSelectedArrow  gitcommitSelectedFile
    755 hi! link gitcommitUnmergedArrow  gitcommitUnmergedFile
    756 "exe "hi! gitcommitArrow"
    757 "exe "hi! gitcommitOverflow"
    758 "exe "hi! gitcommitBlank"
    759 " }}}
    760 " html highlighting "{{{
    761 " ---------------------------------------------------------------------
    762 exe "hi! htmlTag"           .s:fmt_none .s:fg_base01 .s:bg_none
    763 exe "hi! htmlEndTag"        .s:fmt_none .s:fg_base01 .s:bg_none
    764 exe "hi! htmlTagN"          .s:fmt_bold .s:fg_base1  .s:bg_none
    765 exe "hi! htmlTagName"       .s:fmt_bold .s:fg_blue   .s:bg_none
    766 exe "hi! htmlSpecialTagName".s:fmt_ital .s:fg_blue   .s:bg_none
    767 exe "hi! htmlArg"           .s:fmt_none .s:fg_base00 .s:bg_none
    768 exe "hi! javaScript"        .s:fmt_none .s:fg_yellow .s:bg_none
    769 "}}}
    770 " perl highlighting "{{{
    771 " ---------------------------------------------------------------------
    772 exe "hi! perlHereDoc"    . s:fg_base1  .s:bg_back   .s:fmt_none
    773 exe "hi! perlVarPlain"   . s:fg_yellow .s:bg_back   .s:fmt_none
    774 exe "hi! perlStatementFileDesc". s:fg_cyan.s:bg_back.s:fmt_none
    775 
    776 "}}}
    777 " tex highlighting "{{{
    778 " ---------------------------------------------------------------------
    779 exe "hi! texStatement"   . s:fg_cyan   .s:bg_back   .s:fmt_none
    780 exe "hi! texMathZoneX"   . s:fg_yellow .s:bg_back   .s:fmt_none
    781 exe "hi! texMathMatcher" . s:fg_yellow .s:bg_back   .s:fmt_none
    782 exe "hi! texMathMatcher" . s:fg_yellow .s:bg_back   .s:fmt_none
    783 exe "hi! texRefLabel"    . s:fg_yellow .s:bg_back   .s:fmt_none
    784 "}}}
    785 " ruby highlighting "{{{
    786 " ---------------------------------------------------------------------
    787 exe "hi! rubyDefine"     . s:fg_base1  .s:bg_back   .s:fmt_bold
    788 "rubyInclude
    789 "rubySharpBang
    790 "rubyAccess
    791 "rubyPredefinedVariable
    792 "rubyBoolean
    793 "rubyClassVariable
    794 "rubyBeginEnd
    795 "rubyRepeatModifier
    796 "hi! link rubyArrayDelimiter    Special  " [ , , ]
    797 "rubyCurlyBlock  { , , }
    798 
    799 "hi! link rubyClass             Keyword
    800 "hi! link rubyModule            Keyword
    801 "hi! link rubyKeyword           Keyword
    802 "hi! link rubyOperator          Operator
    803 "hi! link rubyIdentifier        Identifier
    804 "hi! link rubyInstanceVariable  Identifier
    805 "hi! link rubyGlobalVariable    Identifier
    806 "hi! link rubyClassVariable     Identifier
    807 "hi! link rubyConstant          Type
    808 "}}}
    809 " haskell syntax highlighting"{{{
    810 " ---------------------------------------------------------------------
    811 " For use with syntax/haskell.vim : Haskell Syntax File
    812 " http://www.vim.org/scripts/script.php?script_id=3034
    813 " See also Steffen Siering's github repository:
    814 " http://github.com/urso/dotrc/blob/master/vim/syntax/haskell.vim
    815 " ---------------------------------------------------------------------
    816 "
    817 " Treat True and False specially, see the plugin referenced above
    818 let hs_highlight_boolean=1
    819 " highlight delims, see the plugin referenced above
    820 let hs_highlight_delimiters=1
    821 
    822 exe "hi! cPreCondit". s:fg_orange.s:bg_none   .s:fmt_none
    823 
    824 exe "hi! VarId"    . s:fg_blue   .s:bg_none   .s:fmt_none
    825 exe "hi! ConId"    . s:fg_yellow .s:bg_none   .s:fmt_none
    826 exe "hi! hsImport" . s:fg_magenta.s:bg_none   .s:fmt_none
    827 exe "hi! hsString" . s:fg_base00 .s:bg_none   .s:fmt_none
    828 
    829 exe "hi! hsStructure"        . s:fg_cyan   .s:bg_none   .s:fmt_none
    830 exe "hi! hs_hlFunctionName"  . s:fg_blue   .s:bg_none
    831 exe "hi! hsStatement"        . s:fg_cyan   .s:bg_none   .s:fmt_none
    832 exe "hi! hsImportLabel"      . s:fg_cyan   .s:bg_none   .s:fmt_none
    833 exe "hi! hs_OpFunctionName"  . s:fg_yellow .s:bg_none   .s:fmt_none
    834 exe "hi! hs_DeclareFunction" . s:fg_orange .s:bg_none   .s:fmt_none
    835 exe "hi! hsVarSym"           . s:fg_cyan   .s:bg_none   .s:fmt_none
    836 exe "hi! hsType"             . s:fg_yellow .s:bg_none   .s:fmt_none
    837 exe "hi! hsTypedef"          . s:fg_cyan   .s:bg_none   .s:fmt_none
    838 exe "hi! hsModuleName"       . s:fg_green  .s:bg_none   .s:fmt_undr
    839 exe "hi! hsModuleStartLabel" . s:fg_magenta.s:bg_none   .s:fmt_none
    840 hi! link hsImportParams      Delimiter
    841 hi! link hsDelimTypeExport   Delimiter
    842 hi! link hsModuleStartLabel  hsStructure
    843 hi! link hsModuleWhereLabel  hsModuleStartLabel
    844 
    845 " following is for the haskell-conceal plugin
    846 " the first two items don't have an impact, but better safe
    847 exe "hi! hsNiceOperator"     . s:fg_cyan   .s:bg_none   .s:fmt_none
    848 exe "hi! hsniceoperator"     . s:fg_cyan   .s:bg_none   .s:fmt_none
    849 
    850 "}}}
    851 " pandoc markdown syntax highlighting "{{{
    852 " ---------------------------------------------------------------------
    853 
    854 "PandocHiLink pandocNormalBlock
    855 exe "hi! pandocTitleBlock"               .s:fg_blue   .s:bg_none   .s:fmt_none
    856 exe "hi! pandocTitleBlockTitle"          .s:fg_blue   .s:bg_none   .s:fmt_bold
    857 exe "hi! pandocTitleComment"             .s:fg_blue   .s:bg_none   .s:fmt_bold
    858 exe "hi! pandocComment"                  .s:fg_base01 .s:bg_none   .s:fmt_ital
    859 exe "hi! pandocVerbatimBlock"            .s:fg_yellow .s:bg_none   .s:fmt_none
    860 hi! link pandocVerbatimBlockDeep         pandocVerbatimBlock
    861 hi! link pandocCodeBlock                 pandocVerbatimBlock
    862 hi! link pandocCodeBlockDelim            pandocVerbatimBlock
    863 exe "hi! pandocBlockQuote"               .s:fg_blue   .s:bg_none   .s:fmt_none
    864 exe "hi! pandocBlockQuoteLeader1"        .s:fg_blue   .s:bg_none   .s:fmt_none
    865 exe "hi! pandocBlockQuoteLeader2"        .s:fg_cyan   .s:bg_none   .s:fmt_none
    866 exe "hi! pandocBlockQuoteLeader3"        .s:fg_yellow .s:bg_none   .s:fmt_none
    867 exe "hi! pandocBlockQuoteLeader4"        .s:fg_red    .s:bg_none   .s:fmt_none
    868 exe "hi! pandocBlockQuoteLeader5"        .s:fg_base0  .s:bg_none   .s:fmt_none
    869 exe "hi! pandocBlockQuoteLeader6"        .s:fg_base01 .s:bg_none   .s:fmt_none
    870 exe "hi! pandocListMarker"               .s:fg_magenta.s:bg_none   .s:fmt_none
    871 exe "hi! pandocListReference"            .s:fg_magenta.s:bg_none   .s:fmt_undr
    872 
    873 " Definitions
    874 " ---------------------------------------------------------------------
    875 let s:fg_pdef = s:fg_violet
    876 exe "hi! pandocDefinitionBlock"              .s:fg_pdef  .s:bg_none  .s:fmt_none
    877 exe "hi! pandocDefinitionTerm"               .s:fg_pdef  .s:bg_none  .s:fmt_stnd
    878 exe "hi! pandocDefinitionIndctr"             .s:fg_pdef  .s:bg_none  .s:fmt_bold
    879 exe "hi! pandocEmphasisDefinition"           .s:fg_pdef  .s:bg_none  .s:fmt_ital
    880 exe "hi! pandocEmphasisNestedDefinition"     .s:fg_pdef  .s:bg_none  .s:fmt_bldi
    881 exe "hi! pandocStrongEmphasisDefinition"     .s:fg_pdef  .s:bg_none  .s:fmt_bold
    882 exe "hi! pandocStrongEmphasisNestedDefinition"   .s:fg_pdef.s:bg_none.s:fmt_bldi
    883 exe "hi! pandocStrongEmphasisEmphasisDefinition" .s:fg_pdef.s:bg_none.s:fmt_bldi
    884 exe "hi! pandocStrikeoutDefinition"          .s:fg_pdef  .s:bg_none  .s:fmt_revr
    885 exe "hi! pandocVerbatimInlineDefinition"     .s:fg_pdef  .s:bg_none  .s:fmt_none
    886 exe "hi! pandocSuperscriptDefinition"        .s:fg_pdef  .s:bg_none  .s:fmt_none
    887 exe "hi! pandocSubscriptDefinition"          .s:fg_pdef  .s:bg_none  .s:fmt_none
    888 
    889 " Tables
    890 " ---------------------------------------------------------------------
    891 let s:fg_ptable = s:fg_blue
    892 exe "hi! pandocTable"                        .s:fg_ptable.s:bg_none  .s:fmt_none
    893 exe "hi! pandocTableStructure"               .s:fg_ptable.s:bg_none  .s:fmt_none
    894 hi! link pandocTableStructureTop             pandocTableStructre
    895 hi! link pandocTableStructureEnd             pandocTableStructre
    896 exe "hi! pandocTableZebraLight"              .s:fg_ptable.s:bg_base03.s:fmt_none
    897 exe "hi! pandocTableZebraDark"               .s:fg_ptable.s:bg_base02.s:fmt_none
    898 exe "hi! pandocEmphasisTable"                .s:fg_ptable.s:bg_none  .s:fmt_ital
    899 exe "hi! pandocEmphasisNestedTable"          .s:fg_ptable.s:bg_none  .s:fmt_bldi
    900 exe "hi! pandocStrongEmphasisTable"          .s:fg_ptable.s:bg_none  .s:fmt_bold
    901 exe "hi! pandocStrongEmphasisNestedTable"    .s:fg_ptable.s:bg_none  .s:fmt_bldi
    902 exe "hi! pandocStrongEmphasisEmphasisTable"  .s:fg_ptable.s:bg_none  .s:fmt_bldi
    903 exe "hi! pandocStrikeoutTable"               .s:fg_ptable.s:bg_none  .s:fmt_revr
    904 exe "hi! pandocVerbatimInlineTable"          .s:fg_ptable.s:bg_none  .s:fmt_none
    905 exe "hi! pandocSuperscriptTable"             .s:fg_ptable.s:bg_none  .s:fmt_none
    906 exe "hi! pandocSubscriptTable"               .s:fg_ptable.s:bg_none  .s:fmt_none
    907 
    908 " Headings
    909 " ---------------------------------------------------------------------
    910 let s:fg_phead = s:fg_orange
    911 exe "hi! pandocHeading"                      .s:fg_phead .s:bg_none.s:fmt_bold
    912 exe "hi! pandocHeadingMarker"                .s:fg_yellow.s:bg_none.s:fmt_bold
    913 exe "hi! pandocEmphasisHeading"              .s:fg_phead .s:bg_none.s:fmt_bldi
    914 exe "hi! pandocEmphasisNestedHeading"        .s:fg_phead .s:bg_none.s:fmt_bldi
    915 exe "hi! pandocStrongEmphasisHeading"        .s:fg_phead .s:bg_none.s:fmt_bold
    916 exe "hi! pandocStrongEmphasisNestedHeading"  .s:fg_phead .s:bg_none.s:fmt_bldi
    917 exe "hi! pandocStrongEmphasisEmphasisHeading".s:fg_phead .s:bg_none.s:fmt_bldi
    918 exe "hi! pandocStrikeoutHeading"             .s:fg_phead .s:bg_none.s:fmt_revr
    919 exe "hi! pandocVerbatimInlineHeading"        .s:fg_phead .s:bg_none.s:fmt_bold
    920 exe "hi! pandocSuperscriptHeading"           .s:fg_phead .s:bg_none.s:fmt_bold
    921 exe "hi! pandocSubscriptHeading"             .s:fg_phead .s:bg_none.s:fmt_bold
    922 
    923 " Links
    924 " ---------------------------------------------------------------------
    925 exe "hi! pandocLinkDelim"                .s:fg_base01 .s:bg_none   .s:fmt_none
    926 exe "hi! pandocLinkLabel"                .s:fg_blue   .s:bg_none   .s:fmt_undr
    927 exe "hi! pandocLinkText"                 .s:fg_blue   .s:bg_none   .s:fmt_undb
    928 exe "hi! pandocLinkURL"                  .s:fg_base00 .s:bg_none   .s:fmt_undr
    929 exe "hi! pandocLinkTitle"                .s:fg_base00 .s:bg_none   .s:fmt_undi
    930 exe "hi! pandocLinkTitleDelim"           .s:fg_base01 .s:bg_none   .s:fmt_undi   .s:sp_base00
    931 exe "hi! pandocLinkDefinition"           .s:fg_cyan   .s:bg_none   .s:fmt_undr   .s:sp_base00
    932 exe "hi! pandocLinkDefinitionID"         .s:fg_blue   .s:bg_none   .s:fmt_bold
    933 exe "hi! pandocImageCaption"             .s:fg_violet .s:bg_none   .s:fmt_undb
    934 exe "hi! pandocFootnoteLink"             .s:fg_green  .s:bg_none   .s:fmt_undr
    935 exe "hi! pandocFootnoteDefLink"          .s:fg_green  .s:bg_none   .s:fmt_bold
    936 exe "hi! pandocFootnoteInline"           .s:fg_green  .s:bg_none   .s:fmt_undb
    937 exe "hi! pandocFootnote"                 .s:fg_green  .s:bg_none   .s:fmt_none
    938 exe "hi! pandocCitationDelim"            .s:fg_magenta.s:bg_none   .s:fmt_none
    939 exe "hi! pandocCitation"                 .s:fg_magenta.s:bg_none   .s:fmt_none
    940 exe "hi! pandocCitationID"               .s:fg_magenta.s:bg_none   .s:fmt_undr
    941 exe "hi! pandocCitationRef"              .s:fg_magenta.s:bg_none   .s:fmt_none
    942 
    943 " Main Styles
    944 " ---------------------------------------------------------------------
    945 exe "hi! pandocStyleDelim"               .s:fg_base01 .s:bg_none  .s:fmt_none
    946 exe "hi! pandocEmphasis"                 .s:fg_base0  .s:bg_none  .s:fmt_ital
    947 exe "hi! pandocEmphasisNested"           .s:fg_base0  .s:bg_none  .s:fmt_bldi
    948 exe "hi! pandocStrongEmphasis"           .s:fg_base0  .s:bg_none  .s:fmt_bold
    949 exe "hi! pandocStrongEmphasisNested"     .s:fg_base0  .s:bg_none  .s:fmt_bldi
    950 exe "hi! pandocStrongEmphasisEmphasis"   .s:fg_base0  .s:bg_none  .s:fmt_bldi
    951 exe "hi! pandocStrikeout"                .s:fg_base01 .s:bg_none  .s:fmt_revr
    952 exe "hi! pandocVerbatimInline"           .s:fg_yellow .s:bg_none  .s:fmt_none
    953 exe "hi! pandocSuperscript"              .s:fg_violet .s:bg_none  .s:fmt_none
    954 exe "hi! pandocSubscript"                .s:fg_violet .s:bg_none  .s:fmt_none
    955 
    956 exe "hi! pandocRule"                     .s:fg_blue   .s:bg_none  .s:fmt_bold
    957 exe "hi! pandocRuleLine"                 .s:fg_blue   .s:bg_none  .s:fmt_bold
    958 exe "hi! pandocEscapePair"               .s:fg_red    .s:bg_none  .s:fmt_bold
    959 exe "hi! pandocCitationRef"              .s:fg_magenta.s:bg_none   .s:fmt_none
    960 exe "hi! pandocNonBreakingSpace"         . s:fg_red   .s:bg_none  .s:fmt_revr
    961 hi! link pandocEscapedCharacter          pandocEscapePair
    962 hi! link pandocLineBreak                 pandocEscapePair
    963 
    964 " Embedded Code
    965 " ---------------------------------------------------------------------
    966 exe "hi! pandocMetadataDelim"            .s:fg_base01 .s:bg_none   .s:fmt_none
    967 exe "hi! pandocMetadata"                 .s:fg_blue   .s:bg_none   .s:fmt_none
    968 exe "hi! pandocMetadataKey"              .s:fg_blue   .s:bg_none   .s:fmt_none
    969 exe "hi! pandocMetadata"                 .s:fg_blue   .s:bg_none   .s:fmt_bold
    970 hi! link pandocMetadataTitle             pandocMetadata
    971 
    972 "}}}
    973 " Utility autocommand "{{{
    974 " ---------------------------------------------------------------------
    975 " In cases where Solarized is initialized inside a terminal vim session and 
    976 " then transferred to a gui session via the command `:gui`, the gui vim process 
    977 " does not re-read the colorscheme (or .vimrc for that matter) so any `has_gui` 
    978 " related code that sets gui specific values isn't executed.
    979 "
    980 " Currently, Solarized sets only the cterm or gui values for the colorscheme 
    981 " depending on gui or terminal mode. It's possible that, if the following 
    982 " autocommand method is deemed excessively poor form, that approach will be 
    983 " used again and the autocommand below will be dropped.
    984 "
    985 " However it seems relatively benign in this case to include the autocommand 
    986 " here. It fires only in cases where vim is transferring from terminal to gui 
    987 " mode (detected with the script scope s:vmode variable). It also allows for 
    988 " other potential terminal customizations that might make gui mode suboptimal.
    989 "
    990 autocmd GUIEnter * if (s:vmode != "gui") | exe "colorscheme " . g:colors_name | endif
    991 "}}}
    992 " Highlight Trailing Space {{{
    993 " Experimental: Different highlight when on cursorline
    994 function! s:SolarizedHiTrail()
    995     if g:solarized_hitrail==0
    996         hi! clear solarizedTrailingSpace
    997     else
    998         syn match solarizedTrailingSpace "\s*$"
    999         exe "hi! solarizedTrailingSpace " .s:fmt_undr .s:fg_red .s:bg_none .s:sp_red
   1000     endif
   1001 endfunction  
   1002 augroup SolarizedHiTrail
   1003     autocmd!
   1004     if g:solarized_hitrail==1
   1005         autocmd! Syntax * call s:SolarizedHiTrail()
   1006         autocmd! ColorScheme * if g:colors_name == "solarized" | call s:SolarizedHiTrail() | else | augroup! s:SolarizedHiTrail | endif
   1007     endif
   1008 augroup END
   1009 " }}}
   1010 " Menus "{{{
   1011 " ---------------------------------------------------------------------
   1012 " Turn off Solarized menu by including the following assignment in your .vimrc:
   1013 "
   1014 "    let g:solarized_menu=0
   1015 
   1016 function! s:SolarizedOptions()
   1017     new "new buffer
   1018     setf vim "vim filetype
   1019     let failed = append(0, s:defaults_list)
   1020     let failed = append(0, s:colorscheme_list)
   1021     let failed = append(0, s:options_list)
   1022     let failed = append(0, s:lazycat_list)
   1023     0 "jump back to the top
   1024 endfunction
   1025 if !exists(":SolarizedOptions")
   1026     command SolarizedOptions :call s:SolarizedOptions()
   1027 endif
   1028 
   1029 function! SolarizedMenu()
   1030     if exists("g:loaded_solarized_menu")
   1031         try
   1032             silent! aunmenu Solarized
   1033         endtry
   1034     endif
   1035     let g:loaded_solarized_menu = 1
   1036 
   1037     if g:colors_name == "solarized" && g:solarized_menu != 0
   1038 
   1039         amenu &Solarized.&Contrast.&Low\ Contrast        :let g:solarized_contrast="low"       \| colorscheme solarized<CR>
   1040         amenu &Solarized.&Contrast.&Normal\ Contrast     :let g:solarized_contrast="normal"    \| colorscheme solarized<CR>
   1041         amenu &Solarized.&Contrast.&High\ Contrast       :let g:solarized_contrast="high"      \| colorscheme solarized<CR>
   1042         an    &Solarized.&Contrast.-sep-                 <Nop>
   1043         amenu &Solarized.&Contrast.&Help:\ Contrast      :help 'solarized_contrast'<CR>
   1044 
   1045         amenu &Solarized.&Visibility.&Low\ Visibility    :let g:solarized_visibility="low"     \| colorscheme solarized<CR>
   1046         amenu &Solarized.&Visibility.&Normal\ Visibility :let g:solarized_visibility="normal"  \| colorscheme solarized<CR>
   1047         amenu &Solarized.&Visibility.&High\ Visibility   :let g:solarized_visibility="high"    \| colorscheme solarized<CR>
   1048         an    &Solarized.&Visibility.-sep-                 <Nop>
   1049         amenu &Solarized.&Visibility.&Help:\ Visibility    :help 'solarized_visibility'<CR>
   1050 
   1051         amenu &Solarized.&Background.&Toggle\ Background :ToggleBG<CR>
   1052         amenu &Solarized.&Background.&Dark\ Background   :set background=dark  \| colorscheme solarized<CR>
   1053         amenu &Solarized.&Background.&Light\ Background  :set background=light \| colorscheme solarized<CR>
   1054         an    &Solarized.&Background.-sep-               <Nop>
   1055         amenu &Solarized.&Background.&Help:\ ToggleBG     :help togglebg<CR>
   1056 
   1057         if g:solarized_bold==0 | let l:boldswitch="On" | else | let l:boldswitch="Off" | endif
   1058         exe "amenu &Solarized.&Styling.&Turn\\ Bold\\ ".l:boldswitch." :let g:solarized_bold=(abs(g:solarized_bold-1)) \\| colorscheme solarized<CR>"
   1059         if g:solarized_italic==0 | let l:italicswitch="On" | else | let l:italicswitch="Off" | endif
   1060         exe "amenu &Solarized.&Styling.&Turn\\ Italic\\ ".l:italicswitch." :let g:solarized_italic=(abs(g:solarized_italic-1)) \\| colorscheme solarized<CR>"
   1061         if g:solarized_underline==0 | let l:underlineswitch="On" | else | let l:underlineswitch="Off" | endif
   1062         exe "amenu &Solarized.&Styling.&Turn\\ Underline\\ ".l:underlineswitch." :let g:solarized_underline=(abs(g:solarized_underline-1)) \\| colorscheme solarized<CR>"
   1063 
   1064         amenu &Solarized.&Diff\ Mode.&Low\ Diff\ Mode    :let g:solarized_diffmode="low"     \| colorscheme solarized<CR>
   1065         amenu &Solarized.&Diff\ Mode.&Normal\ Diff\ Mode :let g:solarized_diffmode="normal"  \| colorscheme solarized<CR>
   1066         amenu &Solarized.&Diff\ Mode.&High\ Diff\ Mode   :let g:solarized_diffmode="high"    \| colorscheme solarized<CR>
   1067 
   1068         if g:solarized_hitrail==0 | let l:hitrailswitch="On" | else | let l:hitrailswitch="Off" | endif
   1069         exe "amenu &Solarized.&Experimental.&Turn\\ Highlight\\ Trailing\\ Spaces\\ ".l:hitrailswitch." :let g:solarized_hitrail=(abs(g:solarized_hitrail-1)) \\| colorscheme solarized<CR>"
   1070         an    &Solarized.&Experimental.-sep-               <Nop>
   1071         amenu &Solarized.&Experimental.&Help:\ HiTrail    :help 'solarized_hitrail'<CR>
   1072 
   1073         an    &Solarized.-sep1-                          <Nop>
   1074 
   1075         amenu &Solarized.&Autogenerate\ options          :SolarizedOptions<CR>
   1076 
   1077         an    &Solarized.-sep2-                          <Nop>
   1078 
   1079         amenu &Solarized.&Help.&Solarized\ Help          :help solarized<CR>
   1080         amenu &Solarized.&Help.&Toggle\ Background\ Help :help togglebg<CR>
   1081         amenu &Solarized.&Help.&Removing\ This\ Menu     :help solarized-menu<CR>
   1082 
   1083         an 9999.77 &Help.&Solarized\ Colorscheme         :help solarized<CR>
   1084         an 9999.78 &Help.&Toggle\ Background             :help togglebg<CR>
   1085         an 9999.79 &Help.-sep3-                          <Nop>
   1086 
   1087     endif
   1088 endfunction
   1089 
   1090 autocmd ColorScheme * if g:colors_name != "solarized" | silent! aunmenu Solarized | else | call SolarizedMenu() | endif
   1091 
   1092 "}}}
   1093 " License "{{{
   1094 " ---------------------------------------------------------------------
   1095 "
   1096 " Copyright (c) 2011 Ethan Schoonover
   1097 "
   1098 " Permission is hereby granted, free of charge, to any person obtaining a copy
   1099 " of this software and associated documentation files (the "Software"), to deal
   1100 " in the Software without restriction, including without limitation the rights
   1101 " to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   1102 " copies of the Software, and to permit persons to whom the Software is
   1103 " furnished to do so, subject to the following conditions:
   1104 "
   1105 " The above copyright notice and this permission notice shall be included in
   1106 " all copies or substantial portions of the Software.
   1107 "
   1108 " THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   1109 " IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   1110 " FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   1111 " AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   1112 " LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   1113 " OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   1114 " THE SOFTWARE.
   1115 "
   1116 " vim:foldmethod=marker:foldlevel=0
   1117 "}}}