summaryrefslogtreecommitdiffstats
path: root/vim/colors/elektranox.vim
blob: 94cdd6e1b3fa2fe4210f3d6fde0b8493186cf545 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
" Vim color file
" Maintainer:	Sebastian Reichel <sre@ring0.de>
" modified from the desert256.vim file of Henry So
" modified from the nightshade.vim file of Dave Turner
" modified from the darkblue.vim file of Bohdan Vlasyuk

" elektranox -- nice colors on a dark background

set bg=dark
hi clear
if exists("syntax_on")
	syntax reset
endif

let g:colors_name = "elektranox"

if has("gui_running") || &t_Co == 88 || &t_Co == 256
    " functions {{{
    " returns an approximate grey index for the given grey level
    fun <SID>grey_number(x)
        if &t_Co == 88
            if a:x < 23
                return 0
            elseif a:x < 69
                return 1
            elseif a:x < 103
                return 2
            elseif a:x < 127
                return 3
            elseif a:x < 150
                return 4
            elseif a:x < 173
                return 5
            elseif a:x < 196
                return 6
            elseif a:x < 219
                return 7
            elseif a:x < 243
                return 8
            else
                return 9
            endif
        else
            if a:x < 14
                return 0
            else
                let l:n = (a:x - 8) / 10
                let l:m = (a:x - 8) % 10
                if l:m < 5
                    return l:n
                else
                    return l:n + 1
                endif
            endif
        endif
    endfun

    " returns the actual grey level represented by the grey index
    fun <SID>grey_level(n)
        if &t_Co == 88
            if a:n == 0
                return 0
            elseif a:n == 1
                return 46
            elseif a:n == 2
                return 92
            elseif a:n == 3
                return 115
            elseif a:n == 4
                return 139
            elseif a:n == 5
                return 162
            elseif a:n == 6
                return 185
            elseif a:n == 7
                return 208
            elseif a:n == 8
                return 231
            else
                return 255
            endif
        else
            if a:n == 0
                return 0
            else
                return 8 + (a:n * 10)
            endif
        endif
    endfun

    " returns the palette index for the given grey index
    fun <SID>grey_color(n)
        if &t_Co == 88
            if a:n == 0
                return 16
            elseif a:n == 9
                return 79
            else
                return 79 + a:n
            endif
        else
            if a:n == 0
                return 16
            elseif a:n == 25
                return 231
            else
                return 231 + a:n
            endif
        endif
    endfun

    " returns an approximate color index for the given color level
    fun <SID>rgb_number(x)
        if &t_Co == 88
            if a:x < 69
                return 0
            elseif a:x < 172
                return 1
            elseif a:x < 230
                return 2
            else
                return 3
            endif
        else
            if a:x < 75
                return 0
            else
                let l:n = (a:x - 55) / 40
                let l:m = (a:x - 55) % 40
                if l:m < 20
                    return l:n
                else
                    return l:n + 1
                endif
            endif
        endif
    endfun

    " returns the actual color level for the given color index
    fun <SID>rgb_level(n)
        if &t_Co == 88
            if a:n == 0
                return 0
            elseif a:n == 1
                return 139
            elseif a:n == 2
                return 205
            else
                return 255
            endif
        else
            if a:n == 0
                return 0
            else
                return 55 + (a:n * 40)
            endif
        endif
    endfun

    " returns the palette index for the given R/G/B color indices
    fun <SID>rgb_color(x, y, z)
        if &t_Co == 88
            return 16 + (a:x * 16) + (a:y * 4) + a:z
        else
            return 16 + (a:x * 36) + (a:y * 6) + a:z
        endif
    endfun

    " returns the palette index to approximate the given R/G/B color levels
    fun <SID>color(r, g, b)
        " get the closest grey
        let l:gx = <SID>grey_number(a:r)
        let l:gy = <SID>grey_number(a:g)
        let l:gz = <SID>grey_number(a:b)

        " get the closest color
        let l:x = <SID>rgb_number(a:r)
        let l:y = <SID>rgb_number(a:g)
        let l:z = <SID>rgb_number(a:b)

        if l:gx == l:gy && l:gy == l:gz
            " there are two possibilities
            let l:dgr = <SID>grey_level(l:gx) - a:r
            let l:dgg = <SID>grey_level(l:gy) - a:g
            let l:dgb = <SID>grey_level(l:gz) - a:b
            let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)
            let l:dr = <SID>rgb_level(l:gx) - a:r
            let l:dg = <SID>rgb_level(l:gy) - a:g
            let l:db = <SID>rgb_level(l:gz) - a:b
            let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)
            if l:dgrey < l:drgb
                " use the grey
                return <SID>grey_color(l:gx)
            else
                " use the color
                return <SID>rgb_color(l:x, l:y, l:z)
            endif
        else
            " only one possibility
            return <SID>rgb_color(l:x, l:y, l:z)
        endif
    endfun

    " returns the palette index to approximate the 'rrggbb' hex string
    fun <SID>rgb(rgb)
        let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0
        let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0
        let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0

        return <SID>color(l:r, l:g, l:b)
    endfun

    " sets the highlighting for the given group
    fun <SID>X(group, fg, bg, attr)
        if a:fg != ""
            exec "hi " . a:group . " guifg=#" . a:fg . " ctermfg=" . <SID>rgb(a:fg)
        endif
        if a:bg != ""
            exec "hi " . a:group . " guibg=#" . a:bg . " ctermbg=" . <SID>rgb(a:bg)
        endif
        if a:attr != ""
            exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr
        endif
    endfun
    " }}}

	" gui color definition

    call <SID>X("Normal", "cccccc", "000000", "")

    " highlight groups
    call <SID>X("Cursor", "708090", "f0e68c", "")
    "CursorIM
    "Directory
    "DiffAdd
    "DiffChange
    "DiffDelete
    "DiffText
    "ErrorMsg
    call <SID>X("VertSplit", "c2bfa5", "7f7f7f", "reverse")
    call <SID>X("Folded", "ffd700", "4d4d4d", "")
    call <SID>X("FoldColumn", "d2b48c", "4d4d4d", "")
    call <SID>X("IncSearch", "708090", "f0e68c", "")
    "LineNr
    call <SID>X("ModeMsg", "daa520", "", "")
    call <SID>X("MoreMsg", "2e8b57", "", "")
    call <SID>X("NonText", "addbe7", "000000", "bold")
    call <SID>X("Question", "00ff7f", "", "")
    call <SID>X("Search", "ffffff", "D09000", "bold")
    call <SID>X("SpecialKey", "9acd32", "", "")
    call <SID>X("StatusLine", "c2bfa5", "000000", "reverse")
    call <SID>X("StatusLineNC", "c2bfa5", "7f7f7f", "reverse")
    call <SID>X("Title", "cd5c5c", "", "")
    call <SID>X("Visual", "6b8e23", "f0e68c", "reverse")
    "VisualNOS
    call <SID>X("WarningMsg", "fa8072", "", "")
    "WildMenu
    "Menu
    "Scrollbar
    "Tooltip

    " syntax highlighting groups
    call <SID>X("Comment", "8888FF", "", "")
    call <SID>X("Constant", "FF00FF", "", "bold")
    call <SID>X("String", "CB1616", "", "")
    call <SID>X("Special", "CB1616", "", "")
    call <SID>X("Identifier", "FF0000", "", "none")
    call <SID>X("Statement", "FFFF55", "", "bold")
    call <SID>X("PreProc", "007700", "", "")
    call <SID>X("Type", "55FF55", "", "bold")
    call <SID>X("Label", "00FFFF", "", "bold")
    call <SID>X("Operator", "FFFF55", "", "bold")
    call <SID>X("Number", "FF00FF", "", "bold")
    call <SID>X("Function", "00FF00", "", "bold")
    call <SID>X("IO", "FF0000", "", "bold")
    call <SID>X("Communicator", "FFFFFF", "", "bold")
    call <SID>X("UnitHeader", "00FFFF", "", "bold")
    call <SID>X("Macro", "00FF00", "", "bold")
    call <SID>X("Keyword", "FF0000", "", "bold")

    call <SID>X("DiffAdd", "00FF00", "", "bold")
    call <SID>X("DiffChange", "EEEE00", "", "bold")
    call <SID>X("DiffDelete", "CB1616", "", "bold")
    call <SID>X("DiffText", "FFFFFF", "", "bold")

    "Underlined
    call <SID>X("Ignore", "666666", "", "")
    "Error
    call <SID>X("Todo", "eeee00", "000000", "bold")
    call <SID>X("Visual", "1111DD", "", "reverse")

	" Patch files
    call <SID>X("Special", "FF0000", "", "")
	call <SID>X("Identifier", "00FF00", "", "")

    " delete functions {{{
    delf <SID>X
    delf <SID>rgb
    delf <SID>color
    delf <SID>rgb_color
    delf <SID>rgb_level
    delf <SID>rgb_number
    delf <SID>grey_color
    delf <SID>grey_level
    delf <SID>grey_number
    " }}}

