Преглед изворни кода

build brand new palette dictionary

Pavel Pertsev пре 10 година
родитељ
комит
302470272b
1 измењених фајлова са 153 додато и 93 уклоњено
  1. 153 93
      colors/gruvbox.vim

+ 153 - 93
colors/gruvbox.vim

@@ -67,6 +67,8 @@ endif
 
 if !exists('g:gruvbox_contrast')
   let g:gruvbox_contrast='medium'
+else
+  echo 'g:gruvbox_contrast is deprecated; use g:gruvbox_contrast_light and g:gruvbox_contrast_dark instead'
 endif
 
 if !exists('g:gruvbox_contrast_dark')
@@ -82,6 +84,58 @@ let s:is_dark=(&background == 'dark')
 " }}}
 " Palette: {{{
 
+" setup palette dictionary
+let s:gb = {}
+
+" fill it with absolute colors
+let s:gb.dark0_hard  = ['#1d2021', 234]     " 29-32-33
+let s:gb.dark0       = ['#282828', 235]     " 40-40-40
+let s:gb.dark0_soft  = ['#32302f', 236]     " 50-48-47
+let s:gb.dark1       = ['#3c3836', 237]     " 60-56-54
+let s:gb.dark2       = ['#504945', 239]     " 80-73-69
+let s:gb.dark3       = ['#665c54', 241]     " 102-92-84
+let s:gb.dark4       = ['#7c6f64', 243]     " 124-111-100
+let s:gb.dark4_256   = ['#7c6f64', 243]     " 124-111-100
+
+let s:gb.gray_245    = ['#928374', 245]     " 146-131-116
+let s:gb.gray_244    = ['#928374', 244]     " 146-131-116
+
+let s:gb.light0_hard = ['#f9f5d7', 230]     " 249-245-215
+let s:gb.light0      = ['#fdf4c1', 229]     " 253-244-193
+let s:gb.light0_soft = ['#f2e5bc', 228]     " 242-229-188
+let s:gb.light1      = ['#ebdbb2', 223]     " 235-219-178
+let s:gb.light2      = ['#d5c4a1', 250]     " 213-196-161
+let s:gb.light3      = ['#bdae93', 248]     " 189-174-147
+let s:gb.light4      = ['#a89984', 246]     " 168-153-132
+let s:gb.light4_256  = ['#a89984', 246]     " 168-153-132
+
+let s:gb.bright_red     = ['#fb4934', 167]     " 251-73-52
+let s:gb.bright_green   = ['#b8bb26', 142]     " 184-187-38
+let s:gb.bright_yellow  = ['#fabd2f', 214]     " 250-189-47
+let s:gb.bright_blue    = ['#83a598', 109]     " 131-165-152
+let s:gb.bright_purple  = ['#d3869b', 175]     " 211-134-155
+let s:gb.bright_aqua    = ['#8ec07c', 108]     " 142-192-124
+let s:gb.bright_orange  = ['#fe8019', 208]     " 254-128-25
+
+let s:gb.neutral_red    = ['#cc241d', 124]     " 204-36-29
+let s:gb.neutral_green  = ['#98971a', 106]     " 152-151-26
+let s:gb.neutral_yellow = ['#d79921', 172]     " 215-153-33
+let s:gb.neutral_blue   = ['#458588', 66]      " 69-133-136
+let s:gb.neutral_purple = ['#b16286', 132]     " 177-98-134
+let s:gb.neutral_aqua   = ['#689d6a', 72]      " 104-157-106
+let s:gb.neutral_orange = ['#d65d0e', 166]     " 214-93-14
+
+let s:gb.faded_red      = ['#9d0006', 88]      " 157-0-6
+let s:gb.faded_green    = ['#79740e', 100]     " 121-116-14
+let s:gb.faded_yellow   = ['#b57614', 136]     " 181-118-20
+let s:gb.faded_blue     = ['#076678', 24]      " 7-102-120
+let s:gb.faded_purple   = ['#8f3f71', 96]      " 143-63-113
+let s:gb.faded_aqua     = ['#427b58', 66]      " 66-123-88
+let s:gb.faded_orange   = ['#af3a03', 130]     " 175-58-3
+
+" }}}
+" Setup Emphasis: {{{
+
 let s:bold = 'bold,'
 if g:gruvbox_bold == 0
   let s:bold = ''
@@ -107,112 +161,118 @@ if g:gruvbox_inverse == 0
   let s:inverse = ''
 endif
 
