Skip to content

Commit dc8073c

Browse files
authored
Merge lightline + adjust lightline & airline (#72)
* add built-in lightline support Co-authored-by: adamalbrecht <[email protected]> * finish lightline merge * finish airline update * add inline doc comments to airline script functions * add back modified groups to airline * adjust maintainers + add @benknoble in README.md
1 parent 7855647 commit dc8073c

File tree

4 files changed

+177
-95
lines changed

4 files changed

+177
-95
lines changed

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66

77
## Install
88

9-
All instructions can be found at [draculatheme.com/vim](https://draculatheme.com/vim).
10-
9+
All instructions can be found at
10+
[draculatheme.com/vim](https://draculatheme.com/vim).
1111

1212
## Team
1313

14-
This theme is maintained by the following person(s) and a bunch of [awesome contributors](https://github.com/dracula/vim/graphs/contributors).
14+
This theme is maintained by the following person(s) and a bunch of
15+
[awesome contributors](https://github.com/dracula/vim/graphs/contributors).
1516

1617
[![Derek S.](https://avatars3.githubusercontent.com/u/5240018?v=3&s=70)](https://github.com/dsifford) | [![David Knoble](https://avatars0.githubusercontent.com/u/22802209?v=4&s=70)](https://github.com/benknoble)
1718
--- | ---

autoload/airline/themes/dracula.vim

Lines changed: 111 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
" Dracula vim-airline theme
1+
" Dracula Airline Theme: {{{
22
"
33
" Copyright 2016, All rights reserved
44
"
@@ -7,96 +7,115 @@
77
"
88
" @author Extrante <[email protected]>
99
" @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+
\)
96117
endif
118+
"}}}2
119+
"}}}
97120

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:
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
" =============================================================================
2+
" Filename: autoload/lightline/colorscheme/Dracula.vim
3+
" Author: adamalbrecht
4+
" License: MIT License
5+
" Last Change: 2018/04/11
6+
" =============================================================================
7+
8+
let s:black = g:dracula_palette.bg
9+
let s:gray = g:dracula_palette.selection
10+
let s:white = g:dracula_palette.fg
11+
let s:darkblue = g:dracula_palette.comment
12+
let s:cyan = g:dracula_palette.cyan
13+
let s:green = g:dracula_palette.green
14+
let s:orange = g:dracula_palette.orange
15+
let s:purple = g:dracula_palette.purple
16+
let s:red = g:dracula_palette.red
17+
let s:yellow = g:dracula_palette.yellow
18+
19+
if exists('g:lightline')
20+
21+
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
22+
let s:p.normal.left = [ [ s:black, s:purple ], [ s:cyan, s:gray ] ]
23+
let s:p.normal.right = [ [ s:black, s:purple ], [ s:white, s:darkblue ] ]
24+
let s:p.inactive.right = [ [ s:black, s:gray ], [ s:white, s:black ] ]
25+
let s:p.inactive.left = [ [ s:cyan, s:black ], [ s:white, s:black ] ]
26+
let s:p.insert.left = [ [ s:black, s:green ], [ s:cyan, s:gray ] ]
27+
let s:p.replace.left = [ [ s:black, s:red ], [ s:cyan, s:gray ] ]
28+
let s:p.visual.left = [ [ s:black, s:orange ], [ s:cyan, s:gray ] ]
29+
let s:p.normal.middle = [ [ s:white, s:gray ] ]
30+
let s:p.inactive.middle = [ [ s:white, s:gray ] ]
31+
let s:p.tabline.left = [ [ s:darkblue, s:gray ] ]
32+
let s:p.tabline.tabsel = [ [ s:cyan, s:black ] ]
33+
let s:p.tabline.middle = [ [ s:darkblue, s:gray ] ]
34+
let s:p.tabline.right = copy(s:p.normal.right)
35+
let s:p.normal.error = [ [ s:red, s:black ] ]
36+
let s:p.normal.warning = [ [ s:yellow, s:black ] ]
37+
38+
let g:lightline#colorscheme#Dracula#palette = lightline#colorscheme#flatten(s:p)
39+
40+
endif
41+
42+
" vim: fdm=marker ts=2 sts=2 sw=2:

colors/dracula.vim

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,26 @@ let s:yellow = ['#F1FA8C', 228]
5353

5454
let s:none = ['NONE', 'NONE']
5555

56+
let g:dracula_palette = {
57+
\ 'fg': s:fg,
58+
\ 'bg': s:bg,
59+
\ 'selection': s:selection,
60+
\ 'comment': s:comment,
61+
\ 'cyan': s:cyan,
62+
\ 'green': s:green,
63+
\ 'orange': s:orange,
64+
\ 'pink': s:pink,
65+
\ 'purple': s:purple,
66+
\ 'red': s:red,
67+
\ 'yellow': s:yellow,
68+
\
69+
\ 'bglighter': s:bglighter,
70+
\ 'bglight': s:bglight,
71+
\ 'bgdark': s:bgdark,
72+
\ 'bgdarker': s:bgdarker,
73+
\ 'subtle': s:subtle,
74+
\}
75+
5676
if has('nvim')
5777
let g:terminal_color_0 = '#44475A'
5878
let g:terminal_color_1 = '#DE312B'

0 commit comments

Comments
 (0)