else

hi Normal			ctermfg=gray ctermbg=black									guifg=#DDDDDD guibg=#111111
hi ErrorMsg			ctermfg=white ctermbg=lightblue								guifg=#FFFFFF guibg=#111111
hi Visual			ctermfg=lightblue ctermbg=fg cterm=reverse					guifg=#1111DD guibg=fg
hi VisualNOS		ctermfg=lightblue ctermbg=fg cterm=reverse,underline		guifg=#1111DD guibg=fg
hi Todo				ctermfg=Yellow ctermbg=bg cterm=bold						guifg=#FFFF55 guibg=bg
hi Search			ctermfg=white ctermbg=yellow								guifg=#000000 guibg=#FFFF55
hi IncSearch		ctermfg=yellow ctermbg=bg									guifg=#FFFF55 guibg=bg

hi SpecialKey		ctermfg=darkcyan											guifg=#008B8B guibg=bg
hi Directory		ctermfg=cyan												guifg=#00FFFF guibg=bg
hi Title			ctermfg=magenta cterm=bold									guifg=#FF00FF guibg=bg
hi WarningMsg		ctermfg=red													guifg=#FF0000 guibg=bg
hi WildMenu			ctermfg=yellow ctermbg=black cterm=none term=none			guifg=#FFFF00 guibg=#000000
hi ModeMsg			ctermfg=lightblue											guifg=#1111DD guibg=bg
hi MoreMsg			ctermfg=darkgreen											guifg=#00FF00 guibg=bg
hi Question			ctermfg=green cterm=none									guifg=#00FF00 guibg=bg
hi NonText			ctermfg=darkblue											guifg=#0042BA guibg=bg