-if s:is_dark
-  let s:bg0  = ['#282828', 235]     " 40-40-40
-  let s:bg1  = ['#3c3836', 237]     " 60-56-54
-  let s:bg2  = ['#504945', 239]     " 80-73-69
-  let s:bg3  = ['#665c54', 241]     " 102-92-84
-  let s:bg4  = ['#7c6f64', 243]     " 124-111-100
-
-  let s:gray = ['#928374', 245]     " 146-131-116
-
-  let s:fg0 = ['#fbf1c7', 229]     " 251-241-199
-  let s:fg1 = ['#ebdbb2', 223]     " 235-219-178
-  let s:fg2 = ['#d5c4a1', 250]     " 213-196-161
-  let s:fg3 = ['#bdae93', 248]     " 189-174-147
-  let s:fg4 = ['#a89984', 246]     " 168-153-132
-
-  let s:fg4_256 = ['#a89984', 246] " 168-153-132
-
-  let s:red    = ['#fb4934', 167]     " 251-73-52
-  let s:green  = ['#b8bb26', 142]     " 184-187-38
-  let s:yellow = ['#fabd2f', 214]     " 250-189-47
-  let s:blue   = ['#83a598', 109]     " 131-165-152
-  let s:purple = ['#d3869b', 175]     " 211-134-155
-  let s:aqua   = ['#8ec07c', 108]     " 142-192-124
-  let s:orange = ['#fe8019', 208]     " 254-128-25
-
-  if g:gruvbox_termcolors == 16
-    let s:bg0  = ['#282828', 0]
-    let s:fg4 = ['#a89984', 7]
-    let s:gray = ['#928374', 8]
-    let s:red    = ['#fb4934', 9]
-    let s:green  = ['#b8bb26', 10]
-    let s:yellow = ['#fabd2f', 11]
-    let s:blue   = ['#83a598', 12]
-    let s:purple = ['#d3869b', 13]
-    let s:aqua   = ['#8ec07c', 14]
-    let s:fg1 = ['#ebdbb2', 15]
-  endif
-
-  if g:gruvbox_contrast == 'soft'
-    let s:bg0  = ['#32302f', 236]     " 50-48-47
-  elseif g:gruvbox_contrast == 'hard'
-    let s:bg0  = ['#1d2021', 234]     " 29-32-33
-  endif
+" }}}
+" Setup Colors: {{{
 
+" determine relative colors
+if s:is_dark
+  let s:bg0  = s:gb.dark0
   if g:gruvbox_contrast_dark == 'soft'
-    let s:bg0  = ['#32302f', 236]     " 50-48-47
+    let s:bg0  = s:gb.dark0_soft
   elseif g:gruvbox_contrast_dark == 'hard'
-    let s:bg0  = ['#1d2021', 234]     " 29-32-33
-  endif
-else
-  let s:bg0  = ['#fbf1c7', 229]     " 251-241-199
-  let s:bg1  = ['#ebdbb2', 223]     " 235-219-178
-  let s:bg2  = ['#d5c4a1', 250]     " 213-196-161
-  let s:bg3  = ['#bdae93', 248]     " 189-174-147
-  let s:bg4  = ['#a89984', 246]     " 168-153-132
-
-  let s:gray = ['#928374', 244]     " 146-131-116
-
-  let s:fg0 = ['#282828', 235]     " 40-40-40
-  let s:fg1 = ['#3c3836', 237]     " 60-56-54
-  let s:fg2 = ['#504945', 239]     " 80-73-69
-  let s:fg3 = ['#665c54', 241]     " 102-92-84
-  let s:fg4 = ['#7c6f64', 243]     " 124-111-100
-
-  let s:fg4_256 = ['#7c6f64', 243] " 124-111-100
-
-  let s:red    = ['#9d0006', 88]      " 157-0-6
-  let s:green  = ['#79740e', 100]     " 121-116-14
-  let s:yellow = ['#b57614', 136]     " 181-118-20
-  let s:blue   = ['#076678', 24]      " 7-102-120
-  let s:purple = ['#8f3f71', 96]      " 143-63-113
-  let s:aqua   = ['#427b58', 66]      " 66-123-88
-  let s:orange = ['#af3a03', 130]     " 175-58-3
-
-  if g:gruvbox_termcolors == 16
-    let s:bg0  = ['#fbf1c7', 0]
-    let s:fg4 = ['#7c6f64', 7]
-    let s:gray = ['#928374', 8]
-    let s:red    = ['#9d0006', 9]
-    let s:green  = ['#79740e', 10]
-    let s:yellow = ['#b57614', 11]
-    let s:blue   = ['#076678', 12]
-    let s:purple = ['#8f3f71', 13]
-    let s:aqua   = ['#427b58', 14]
-    let s:fg1 = ['#3c3836', 15]
+    let s:bg0  = s:gb.dark0_hard
   endif
 
-  if g:gruvbox_contrast == 'soft'
-    let s:bg0  = ['#f2e5bc', 228]     " 242-229-188
-  elseif g:gruvbox_contrast == 'hard'
-    let s:bg0  = ['#f9f5d7', 230]     " 249-245-215
-  endif
+  let s:bg1  = s:gb.dark1
+  let s:bg2  = s:gb.dark2
+  let s:bg3  = s:gb.dark3
+  let s:bg4  = s:gb.dark4
+
+  let s:gray = s:gb.gray_245
+
+  let s:fg0 = s:gb.light0
+  let s:fg1 = s:gb.light1
+  let s:fg2 = s:gb.light2
+  let s:fg3 = s:gb.light3
+  let s:fg4 = s:gb.light4
 
+  let s:fg4_256 = s:gb.light4_256
+
+  let s:red    = s:gb.bright_red
+  let s:green  = s:gb.bright_green
+  let s:yellow = s:gb.bright_yellow
+  let s:blue   = s:gb.bright_blue
+  let s:purple = s:gb.bright_purple
+  let s:aqua   = s:gb.bright_aqua
+  let s:orange = s:gb.bright_orange
+else
+  let s:bg0  = s:gb.light0
   if g:gruvbox_contrast_light == 'soft'
-    let s:bg0  = ['#f2e5bc', 228]     " 242-229-188
+    let s:bg0  = s:gb.light0_soft
   elseif g:gruvbox_contrast_light == 'hard'
-    let s:bg0  = ['#f9f5d7', 230]     " 249-245-215
+    let s:bg0  = s:gb.light0_hard
   endif
+
+  let s:bg1  = s:gb.light1
+  let s:bg2  = s:gb.light2
+  let s:bg3  = s:gb.light3
+  let s:bg4  = s:gb.light4
+
+  let s:gray = s:gb.gray_244
+
+  let s:fg0 = s:gb.dark0
+  let s:fg1 = s:gb.dark1
+  let s:fg2 = s:gb.dark2
+  let s:fg3 = s:gb.dark3
+  let s:fg4 = s:gb.dark4
+
+  let s:fg4_256 = s:gb.dark4_256
+
+  let s:red    = s:gb.faded_red
+  let s:green  = s:gb.faded_green
+  let s:yellow = s:gb.faded_yellow
+  let s:blue   = s:gb.faded_blue
+  let s:purple = s:gb.faded_purple
+  let s:aqua   = s:gb.faded_aqua
+  let s:orange = s:gb.faded_orange
 endif
 
+" reset to 16 colors fallback
+if g:gruvbox_termcolors == 16
+  let s:bg0[1]    = 0
+  let s:fg4[1]    = 7
+  let s:gray[1]   = 8
+  let s:red[1]    = 9
+  let s:green[1]  = 10
+  let s:yellow[1] = 11
+  let s:blue[1]   = 12
+  let s:purple[1] = 13
+  let s:aqua[1]   = 14
+  let s:fg1[1]    = 15
+endif
+
+" save current relative colors back to palette dictionary
+let s:gb.bg0 = s:bg0
+let s:gb.bg1 = s:bg1
+let s:gb.bg2 = s:bg2
+let s:gb.bg3 = s:bg3
+let s:gb.bg4 = s:bg4
+
+let s:gb.gray = s:gray
+
+let s:gb.fg0 = s:fg0
+let s:gb.fg1 = s:fg1
+let s:gb.fg2 = s:fg2
+let s:gb.fg3 = s:fg3
+let s:gb.fg4 = s:fg4
+
+let s:gb.fg4_256 = s:fg4_256
+
+let s:gb.red    = s:red
+let s:gb.green  = s:green
+let s:gb.yellow = s:yellow
+let s:gb.blue   = s:blue
+let s:gb.purple = s:purple
+let s:gb.aqua   = s:aqua
+let s:gb.orange = s:orange
+
 " }}}
+
 " Overload Setting: {{{
 
 let s:hls_cursor = s:orange
 if exists('g:gruvbox_hls_cursor')
-  let s:hls_cursor = g:gruvbox_hls_cursor
+  let s:hls_cursor = get(s:gb, g:gruvbox_hls_cursor)
 endif
 
 let s:number_column = s:bg4
@@ -225,18 +285,18 @@ else
   let g:gitgutter_override_sign_column_highlight = 0
 
   if exists('g:gruvbox_sign_column')
-    let s:sign_column = g:gruvbox_sign_column
+    let s:sign_column = get(s:gb, g:gruvbox_sign_column)
   endif
 endif
 
 let s:color_column = s:bg1
 if exists('g:gruvbox_color_column')
-  let s:color_column = g:gruvbox_color_column
+  let s:color_column = get(s:gb, g:gruvbox_color_column)
 endif
 
 let s:vert_split = s:bg2
 if exists('g:gruvbox_vert_split')
-  let s:vert_split = g:gruvbox_vert_split
+  let s:vert_split = get(s:gb, g:gruvbox_vert_split)
 endif
 
 let s:invert_signs = ''