diff --git a/autoload/SpaceVim/autocmds.vim b/autoload/SpaceVim/autocmds.vim index 6c5c81e09..8aff669ba 100644 --- a/autoload/SpaceVim/autocmds.vim +++ b/autoload/SpaceVim/autocmds.vim @@ -77,7 +77,7 @@ function! SpaceVim#autocmds#init() abort endif autocmd BufWritePost *.vim call s:generate_doc() autocmd ColorScheme * call SpaceVim#api#import('vim#highlight').hide_in_normal('EndOfBuffer') - autocmd ColorScheme gruvbox call s:fix_gruvbox() + autocmd ColorScheme gruvbox,jellybeans,nord call s:fix_VertSplit() autocmd VimEnter * call SpaceVim#autocmds#VimEnter() autocmd BufEnter * let b:_spacevim_project_name = get(g:, '_spacevim_project_name', '') autocmd SessionLoadPost * let g:_spacevim_session_loaded = 1 @@ -118,13 +118,19 @@ function! s:generate_doc() abort endif endfunction -function! s:fix_gruvbox() abort +function! s:fix_VertSplit() abort if &background ==# 'dark' - hi VertSplit guibg=#282828 guifg=#181A1F - "hi EndOfBuffer guibg=#282828 guifg=#282828 + if g:colors_name ==# 'gruvbox' + hi VertSplit guibg=#282828 guifg=#181A1F + elseif g:colors_name ==# 'jellybeans' + hi VertSplit guibg=#151515 guifg=#080808 + elseif g:colors_name ==# 'nord' + hi VertSplit guibg=#2E3440 guifg=#262626 + endif else - hi VertSplit guibg=#fbf1c7 guifg=#e7e9e1 - "hi EndOfBuffer guibg=#fbf1c7 guifg=#fbf1c7 + if g:colors_name ==# 'gruvbox' + hi VertSplit guibg=#fbf1c7 guifg=#e7e9e1 + endif endif hi SpaceVimLeaderGuiderGroupName cterm=bold ctermfg=175 gui=bold guifg=#d3869b endfunction diff --git a/autoload/SpaceVim/layers/colorscheme.vim b/autoload/SpaceVim/layers/colorscheme.vim index 4e1b0ba6e..4cd14c6bf 100644 --- a/autoload/SpaceVim/layers/colorscheme.vim +++ b/autoload/SpaceVim/layers/colorscheme.vim @@ -24,191 +24,72 @@ " a colorscheme called atom doesn't support spell check very well. " " SpaceVim is not gonna fix them since these should be in charge of each author. -" You can see a list which has no support of spell check in here: -" https://github.com/SpaceVim/SpaceVim/issues/209#issuecomment-280545818 -" -" > -" anderson -" apprentice -" atom -" base16-3024 -" base16-apathy -" base16-ashes -" base16-atelier-cave -" base16-atelier-dune -" base16-atelier-estuary -" base16-atelier-forest -" base16-atelier-heath -" base16-atelier-lakeside -" base16-atelier-plateau -" base16-atelier-savanna -" base16-atelier-seaside -" base16-atelier-sulphurpool -" base16-bespin -" base16-brewer -" base16-bright -" base16-chalk -" base16-codeschool -" base16-cupcake -" base16-darktooth -" base16-default-dark -" base16-default-light -" base16-dracula -" base16-eighties -" base16-embers -" base16-flat -" base16-github -" base16-google-dark -" base16-google-light -" base16-grayscale-dark -" base16-grayscale-light -" base16-green-screen -" base16-harmonic16-dark -" base16-harmonic16-light -" base16-hopscotch -" base16-ir-black -" base16-isotope -" base16-london-tube -" base16-macintosh -" base16-marrakesh -" base16-materia -" base16-mexico-light -" base16-mocha -" base16-monokai -" base16-ocean -" base16-oceanicnext -" base16-onedark -" base16-paraiso -" base16-phd -" base16-pico -" base16-pop -" base16-railscasts -" base16-seti-ui -" base16-shapeshifter -" base16-solar-flare -" base16-solarized-dark -" base16-solarized-light -" base16-spacemacs -" base16-summerfruit-dark -" base16-summerfruit-light -" base16-tomorrow -" base16-tomorrow-night -" base16-twilight -" base16-unikitty-dark -" base16-unikitty-light -" base16-woodland -" blue -" darkblue -" default -" delek -" desert -" elflord -" evening -" flatcolor -" flattened_dark -" flattened_light -" focuspoint -" gruvbox -" hybrid -" hybrid-material -" hybrid_material -" hybrid_reverse -" industry -" janah -" jellybeans -" koehler -" lightning -" lucius -" molokai -" molokayo -" morning -" murphy -" OceanicNext -" OceanicNextLight -" onedark -" pablo -" PaperColor -" parsec -" peachpuff -" pyte -" rdark-terminal2 -" ron -" scheakur -" seoul256 -" seoul256-light -" shine -" slate -" solarized -" torte -" twilight256 -" wombat256mod -" yowish -" zellner -" < function! SpaceVim#layers#colorscheme#plugins() abort - return [ - \ ['kristijanhusak/vim-hybrid-material', { 'merged' : 0 }], - \ ['altercation/vim-colors-solarized', { 'merged' : 0 }], - \ ['nanotech/jellybeans.vim', { 'merged' : 0 }], - \ ['mhartington/oceanic-next', { 'merged' : 0 }], - \ ['mhinz/vim-janah', { 'merged' : 0 }], - \ ['Gabirel/molokai', { 'merged' : 0 }], - \ ['kabbamine/yowish.vim', { 'merged' : 0 }], - \ ['vim-scripts/wombat256.vim', { 'merged' : 0 }], - \ ['vim-scripts/twilight256.vim', { 'merged' : 0 }], - \ ['junegunn/seoul256.vim', { 'merged' : 0 }], - \ ['vim-scripts/rdark-terminal2.vim', { 'merged' : 0 }], - \ ['vim-scripts/pyte', { 'merged' : 0 }], - \ ['joshdick/onedark.vim', { 'merged' : 0 }], - \ ['fmoralesc/molokayo', { 'merged' : 0 }], - \ ['jonathanfilip/vim-lucius', { 'merged' : 0 }], - \ ['wimstefan/Lightning', { 'merged' : 0 }], - \ ['w0ng/vim-hybrid', { 'merged' : 0 }], - \ ['scheakur/vim-scheakur', { 'merged' : 0 }], - \ ['keith/parsec.vim', { 'merged' : 0 }], - \ ['NLKNguyen/papercolor-theme', { 'merged' : 0 }], - \ ['romainl/flattened', { 'merged' : 0 }], - \ ['SpaceVim/FlatColor', { 'merged' : 0 }], - \ ['chase/focuspoint-vim', { 'merged' : 0 }], - \ ['chriskempson/base16-vim', { 'merged' : 0 }], - \ ['gregsexton/Atom', { 'merged' : 0 }], - \ ['gilgigilgil/anderson.vim', { 'merged' : 0 }], - \ ['romainl/Apprentice', { 'merged' : 0 }], - \ ['icymind/NeoSolarized', { 'merged' : 0 }], - \ ['jacoborus/tender', { 'merged' : 0 }], - \ ['wsdjeg/vim-one', { 'merged' : 0 }], - \ ['arcticicestudio/nord-vim', { 'merged' : 0 }], - \ ['KeitaNakamura/neodark.vim', { 'merged' : 0 }] - \ ] + return [ + \ ['Gabirel/molokai', { 'merged' : 0 }], + \ ['joshdick/onedark.vim', { 'merged' : 0 }], + \ ['nanotech/jellybeans.vim', { 'merged' : 0 }], + \ ['rakr/vim-one', { 'merged' : 0 }], + \ ['arcticicestudio/nord-vim', { 'merged' : 0 }], + \ ['icymind/NeoSolarized', { 'merged' : 0 }], + \ ['w0ng/vim-hybrid', { 'merged' : 0 }], + \ ] + " + " TODO: + " \ ['mhartington/oceanic-next', { 'merged' : 0 }], + " \ ['junegunn/seoul256.vim', { 'merged' : 0 }], + " \ ['kabbamine/yowish.vim', { 'merged' : 0 }], + " \ ['KeitaNakamura/neodark.vim', { 'merged' : 0 }], + " \ ['NLKNguyen/papercolor-theme', { 'merged' : 0 }], + " \ ['SpaceVim/FlatColor', { 'merged' : 0 }], + endfunction -let s:cs = ['gruvbox', 'molokai', 'onedark', 'jellybeans', 'one', 'nord'] -let s:Number = SpaceVim#api#import('data#number') +let s:cs = [ + \ 'gruvbox', + \ 'molokai', + \ 'onedark', + \ 'jellybeans', + \ 'one', + \ 'nord', + \ 'hybrid', + \ 'NeoSolarized', + \ ] +let s:NUMBER = SpaceVim#api#import('data#number') function! SpaceVim#layers#colorscheme#config() abort - call SpaceVim#mapping#space#def('nnoremap', ['T', 'n'], - \ 'call call(' . string(s:_function('s:cycle_spacevim_theme')) - \ . ', [])', 'cycle-spacevim-theme', 1) + if s:random_colorscheme == 1 + let id = s:NUMBER.random(0, len(s:cs)) + let g:spacevim_colorscheme = s:cs[id] + endif + call SpaceVim#mapping#space#def('nnoremap', ['T', 'n'], + \ 'call call(' . string(s:_function('s:cycle_spacevim_theme')) + \ . ', [])', 'cycle-spacevim-theme', 1) +endfunction + +let s:random_colorscheme = 0 +function! SpaceVim#layers#colorscheme#set_variable(var) abort + let s:random_colorscheme = get(a:var, 'random-theme', 0) endfunction " function() wrapper if v:version > 703 || v:version == 703 && has('patch1170') - function! s:_function(fstr) abort - return function(a:fstr) - endfunction + function! s:_function(fstr) abort + return function(a:fstr) + endfunction else - function! s:_SID() abort - return matchstr(expand(''), '\zs\d\+\ze__SID$') - endfunction - let s:_s = '' . s:_SID() . '_' - function! s:_function(fstr) abort - return function(substitute(a:fstr, 's:', s:_s, 'g')) - endfunction + function! s:_SID() abort + return matchstr(expand(''), '\zs\d\+\ze__SID$') + endfunction + let s:_s = '' . s:_SID() . '_' + function! s:_function(fstr) abort + return function(substitute(a:fstr, 's:', s:_s, 'g')) + endfunction endif function! s:cycle_spacevim_theme() abort - let id = s:Number.random(0, len(s:cs)) - exe 'colorscheme ' . s:cs[id] + let id = s:NUMBER.random(0, len(s:cs)) + exe 'colorscheme ' . s:cs[id] endfunction diff --git a/autoload/SpaceVim/mapping/guide/theme/hybrid.vim b/autoload/SpaceVim/mapping/guide/theme/hybrid.vim new file mode 100644 index 000000000..3e948943a --- /dev/null +++ b/autoload/SpaceVim/mapping/guide/theme/hybrid.vim @@ -0,0 +1,33 @@ +"============================================================================= +" hybrid.vim --- hybrid colorschem palette +" Copyright (c) 2016-2017 Wang Shidong & Contributors +" Author: Wang Shidong < wsdjeg at 163.com > +" URL: https://spacevim.org +" License: GPLv3 +"============================================================================= + +" [ +" \ [ a_guifg, a_guibg, a_ctermfg, a_ctermbg], +" \ [ b_guifg, b_guibg, b_ctermfg, b_ctermbg], +" \ [ c_guifg, c_guibg, c_ctermfg, c_ctermbg], +" \ [ z_guibg, z_ctermbg], +" \ [ i_guifg, i_guibg, i_ctermfg, i_ctermbg], +" \ [ v_guifg, v_guibg, v_ctermfg, v_ctermbg], +" \ [ r_guifg, r_guibg, r_ctermfg, r_ctermbg], +" \ [ ii_guifg, ii_guibg, ii_ctermfg, ii_ctermbg], +" \ [ in_guifg, in_guibg, in_ctermfg, in_ctermbg], +" \ ] + +function! SpaceVim#mapping#guide#theme#hybrid#palette() abort + return [ + \ ['#d7ffaf', '#5F875F', 193, 65], + \ ['#ffffff', '#373b41', 231, 22], + \ ['#ffffff', '#282a2e', 231, 237], + \ ['#4e4e4e', 239], + \ ['#c5c8c6', '#81a2be', 193, 110], + \ ['#c5c8c6', '#cc6666', 231, 167], + \ ['#d7d7ff', '#5f5f87', 88, 0], + \ ['#ffffff', '#689d6a', 231, 72], + \ ['#ffffff', '#8f3f71', 231, 132], + \ ] +endfunction diff --git a/autoload/SpaceVim/mapping/guide/theme/jellybeans.vim b/autoload/SpaceVim/mapping/guide/theme/jellybeans.vim new file mode 100644 index 000000000..9691d5b1f --- /dev/null +++ b/autoload/SpaceVim/mapping/guide/theme/jellybeans.vim @@ -0,0 +1,61 @@ +"============================================================================= +" jellybeans.vim --- jellybeans colorscheme palette +" Copyright (c) 2016-2017 Wang Shidong & Contributors +" Author: Wang Shidong < wsdjeg at 163.com > +" URL: https://spacevim.org +" License: GPLv3 +"============================================================================= +" Color palette +let s:gui00 = "#151515" +let s:gui01 = "#262626" +let s:gui02 = "#4f5b66" +let s:gui03 = "#65737e" +let s:gui04 = "#a7adba" +let s:gui05 = "#c0c5ce" +let s:gui06 = "#cdd3de" +let s:gui07 = "#d8dee9" +let s:gui08 = "#870000" +let s:gui09 = "#f99157" +let s:gui0A = "#fac863" +let s:gui0B = "#437019" +let s:gui0C = "#5fb3b3" +let s:gui0D = "#0d61ac" +let s:gui0E = "#c594c5" +let s:gui0F = "#ab7967" + +let s:cterm00 = "233" +let s:cterm01 = "235" +let s:cterm02 = "59" +let s:cterm03 = "66" +let s:cterm04 = "145" +let s:cterm05 = "152" +let s:cterm06 = "188" +let s:cterm07 = "189" +let s:cterm08 = "88" +let s:cterm09 = "209" +let s:cterm0A = "221" +let s:cterm0B = "22" +let s:cterm0C = "73" +let s:cterm0D = "25" +let s:cterm0E = "176" +let s:cterm0F = "137" + +let s:guiWhite = "#ffffff" +let s:guiGray = "#666666" +let s:ctermWhite = "231" +let s:ctermGray = "243" + + +function! SpaceVim#mapping#guide#theme#jellybeans#palette() abort + return [ + \ ['#d8dee9', '#0d61ac', 189, 25], + \ ['#ffffff', '#262626', 231, 235], + \ ['#ffffff', '#3a3a3a', 231, 237], + \ ['#4e4e4e', 239], + \ ['#ffffff', '#437019', 231, 22], + \ ['#ffffff', '#870000', 231, 88], + \ ['#870000', '#000000', 88, 0], + \ ['#ffffff', '#689d6a', 231, 72], + \ ['#ffffff', '#8f3f71', 231, 132], + \ ] +endfunction diff --git a/autoload/SpaceVim/mapping/guide/theme/nord.vim b/autoload/SpaceVim/mapping/guide/theme/nord.vim index c2654938a..cd3024c8c 100644 --- a/autoload/SpaceVim/mapping/guide/theme/nord.vim +++ b/autoload/SpaceVim/mapping/guide/theme/nord.vim @@ -16,5 +16,7 @@ function! SpaceVim#mapping#guide#theme#nord#palette() abort \ ['#2E3440', '#8FBCBB', 0, 14], \ ['#2E3440', '#D08770', 0, 11], \ ['#2E3440', '#BF616A', 0, 1], + \ ['#2E3440', '#689d6a', 0, 72], + \ ['#2E3440', '#8f3f71', 0, 132], \ ] endfunction diff --git a/doc/SpaceVim.txt b/doc/SpaceVim.txt index 32149a4b2..296d2f65d 100644 --- a/doc/SpaceVim.txt +++ b/doc/SpaceVim.txt @@ -619,128 +619,6 @@ all of below colorschemes support spell check very well. For example, a colorscheme called atom doesn't support spell check very well. SpaceVim is not gonna fix them since these should be in charge of each author. -You can see a list which has no support of spell check in here: -https://github.com/SpaceVim/SpaceVim/issues/209#issuecomment-280545818 - - -> - anderson - apprentice - atom - base16-3024 - base16-apathy - base16-ashes - base16-atelier-cave - base16-atelier-dune - base16-atelier-estuary - base16-atelier-forest - base16-atelier-heath - base16-atelier-lakeside - base16-atelier-plateau - base16-atelier-savanna - base16-atelier-seaside - base16-atelier-sulphurpool - base16-bespin - base16-brewer - base16-bright - base16-chalk - base16-codeschool - base16-cupcake - base16-darktooth - base16-default-dark - base16-default-light - base16-dracula - base16-eighties - base16-embers - base16-flat - base16-github - base16-google-dark - base16-google-light - base16-grayscale-dark - base16-grayscale-light - base16-green-screen - base16-harmonic16-dark - base16-harmonic16-light - base16-hopscotch - base16-ir-black - base16-isotope - base16-london-tube - base16-macintosh - base16-marrakesh - base16-materia - base16-mexico-light - base16-mocha - base16-monokai - base16-ocean - base16-oceanicnext - base16-onedark - base16-paraiso - base16-phd - base16-pico - base16-pop - base16-railscasts - base16-seti-ui - base16-shapeshifter - base16-solar-flare - base16-solarized-dark - base16-solarized-light - base16-spacemacs - base16-summerfruit-dark - base16-summerfruit-light - base16-tomorrow - base16-tomorrow-night - base16-twilight - base16-unikitty-dark - base16-unikitty-light - base16-woodland - blue - darkblue - default - delek - desert - elflord - evening - flatcolor - flattened_dark - flattened_light - focuspoint - gruvbox - hybrid - hybrid-material - hybrid_material - hybrid_reverse - industry - janah - jellybeans - koehler - lightning - lucius - molokai - molokayo - morning - murphy - OceanicNext - OceanicNextLight - onedark - pablo - PaperColor - parsec - peachpuff - pyte - rdark-terminal2 - ron - scheakur - seoul256 - seoul256-light - shine - slate - solarized - torte - twilight256 - wombat256mod - yowish - zellner -< ============================================================================== CORE#TABLINE *SpaceVim-layer-core-tabline* diff --git a/docs/layers/colorscheme.md b/docs/layers/colorscheme.md index be8f6f66c..f69d46f16 100644 --- a/docs/layers/colorscheme.md +++ b/docs/layers/colorscheme.md @@ -5,24 +5,49 @@ description: "colorscheme provides a list of colorscheme for SpaceVim, default c # [SpaceVim Layers:](https://spacevim.org/layers) colorscheme +## Description + This layer provides many Vim colorschemes for SpaceVim, the default colorscheme is gruvbox. +## Install + +This layer is disabled by default in SpaceVim. + +To use this configuration layer, add `call SpaceVim#layers#load('colorscheme')` to your custom configuration file. + +## Configuration + To change the colorscheme: ```vim let g:spacevim_colorscheme = 'onedark' ``` +**List colorschemes** + +| Name | dark | light | term | gui | statusline | +| ---------- | ---- | ----- | ---- | --- | ---------- | +| gruvbox | yes | yes | yes | yes | yes | +| one | yes | yes | yes | yes | yes | +| molokai | yes | no | yes | yes | yes | +| jellybeans | yes | no | yes | yes | yes | +| nord | yes | no | yes | yes | yes | +| onedark | yes | no | yes | yes | yes | + Some colorschemes offer dark and light styles. Most of them are set by changing Vim background color. SpaceVim support to change the background color with `g:spacevim_colorscheme_bg`: + ```vim let g:spacevim_colorscheme_bg = 'dark' ``` -Among SpaceVim colorschemes supported, there are some that looks like Atom -editor color styles: dark and light. -For Atom dark color scheme use _onedark_ or _neodark_ in `g:spacevim_colorscheme`. -For Atom light color scheme use _one_. vim-one plugin offer _one_ colorscheme and it -supports dark and light styles, but dark style doesn't work well with SpaceVim. -Check [#507](https://github.com/SpaceVim/SpaceVim/issues/507) for further discussion. +colorscheme layer support random colorscheme on startup. just load this layer with layer option `random-theme` + +```vim +call SpaceVim#layers#load('colorscheme', { + \ 'random-theme' : 1, + \ }) +``` + +## Contributing