hi StatusLine		ctermfg=blue ctermbg=gray term=none cterm=none				guifg=#000000 guibg=#888888
hi StatusLineNC		ctermfg=black ctermbg=gray term=none cterm=none				guifg=#000000 guibg=#888888
hi VertSplit		ctermfg=black ctermbg=gray term=none cterm=none				guifg=#000000 guibg=#DDDDDD

hi Folded			ctermfg=blue ctermbg=bg cterm=bold term=bold				guifg=#8888FF guibg=bg
hi FoldColumn		ctermfg=blue ctermbg=bg cterm=bold term=bold				guifg=#8888FF guibg=bg
hi LineNr			ctermfg=green cterm=none									guifg=#00FF00 guibg=bg

hi DiffAdd			term=none cterm=none										gui=none
hi DiffChange		ctermbg=magenta cterm=none									guifg=#FF00FF guibg=bg
hi DiffDelete		ctermfg=blue ctermbg=cyan									guifg=#0000FF guibg=bg
hi DiffText			cterm=bold ctermbg=red										guifg=fg guibg=#FF0000

hi Comment			ctermfg=blue term=italic									guifg=#8888FF guibg=bg
hi Constant			ctermfg=lightMagenta										guifg=#FF00FF guibg=bg
hi String			ctermfg=darkRed												guifg=#CB1616 guibg=bg
hi Special			ctermfg=darkRed												guifg=#CB1616 guibg=bg
hi Identifier		ctermfg=Red													guifg=#FF0000 guibg=bg
hi Statement		ctermfg=Yellow												guifg=#FFFF55 guibg=bg
hi PreProc			ctermfg=DarkGreen											guifg=#006400 guibg=bg
hi type				ctermfg=LightGreen											guifg=#55FF55 guibg=bg
hi Label			ctermfg=Cyan												guifg=#00FFFF guibg=bg
hi Operator			ctermfg=Yellow												guifg=#FFFF55 guibg=bg
hi Number			ctermfg=lightMagenta										guifg=#FF00FF guibg=bg
hi Function			ctermfg=Green												guifg=#00FF00 guibg=bg
hi IO				ctermfg=Red													guifg=#FF0000 guibg=bg
hi Communicator		ctermfg=Black												guifg=#FFFFFF guibg=bg
hi UnitHeader		ctermfg=Cyan												guifg=#00FFFF guibg=bg
hi Macro			ctermfg=Green												guifg=#00FF00 guibg=bg
hi Keyword			ctermfg=Red													guifg=#FF0000 guibg=bg

hi Underlined		ctermfg=White cterm=underline term=underline
hi Ignore			ctermfg=bg

" dropdown menu
hi Pmenu			ctermfg=Black ctermbg=White									guifg=#000000 guibg=#FFFFFF
hi PMenuSel			ctermfg=DarkBlue ctermbg=White								guifg=#00008B guibg=#FFFFFF

endif

" vim: set fdl=0 fdm=marker: