]>
Commit | Line | Data |
---|---|---|
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 | "}}} |