|
1 |
| -" Dracula vim-airline theme |
| 1 | +" Dracula Airline Theme: {{{ |
2 | 2 | "
|
3 | 3 | " Copyright 2016, All rights reserved
|
4 | 4 | "
|
|
7 | 7 | "
|
8 | 8 | " @author Extrante <[email protected]>
|
9 | 9 | " @author Zeno Rocha <[email protected]>
|
10 |
| - |
11 |
| -" Color palette |
12 |
| -let s:gui01 = "#44475a" |
13 |
| -let s:gui02 = "#5f6a8e" |
14 |
| -let s:gui03 = "#ffb86c" |
15 |
| -let s:gui04 = "#bd93f9" |
16 |
| -let s:gui05 = "#ff5555" |
17 |
| -let s:gui06 = "#f1fa8c" |
18 |
| -let s:gui07 = "#50fa7b" |
19 |
| -let s:gui08 = "#bd93f9" |
20 |
| -let s:cterm01 = "236" |
21 |
| -let s:cterm02 = "61" |
22 |
| -let s:cterm03 = "215" |
23 |
| -let s:cterm04 = "141" |
24 |
| -let s:cterm05 = "160" |
25 |
| -let s:cterm06 = "228" |
26 |
| -let s:cterm07 = "84" |
27 |
| -let s:cterm08 = "141" |
28 |
| - |
29 |
| -let s:guiWhite = "#f8f8f2" |
30 |
| -let s:guiBlack = "#282a36" |
31 |
| -let s:ctermWhite = "15" |
32 |
| -let s:ctermBlack = "16" |
33 |
| - |
34 |
| -let s:ctermChangedColor = "59" |
35 |
| -let s:guiChangedColor = "#5f5f5f" |
36 |
| - |
37 |
| -" Normal mode |
38 |
| -let s:N1 = [ s:guiBlack , s:gui08 , s:ctermBlack , s:cterm08 ] |
39 |
| -let s:N2 = [ s:guiWhite , s:gui02 , s:ctermWhite , s:cterm02 ] |
40 |
| -let s:N3 = [ s:guiWhite , s:gui01 , s:ctermWhite , s:cterm01 ] |
41 |
| - |
42 |
| -" Insert mode |
43 |
| -let s:I1 = [ s:guiBlack , s:gui07 , s:ctermBlack , s:cterm07 ] |
44 |
| -let s:I2 = [ s:guiWhite , s:gui02 , s:ctermWhite , s:cterm02 ] |
45 |
| -let s:I3 = [ s:guiWhite , s:gui01 , s:ctermWhite , s:cterm01 ] |
46 |
| - |
47 |
| -" Visual mode |
48 |
| -let s:V1 = [ s:guiBlack , s:gui06 , s:ctermBlack , s:cterm06 ] |
49 |
| -let s:V2 = [ s:guiWhite , s:gui02 , s:ctermWhite , s:cterm02 ] |
50 |
| -let s:V3 = [ s:guiWhite , s:gui01 , s:ctermWhite, s:cterm01 ] |
51 |
| - |
52 |
| -" Replace mode |
53 |
| -let s:R1 = [ s:guiBlack , s:gui05 , s:ctermWhite, s:cterm05 ] |
54 |
| -let s:R2 = [ s:guiWhite , s:gui02 , s:ctermWhite, s:cterm02 ] |
55 |
| -let s:R3 = [ s:guiWhite , s:gui01 , s:ctermWhite, s:cterm01 ] |
56 |
| - |
57 |
| -" File changed |
58 |
| -let s:changed = [ s:guiWhite , s:guiChangedColor , s:ctermWhite , s:ctermChangedColor ] |
59 |
| - |
60 |
| -let g:airline#themes#dracula#palette = {} |
61 |
| -let g:airline#themes#dracula#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3) |
62 |
| -let g:airline#themes#dracula#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3) |
63 |
| -let g:airline#themes#dracula#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3) |
64 |
| -let g:airline#themes#dracula#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3) |
65 |
| -let g:airline#themes#dracula#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3) |
66 |
| - |
67 |
| -" Inactive mode |
68 |
| -let s:IN1 = [ s:gui04 , s:guiWhite , s:cterm04 , s:ctermWhite ] |
69 |
| -let s:IN2 = [ s:gui04 , s:gui01 , s:cterm04 , s:cterm01 ] |
70 |
| -let s:IA = [ s:IN1[1] , s:IN2[1] , s:IN1[3] , s:IN2[3] , '' ] |
71 |
| -let g:airline#themes#dracula#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA) |
72 |
| - |
73 |
| -" Warning info |
74 |
| -let s:WARNING = [ s:guiBlack, s:gui03, s:ctermBlack, s:cterm03 ] |
75 |
| -let s:ERROR = [ s:guiWhite, s:gui05, s:ctermWhite, s:cterm05 ] |
76 |
| - |
77 |
| -let g:airline#themes#dracula#palette.normal.airline_warning = s:WARNING |
78 |
| -let g:airline#themes#dracula#palette.insert.airline_warning = s:WARNING |
79 |
| -let g:airline#themes#dracula#palette.visual.airline_warning = s:WARNING |
80 |
| -let g:airline#themes#dracula#palette.replace.airline_warning = s:WARNING |
81 |
| - |
82 |
| -let g:airline#themes#dracula#palette.normal.airline_error = s:ERROR |
83 |
| -let g:airline#themes#dracula#palette.insert.airline_error = s:ERROR |
84 |
| -let g:airline#themes#dracula#palette.visual.airline_error = s:ERROR |
85 |
| -let g:airline#themes#dracula#palette.replace.airline_error = s:ERROR |
86 |
| - |
87 |
| -" File modified and not saved |
88 |
| -let g:airline#themes#dracula#palette.normal_modified = airline#themes#generate_color_map(s:N1, s:N2, s:changed) |
89 |
| -let g:airline#themes#dracula#palette.insert_modified = airline#themes#generate_color_map(s:I1, s:I2, s:changed) |
90 |
| -let g:airline#themes#dracula#palette.replace_modified = airline#themes#generate_color_map(s:R1, s:R2, s:changed) |
91 |
| -let g:airline#themes#dracula#palette.visual_modified = airline#themes#generate_color_map(s:V1, s:V2, s:changed) |
92 |
| - |
93 |
| -" CtrlP |
94 |
| -if !get(g:, 'loaded_ctrlp', 0) |
95 |
| - finish |
| 10 | +"}}} |
| 11 | +" Helpers: {{{ |
| 12 | + |
| 13 | +" Takes a foreground color name, background color name, and optionally one or |
| 14 | +" more attr-list items as input, transforms it to the format accepted by |
| 15 | +" airline#themes#generate_color_map and returns that value |
| 16 | +func! s:clr(fg, bg, ...) |
| 17 | + let l:fg = get(g:dracula_palette, a:fg) |
| 18 | + let l:bg = get(g:dracula_palette, a:bg) |
| 19 | + if ! type(l:fg) == 3 |
| 20 | + echoerr 'Color undefined in dracula_palette: ' . a:fg |
| 21 | + elseif ! type(l:bg) == 3 |
| 22 | + echoerr 'Color undefined in dracula_palette: ' . a:fg |
| 23 | + endif |
| 24 | + return [ l:fg[0], l:bg[0], l:fg[1], l:bg[1] ] + filter(copy(a:000), 'type(v:val) == 1 && len(v:val) > 0') |
| 25 | +endfunc |
| 26 | + |
| 27 | +" Takes three ['fg', 'bg'] color lists and optionally a dictionary of extra |
| 28 | +" key-value pairs and returns the value generated by |
| 29 | +" airline#themes#generate_color_map after optionally merging the dictionary of |
| 30 | +" extra key-value pairs. |
| 31 | +" |
| 32 | +" a:a -> airline_a, airline_x |
| 33 | +" a:b -> airline_b, airline_y |
| 34 | +" a:c -> airline_c, airline_z |
| 35 | +func! s:color_map(a, b, c, ...) |
| 36 | + if a:0 == 0 |
| 37 | + return call('airline#themes#generate_color_map', [call('s:clr', a:a), call('s:clr', a:b), call('s:clr', a:c)]) |
| 38 | + else |
| 39 | + return call('extend', [ call('airline#themes#generate_color_map', [call('s:clr', a:a), call('s:clr', a:b), call('s:clr', a:c)]) ] + a:000) |
| 40 | + endif |
| 41 | +endfunc |
| 42 | + |
| 43 | +"}}} |
| 44 | + |
| 45 | +let g:airline#themes#dracula#palette = { |
| 46 | +\ 'normal': s:color_map( |
| 47 | +\ ['bg', 'purple'], |
| 48 | +\ ['fg', 'comment'], |
| 49 | +\ ['fg', 'selection'], |
| 50 | +\ { |
| 51 | +\ 'airline_warning': s:clr('bg', 'orange'), |
| 52 | +\ 'airline_error': s:clr('bg', 'red'), |
| 53 | +\ }, |
| 54 | +\ ), |
| 55 | +\ 'normal_modified': s:color_map( |
| 56 | +\ ['bg', 'purple'], |
| 57 | +\ ['fg', 'comment'], |
| 58 | +\ ['fg', 'bgdark'], |
| 59 | +\ ), |
| 60 | +\ 'insert': s:color_map( |
| 61 | +\ ['bg', 'green'], |
| 62 | +\ ['fg', 'comment'], |
| 63 | +\ ['fg', 'selection'], |
| 64 | +\ { |
| 65 | +\ 'airline_warning': s:clr('bg', 'orange'), |
| 66 | +\ 'airline_error': s:clr('bg', 'red'), |
| 67 | +\ }, |
| 68 | +\ ), |
| 69 | +\ 'insert_modified': s:color_map( |
| 70 | +\ ['bg', 'green'], |
| 71 | +\ ['fg', 'comment'], |
| 72 | +\ ['fg', 'bgdark'], |
| 73 | +\ ), |
| 74 | +\ 'replace': s:color_map( |
| 75 | +\ ['bg', 'orange'], |
| 76 | +\ ['fg', 'comment'], |
| 77 | +\ ['fg', 'selection'], |
| 78 | +\ { |
| 79 | +\ 'airline_warning': s:clr('bg', 'orange'), |
| 80 | +\ 'airline_error': s:clr('bg', 'red'), |
| 81 | +\ }, |
| 82 | +\ ), |
| 83 | +\ 'replace_modified': s:color_map( |
| 84 | +\ ['bg', 'orange'], |
| 85 | +\ ['fg', 'comment'], |
| 86 | +\ ['fg', 'bgdark'], |
| 87 | +\ ), |
| 88 | +\ 'visual': s:color_map( |
| 89 | +\ ['bg', 'yellow'], |
| 90 | +\ ['fg', 'comment'], |
| 91 | +\ ['fg', 'selection'], |
| 92 | +\ { |
| 93 | +\ 'airline_warning': s:clr('bg', 'orange'), |
| 94 | +\ 'airline_error': s:clr('bg', 'red'), |
| 95 | +\ }, |
| 96 | +\ ), |
| 97 | +\ 'visual_modified': s:color_map( |
| 98 | +\ ['bg', 'yellow'], |
| 99 | +\ ['fg', 'comment'], |
| 100 | +\ ['fg', 'bgdark'], |
| 101 | +\ ), |
| 102 | +\ 'inactive': s:color_map( |
| 103 | +\ ['fg', 'selection'], |
| 104 | +\ ['fg', 'selection'], |
| 105 | +\ ['fg', 'selection'], |
| 106 | +\ ), |
| 107 | +\} |
| 108 | + |
| 109 | +" Extensions: {{{ |
| 110 | +" CtrlP: {{{2 |
| 111 | +if exists('g:loaded_ctrlp') |
| 112 | + let g:airline#themes#dracula#palette.ctrlp = airline#extensions#ctrlp#generate_color_map( |
| 113 | + \ s:clr('fg', 'selection'), |
| 114 | + \ s:clr('fg', 'comment'), |
| 115 | + \ s:clr('fg', 'purple'), |
| 116 | + \) |
96 | 117 | endif
|
| 118 | +"}}}2 |
| 119 | +"}}} |
97 | 120 |
|
98 |
| -let s:CP1 = [ s:guiWhite , s:gui01 , s:ctermWhite , s:cterm01 ] |
99 |
| -let s:CP2 = [ s:guiWhite , s:gui02 , s:ctermWhite , s:cterm02 ] |
100 |
| -let s:CP3 = [ s:guiWhite , s:gui08 , s:ctermWhite , s:cterm08 ] |
101 |
| - |
102 |
| -let g:airline#themes#dracula#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(s:CP1, s:CP2, s:CP3) |
| 121 | +" vim: fdm=marker ts=2 sts=2 sw=2: |
0 commit comments