1 " Mangling for terminal code ripped from desert256.
4 " no guarantees for version 5.8 and below, but this makes it stop
11 let g:colors_name="iain"
13 if has("gui_running") || &t_Co == 88 || &t_Co == 256
15 " returns an approximate grey index for the given grey level
16 fun! <SID>grey_number(x)
43 let l:n = (a:x - 8) / 10
44 let l:m = (a:x - 8) % 10
54 " returns the actual grey level represented by the grey index
55 fun! <SID>grey_level(n)
87 " returns the palette index for the given grey index
88 fun! <SID>grey_color(n)
108 " returns an approximate color index for the given color level
109 fun! <SID>rgb_number(x)
124 let l:n = (a:x - 55) / 40
125 let l:m = (a:x - 55) % 40
135 " returns the actual color level for the given color index
136 fun! <SID>rgb_level(n)
151 return 55 + (a:n * 40)
156 " returns the palette index for the given R/G/B color indices
157 fun! <SID>rgb_color(x, y, z)
159 return 16 + (a:x * 16) + (a:y * 4) + a:z
161 return 16 + (a:x * 36) + (a:y * 6) + a:z
165 " returns the palette index to approximate the given R/G/B color levels
166 fun! <SID>color(r, g, b)
167 " get the closest grey
168 let l:gx = <SID>grey_number(a:r)
169 let l:gy = <SID>grey_number(a:g)
170 let l:gz = <SID>grey_number(a:b)
172 " get the closest color
173 let l:x = <SID>rgb_number(a:r)
174 let l:y = <SID>rgb_number(a:g)
175 let l:z = <SID>rgb_number(a:b)
177 if l:gx == l:gy && l:gy == l:gz
178 " there are two possibilities
179 let l:dgr = <SID>grey_level(l:gx) - a:r
180 let l:dgg = <SID>grey_level(l:gy) - a:g
181 let l:dgb = <SID>grey_level(l:gz) - a:b
182 let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)
183 let l:dr = <SID>rgb_level(l:gx) - a:r
184 let l:dg = <SID>rgb_level(l:gy) - a:g
185 let l:db = <SID>rgb_level(l:gz) - a:b
186 let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)
189 return <SID>grey_color(l:gx)
192 return <SID>rgb_color(l:x, l:y, l:z)
195 " only one possibility
196 return <SID>rgb_color(l:x, l:y, l:z)
200 " returns the palette index to approximate the 'rrggbb' hex string
202 let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0
203 let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0
204 let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0
206 return <SID>color(l:r, l:g, l:b)
209 " sets the highlighting for the given group
210 fun! <SID>X(group, fg, bg, attr)
213 let l:fg = <SID>rgb(substitute(a:fg, '^#', '', ''))
217 exec "hi " . a:group . " guifg=" . a:fg . " ctermfg=" . l:fg
221 let l:bg = <SID>rgb(substitute(a:bg, '^#', '', ''))
225 exec "hi " . a:group . " guibg=" . a:bg . " ctermbg=" . l:bg
228 exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr
233 call <SID>X("ErrorMsg", "#ffffff", "#287eff", "")
234 call <SID>X("Visual", "#ffffff", "#8080ff", "")
235 call <SID>X("VisualNOS", "", "#8080ff", "underline")
236 "call <SID>X("Todo", "#d14a14", "#1248d1", "")
237 call <SID>X("Search", "#ffffff", "#2050d0", "")
238 call <SID>X("IncSearch", "#b0ffff", "#2050d0", "")
239 "call <SID>X("SpecialKey", "#00ffff", "", "")
240 call <SID>X("Directory", "#008bff", "", "")
241 call <SID>X("Title", "#ff00ff", "", "none")
242 call <SID>X("WarningMsg", "#ff0000", "", "")
243 "call <SID>X("WildMenu", "#ffff00", "#000000", "")
244 call <SID>X("ModeMsg", "#22cce2", "", "")
245 call <SID>X("Question", "#00ff00", "", "none")
246 "call <SID>X("NonText", "#0030ff", "", "")
247 call <SID>X("VertSplit", "#000000", "#808080", "none")
248 call <SID>X("Folded", "#808080", "#303030", "")
249 call <SID>X("FoldColumn", "#808080", "#303030", "")
250 call <SID>X("LineNr", "#90f020", "#303030", "")
251 call <SID>X("DiffAdd", "", "#008bff", "")
252 call <SID>X("DiffChange", "", "#8b008b", "")
253 call <SID>X("DiffDelete", "#008b8b", "#303030", "")
254 call <SID>X("DiffText", "#ffffff", "#ff0000", "none")
255 call <SID>X("Cursor", "#000000", "#00ff00", "")
256 call <SID>X("CursorLine", "", "#2e2e2e", "none")
257 call <SID>X("lCursor", "#000000", "#ffffff", "")
258 "call <SID>X("Comment", "#80a0ff", "", "")
259 "call <SID>X("Constant", "#ffa0a0", "", "")
260 "call <SID>X("Special", "#ffa500", "", "")
261 "call <SID>X("Identifier", "#40ffff", "", "")
262 "call <SID>X("Statement", "#ffff60", "", "none")
263 "call <SID>X("PreProc", "#ff80ff", "", "none")
264 "call <SID>X("Type", "#60ff60", "", "none")
265 call <SID>X("Ignore", "#ffffff", "", "")
268 hi def Normal guifg=#c0c0c0 guibg=#000020
270 call <SID>X("StatusLineNC", "black", "#808080", "none")
271 call <SID>X("StatusLine", "white", "#000080", "none")
272 call <SID>X("User1", "white", "#000080", "bold")
273 call <SID>X("WildMenu", "blue", "white", "bold")
274 call <SID>X("Todo", "black", "green", "bold")
275 call <SID>X("MoreMsg", "#00ff00", "", "none")
277 call <SID>X("Repeat", "yellow", "", "none")
278 call <SID>X("Label", "#90f020", "", "none")
279 call <SID>X("Conditional", "#ffff60", "", "none")
280 call <SID>X("Operator", "#e0e000", "", "none")
281 call <SID>X("Statement", "#ffff00", "", "none")
283 hi! link TabLineSel StatusLine
284 hi! link TabLine StatusLineNC
286 hi MatchParen ctermbg=blue
288 call <SID>X("Pmenu", "#ffffff", "#287eff", "")
290 hi Comment ctermfg=lightblue cterm=none guifg=#80a0ff gui=none
292 call <SID>X("Function", "darkgreen", "", "none")
293 call <SID>X("Identifier", "#40ffff", "", "none")
295 hi Character ctermfg=darkmagenta cterm=bold guifg=magenta gui=bold
296 hi String ctermfg=darkmagenta cterm=none guifg=magenta gui=none
297 call <SID>X("Float", "magenta", "", "none")
298 call <SID>X("Number", "magenta", "", "bold")
299 call <SID>X("Boolean", "darkred", "", "bold")
300 call <SID>X("Constant", "darkmagenta", "", "bold")
301 hi NonText ctermfg=blue cterm=none guifg=blue gui=none
303 call <SID>X("SpecialChar", "#ff0000", "", "none")
304 hi SpecialKey ctermfg=blue cterm=none guifg=blue gui=none
305 call <SID>X("Special", "#ff0000", "", "none")
307 call <SID>X("Include", "red", "", "none")
308 call <SID>X("Macro", "red", "", "none")
309 call <SID>X("PreCondit", "darkred", "", "none")
310 call <SID>X("PreProc", "darkred", "", "bold")
312 hi StorageClass ctermfg=green cterm=none guifg=lightgreen gui=none
313 hi Structure ctermfg=darkgreen cterm=bold guifg=green gui=bold
314 hi Type ctermfg=darkgreen cterm=none guifg=green gui=none
316 " Fix up shell stuff. XXX: Should this go in ~/.vim/after/syntax/sh.vim?
317 hi link shShellVariables Identifier
321 " Signs to highlight marks.
322 call <SID>X("MarkLine", "", "#303030", "")
323 call <SID>X("MarkDot", "red", "#303030", "")
324 call <SID>X("MarkSign", "lightblue", "#303030", "")
325 hi! link SignColumn LineNr
327 " Fix up NERDTree stuff.
328 hi link treeExecFile Type
329 hi treeLink cterm=none ctermfg=cyan gui=none guifg=cyan
330 hi link treeOpenable treeDirSlash
331 hi link treeClosable treeDirSlash
332 hi link treePart treeDirSlash
333 hi link treePartFile treeDirSlash
335 " Fix up BufExplorer stuff.
336 hi link bufExplorerHelp String
337 hi link bufExplorerSortBy Statement
338 hi link bufExplorerMapping Identifier
339 hi link bufExplorerTitle Statement
340 hi link bufExplorerActBuf Directory
341 hi link bufExplorerAltBuf String
342 hi link bufExplorerCurBuf Type
343 hi link bufExplorerUnlBuf Comment
344 hi link bufExplorerBufNbr Normal
347 " vim: set fdl=0 fdm=marker: