dotfiles

=> git.r.bdr.sh
=> summary
=> tree
=> log
=> refs

dotfiles/vim/colors/desert256.vim | 10 KB

=> view raw

  1 " Vim color file
  2 " Maintainer: Henry So, Jr. 
  3 
  4 " These are the colors of the "desert" theme by Hans Fugal with a few small
  5 " modifications (namely that I lowered the intensity of the normal white and
  6 " made the normal and nontext backgrounds black), modified to work with 88-
  7 " and 256-color xterms.
  8 "
  9 " The original "desert" theme is available as part of the vim distribution or
 10 " at http://hans.fugal.net/vim/colors/.
 11 "
 12 " The real feature of this color scheme, with a wink to the "inkpot" theme, is
 13 " the programmatic approximation of the gui colors to the palettes of 88- and
 14 " 256- color xterms.  The functions that do this (folded away, for
 15 " readability) are calibrated to the colors used for Thomas E. Dickey's xterm
 16 " (version 200), which is available at http://dickey.his.com/xterm/xterm.html.
 17 "
 18 " I struggled with trying to parse the rgb.txt file to avoid the necessity of
 19 " converting color names to #rrggbb form, but decided it was just not worth
 20 " the effort.  Maybe someone seeing this may decide otherwise...
 21 
 22 set background=dark
 23 if version > 580
 24     " no guarantees for version 5.8 and below, but this makes it stop
 25     " complaining
 26     hi clear
 27     if exists("syntax_on")
 28         syntax reset
 29     endif
 30 endif
 31 let g:colors_name="desert256"
 32 
 33 if has("gui_running") || &t_Co == 88 || &t_Co == 256
 34     " functions {{{
 35     " returns an approximate grey index for the given grey level
 36     fun grey_number(x)
 37         if &t_Co == 88
 38             if a:x < 23
 39                 return 0
 40             elseif a:x < 69
 41                 return 1
 42             elseif a:x < 103
 43                 return 2
 44             elseif a:x < 127
 45                 return 3
 46             elseif a:x < 150
 47                 return 4
 48             elseif a:x < 173
 49                 return 5
 50             elseif a:x < 196
 51                 return 6
 52             elseif a:x < 219
 53                 return 7
 54             elseif a:x < 243
 55                 return 8
 56             else
 57                 return 9
 58             endif
 59         else
 60             if a:x < 14
 61                 return 0
 62             else
 63                 let l:n = (a:x - 8) / 10
 64                 let l:m = (a:x - 8) % 10
 65                 if l:m < 5
 66                     return l:n
 67                 else
 68                     return l:n + 1
 69                 endif
 70             endif
 71         endif
 72     endfun
 73 
 74     " returns the actual grey level represented by the grey index
 75     fun grey_level(n)
 76         if &t_Co == 88
 77             if a:n == 0
 78                 return 0
 79             elseif a:n == 1
 80                 return 46
 81             elseif a:n == 2
 82                 return 92
 83             elseif a:n == 3
 84                 return 115
 85             elseif a:n == 4
 86                 return 139
 87             elseif a:n == 5
 88                 return 162
 89             elseif a:n == 6
 90                 return 185
 91             elseif a:n == 7
 92                 return 208
 93             elseif a:n == 8
 94                 return 231
 95             else
 96                 return 255
 97             endif
 98         else
 99             if a:n == 0
100                 return 0
101             else
102                 return 8 + (a:n * 10)
103             endif
104         endif
105     endfun
106 
107     " returns the palette index for the given grey index
108     fun grey_color(n)
109         if &t_Co == 88
110             if a:n == 0
111                 return 16
112             elseif a:n == 9
113                 return 79
114             else
115                 return 79 + a:n
116             endif
117         else
118             if a:n == 0
119                 return 16
120             elseif a:n == 25
121                 return 231
122             else
123                 return 231 + a:n
124             endif
125         endif
126     endfun
127 
128     " returns an approximate color index for the given color level
129     fun rgb_number(x)
130         if &t_Co == 88
131             if a:x < 69
132                 return 0
133             elseif a:x < 172
134                 return 1
135             elseif a:x < 230
136                 return 2
137             else
138                 return 3
139             endif
140         else
141             if a:x < 75
142                 return 0
143             else
144                 let l:n = (a:x - 55) / 40
145                 let l:m = (a:x - 55) % 40
146                 if l:m < 20
147                     return l:n
148                 else
149                     return l:n + 1
150                 endif
151             endif
152         endif
153     endfun
154 
155     " returns the actual color level for the given color index
156     fun rgb_level(n)
157         if &t_Co == 88
158             if a:n == 0
159                 return 0
160             elseif a:n == 1
161                 return 139
162             elseif a:n == 2
163                 return 205
164             else
165                 return 255
166             endif
167         else
168             if a:n == 0
169                 return 0
170             else
171                 return 55 + (a:n * 40)
172             endif
173         endif
174     endfun
175 
176     " returns the palette index for the given R/G/B color indices
177     fun rgb_color(x, y, z)
178         if &t_Co == 88
179             return 16 + (a:x * 16) + (a:y * 4) + a:z
180         else
181             return 16 + (a:x * 36) + (a:y * 6) + a:z
182         endif
183     endfun
184 
185     " returns the palette index to approximate the given R/G/B color levels
186     fun color(r, g, b)
187         " get the closest grey
188         let l:gx = grey_number(a:r)
189         let l:gy = grey_number(a:g)
190         let l:gz = grey_number(a:b)
191 
192         " get the closest color
193         let l:x = rgb_number(a:r)
194         let l:y = rgb_number(a:g)
195         let l:z = rgb_number(a:b)
196 
197         if l:gx == l:gy && l:gy == l:gz
198             " there are two possibilities
199             let l:dgr = grey_level(l:gx) - a:r
200             let l:dgg = grey_level(l:gy) - a:g
201             let l:dgb = grey_level(l:gz) - a:b
202             let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)
203             let l:dr = rgb_level(l:gx) - a:r
204             let l:dg = rgb_level(l:gy) - a:g
205             let l:db = rgb_level(l:gz) - a:b
206             let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)
207             if l:dgrey < l:drgb
208                 " use the grey
209                 return grey_color(l:gx)
210             else
211                 " use the color
212                 return rgb_color(l:x, l:y, l:z)
213             endif
214         else
215             " only one possibility
216             return rgb_color(l:x, l:y, l:z)
217         endif
218     endfun
219 
220     " returns the palette index to approximate the 'rrggbb' hex string
221     fun rgb(rgb)
222         let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0
223         let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0
224         let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0
225 
226         return color(l:r, l:g, l:b)
227     endfun
228 
229     " sets the highlighting for the given group
230     fun X(group, fg, bg, attr)
231         if a:fg != ""
232             exec "hi " . a:group . " guifg=#" . a:fg . " ctermfg=" . rgb(a:fg)
233         endif
234         if a:bg != ""
235             exec "hi " . a:group . " guibg=#" . a:bg . " ctermbg=" . rgb(a:bg)
236         endif
237         if a:attr != ""
238             exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr
239         endif
240     endfun
241     " }}}
242 
243     call X("Normal", "cccccc", "000000", "")
244 
245     " highlight groups
246     call X("Cursor", "708090", "f0e68c", "")
247     "CursorIM
248     "Directory
249     "DiffAdd
250     "DiffChange
251     "DiffDelete
252     "DiffText
253     "ErrorMsg
254     call X("VertSplit", "c2bfa5", "7f7f7f", "reverse")
255     call X("Folded", "ffd700", "4d4d4d", "")
256     call X("FoldColumn", "d2b48c", "4d4d4d", "")
257     call X("IncSearch", "708090", "f0e68c", "")
258     "LineNr
259     call X("ModeMsg", "daa520", "", "")
260     call X("MoreMsg", "2e8b57", "", "")
261     call X("NonText", "addbe7", "000000", "bold")
262     call X("Question", "00ff7f", "", "")
263     call X("Search", "f5deb3", "cd853f", "")
264     call X("SpecialKey", "9acd32", "", "")
265     call X("StatusLine", "c2bfa5", "000000", "reverse")
266     call X("StatusLineNC", "c2bfa5", "7f7f7f", "reverse")
267     call X("Title", "cd5c5c", "", "")
268     call X("Visual", "6b8e23", "f0e68c", "reverse")
269     "VisualNOS
270     call X("WarningMsg", "fa8072", "", "")
271     "WildMenu
272     "Menu
273     "Scrollbar
274     "Tooltip
275 
276     " syntax highlighting groups
277     call X("Comment", "87ceeb", "", "")
278     call X("Constant", "ffa0a0", "", "")
279     call X("Identifier", "98fb98", "", "none")
280     call X("Statement", "f0e68c", "", "bold")
281     call X("PreProc", "cd5c5c", "", "")
282     call X("Type", "bdb76b", "", "bold")
283     call X("Special", "ffdead", "", "")
284     "Underlined
285     call X("Ignore", "666666", "", "")
286     "Error
287     call X("Todo", "ff4500", "eeee00", "")
288 
289     " delete functions {{{
290     delf X
291     delf rgb
292     delf color
293     delf rgb_color
294     delf rgb_level
295     delf rgb_number
296     delf grey_color
297     delf grey_level
298     delf grey_number
299     " }}}
300 else
301     " color terminal definitions
302     hi SpecialKey    ctermfg=darkgreen
303     hi NonText       cterm=bold ctermfg=darkblue
304     hi Directory     ctermfg=darkcyan
305     hi ErrorMsg      cterm=bold ctermfg=7 ctermbg=1
306     hi IncSearch     cterm=NONE ctermfg=yellow ctermbg=green
307     hi Search        cterm=NONE ctermfg=grey ctermbg=blue
308     hi MoreMsg       ctermfg=darkgreen
309     hi ModeMsg       cterm=NONE ctermfg=brown
310     hi LineNr        ctermfg=3
311     hi Question      ctermfg=green
312     hi StatusLine    cterm=bold,reverse
313     hi StatusLineNC  cterm=reverse
314     hi VertSplit     cterm=reverse
315     hi Title         ctermfg=5
316     hi Visual        cterm=reverse
317     hi VisualNOS     cterm=bold,underline
318     hi WarningMsg    ctermfg=1
319     hi WildMenu      ctermfg=0 ctermbg=3
320     hi Folded        ctermfg=darkgrey ctermbg=NONE
321     hi FoldColumn    ctermfg=darkgrey ctermbg=NONE
322     hi DiffAdd       ctermbg=4
323     hi DiffChange    ctermbg=5
324     hi DiffDelete    cterm=bold ctermfg=4 ctermbg=6
325     hi DiffText      cterm=bold ctermbg=1
326     hi Comment       ctermfg=darkcyan
327     hi Constant      ctermfg=brown
328     hi Special       ctermfg=5
329     hi Identifier    ctermfg=6
330     hi Statement     ctermfg=3
331     hi PreProc       ctermfg=5
332     hi Type          ctermfg=2
333     hi Underlined    cterm=underline ctermfg=5
334     hi Ignore        ctermfg=darkgrey
335     hi Error         cterm=bold ctermfg=7 ctermbg=1
336 endif
337 
338 " vim: set fdl=0 fdm=marker:
Proxy Information
Original URL
gemini://r.bdr.sh/git/dotfiles/tree/5f38a4437eb7f6cbe4d1b4e600c6c3112839acd3/vim/colors/desert256.vim
Status Code
Success (20)
Meta
text/gemini; charset=utf-8
Capsule Response Time
617.263386 milliseconds
Gemini-to-HTML Time
0.478304 milliseconds

This content has been proxied by September (ba2dc).