aboutsummaryrefslogtreecommitdiff
path: root/vim/airline_theme.vim
blob: 32582c947c09005057cafae1b46b0c72369e8187 (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
" Each theme is contained in its own file and declares variables scoped to the
" file.  These variables represent the possible "modes" that airline can
" detect.  The mode is the return value of mode(), which gets converted to a
" readable string.  The following is a list currently supported modes: normal,
" insert, replace, visual, and inactive.
"
" Each mode can also have overrides.  These are small changes to the mode that
" don't require a completely different look.  "modified" and "paste" are two
" such supported overrides.  These are simply suffixed to the major mode,
" separated by an underscore.  For example, "normal_modified" would be normal
" mode where the current buffer is modified.
"
" The theming algorithm is a 2-pass system where the mode will draw over all
" parts of the statusline, and then the override is applied after.  This means
" it is possible to specify a subset of the theme in overrides, as it will
" simply overwrite the previous colors.  If you want simultaneous overrides,
" then they will need to change different parts of the statusline so they do
" not conflict with each other.
"
" First, let's define an empty dictionary and assign it to the "palette"
" variable. The # is a separator that maps with the directory structure. If
" you get this wrong, Vim will complain loudly.
let g:airline#themes#akr#palette = {}

" First let's define some arrays. The s: is just a VimL thing for scoping the
" variables to the current script. Without this, these variables would be
" declared globally. Now let's declare some colors for normal mode and add it
" to the dictionary.  The array is in the format:
" [ guifg, guibg, ctermfg, ctermbg, opts ]. See "help attr-list" for valid
" values for the "opt" value.
let s:N1   = [ '#212121' , '#909636' , 0  , 10 ]
let s:N2   = [ '#909636' , '#212121' , 10 , 0 ]
let s:N3   = [ '#909636' , '#212121' , 10 , 0 ]
let g:airline#themes#akr#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)

" Here we define overrides for when the buffer is modified.  This will be
" applied after g:airline#themes#akr#palette.normal, hence why only certain keys are
" declared.
let g:airline#themes#akr#palette.normal_modified = {
      \ 'airline_c': [ '#212121' , '#352F6A' , 0     , 4      , ''     ] ,
      \ }

let s:I1 = [ '#E4E093' , '#352F6A' , 3  , 4  ]
let s:I2 = [ '#909636' , '#212121' , 10 , 0  ]
let s:I3 = [ '#909636' , '#212121' , 10  , 0  ]
let g:airline#themes#akr#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#akr#palette.insert_modified = {
      \ 'airline_c': [ '#212121' , '#352F6A' , 0     , 4      , ''     ] ,
      \ }
let g:airline#themes#akr#palette.insert_paste = {
      \ 'airline_a': [ s:I1[0]   , '#352F6A' , s:I1[2] , 4     , ''     ] ,
      \ }

let g:airline#themes#akr#palette.replace = copy(g:airline#themes#akr#palette.insert)
let g:airline#themes#akr#palette.replace.airline_a = [ s:I2[0]   , '#af0000' , s:I2[2] , 124     , ''     ]
let g:airline#themes#akr#palette.replace_modified = g:airline#themes#akr#palette.insert_modified


let s:V1 = [ '#E4E093' , '#8C3346' , 3 , 1 ]
let s:V2 = [ '#909636' , '#212121' , 10 , 0 ]
let s:V3 = [ '#909636' , '#212121' , 10  , 0  ]
let g:airline#themes#akr#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#akr#palette.visual_modified = {
      \ 'airline_c': [ '#212121' , '#8C3346' , 0     , 1      , ''     ] ,
      \ }


let s:IA1 = [ '#605c5a' , '#212121' , 0 , 0 , '' ]
let s:IA2 = [ '#605c5a' , '#212121' , 0 , 0 , '' ]
let s:IA3 = [ '#605c5a' , '#212121' , 0 , 0 , '' ]
let g:airline#themes#akr#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3)
let g:airline#themes#akr#palette.inactive_modified = {
      \ 'airline_c': [ '' , '' , 97 , '' , '' ] ,
      \ }


" Accents are used to give parts within a section a slightly different look or
" color. Here we are defining a "red" accent, which is used by the 'readonly'
" part by default. Only the foreground colors are specified, so the background
" colors are automatically extracted from the underlying section colors. What
" this means is that regardless of which section the part is defined in, it
" will be red instead of the section's foreground color. You can also have
" multiple parts with accents within a section.
let g:airline#themes#akr#palette.accents = {
      \ 'red': [ '#ff0000' , '' , 9 , ''  ]
      \ }


" Here we define the color map for ctrlp.  We check for the g:loaded_ctrlp
" variable so that related functionality is loaded iff the user is using
" ctrlp. Note that this is optional, and if you do not define ctrlp colors
" they will be chosen automatically from the existing palette.
if !get(g:, 'loaded_ctrlp', 0)
  finish
endif
let g:airline#themes#akr#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(
      \ [ '#909636' , '#212121' , 10 , 0  , ''     ],
      \ [ '#909636' , '#212121' , 10 , 0  , ''     ],
      \ [ '#212121' , '#909636' , 0  , 10 , 'bold' ])