From 7e5e18099243a284ea235fd5b448a948b136dd42 Mon Sep 17 00:00:00 2001 From: Matthew Lyon Date: Tue, 21 Jan 2014 16:26:01 -0200 Subject: [PATCH] complete light/dark toggle --- README.markdown | 10 +++- colors/pencil.vim | 94 +++++++++++++++++------------- screenshots/bash-example-dark.png | Bin 0 -> 18110 bytes 3 files changed, 63 insertions(+), 41 deletions(-) create mode 100644 screenshots/bash-example-dark.png diff --git a/README.markdown b/README.markdown index 69c89f5..4611351 100644 --- a/README.markdown +++ b/README.markdown @@ -16,7 +16,7 @@ does have a nice colorscheme, however. ## Requirements -May require a recent version of Vim. +Currently requires vim >= 7.0 ## Installation @@ -35,6 +35,14 @@ Just like any other colorscheme: ![vimscript-example](screenshots/vimscript-example.png) +There is a work-in-progress dark version, just set your background: + +```vim +:set background=dark +``` + +![bash-example-dark](screenshots/bash-example-dark.png) + ## Differences Most notably, the ‘#’ heading text is shaded blue. This is to compensate diff --git a/colors/pencil.vim b/colors/pencil.vim index 16fb76b..c020b9a 100644 --- a/colors/pencil.vim +++ b/colors/pencil.vim @@ -13,8 +13,10 @@ let g:colors_name='pencil' " Colors let s:black = { "gui": "#212121", "cterm": "0" } +let s:subtle_black = { "gui": "#303030", "cterm": "236" } let s:light_black = { "gui": "#424242", "cterm": "8" } -let s:medium_grey = { "gui": "#808080", "cterm": "240" } +let s:lighter_black = { "gui": "#545454", "cterm": "240" } +let s:medium_grey = { "gui": "#767676", "cterm": "243" } let s:light_grey = { "gui": "#D9D9D9", "cterm": "253" } let s:lighter_grey = { "gui": "#E5E6E6", "cterm": "254" } let s:white = { "gui": "#F1F1F1", "cterm": "15" } @@ -24,15 +26,19 @@ let s:pink = { "gui": "#fb007a", "cterm": "9" } let s:red = { "gui": "#C30771", "cterm": "1" } let s:orange = { "gui": "#D75F5F", "cterm": "167" } +let s:darker_blue = { "gui": "#005F87", "cterm": "18" } +let s:dark_blue = { "gui": "#008EC4", "cterm": "4" } let s:blue = { "gui": "#20BBFC", "cterm": "12" } let s:light_blue = { "gui": "#b6d6fd", "cterm": "153" } -let s:dark_blue = { "gui": "#008EC4", "cterm": "4" } -let s:cyan = { "gui": "#20A5BA", "cterm": "6" } +let s:dark_cyan = { "gui": "#20A5BA", "cterm": "6" } let s:light_cyan = { "gui": "#4FB8CC", "cterm": "14" } -let s:green = { "gui": "#10A778", "cterm": "2" } +let s:dark_green = { "gui": "#10A778", "cterm": "2" } let s:light_green = { "gui": "#5FD7A7", "cterm": "10" } -let s:purple = { "gui": "#523C79", "cterm": "5" } + +let s:dark_purple = { "gui": "#523C79", "cterm": "5" } +let s:light_purple = { "gui": "#6855DE", "cterm": "13" } + let s:yellow = { "gui": "#F3E430", "cterm": "11" } let s:dark_yellow = { "gui": "#A89C14", "cterm": "3" } @@ -67,12 +73,27 @@ let s:dark_yellow = { "gui": "#A89C14", "cterm": "3" } if &background == "dark" let s:bg = s:black + let s:bg_subtle = s:light_black + let s:bg_very_subtle = s:subtle_black let s:norm = s:white + let s:norm_subtle = s:light_grey + let s:purple = s:light_purple + let s:cyan = s:light_cyan + let s:green = s:light_green + let s:visual = s:light_black else let s:bg = s:white + let s:bg_subtle = s:light_grey + let s:bg_very_subtle = s:lighter_grey let s:norm = s:light_black + let s:norm_subtle = s:lighter_black + let s:purple = s:dark_purple + let s:cyan = s:dark_cyan + let s:green = s:dark_green + let s:visual = s:light_blue endif +" shamelessly stolen from hemisu: https://github.com/noahfrederick/vim-hemisu/ function! s:h(group, style) execute "highlight" a:group \ "guifg=" (has_key(a:style, "fg") ? a:style.fg.gui : "NONE") @@ -91,7 +112,6 @@ call s:h("Normal", {"bg": s:bg, "fg": s:norm}) call s:h("Cursor", {"bg": s:blue, "fg": s:norm }) call s:h("Comment", {"fg": s:medium_grey, "gui": "italic"}) -" yellow call s:h("Constant", {"fg": s:green}) hi! link String Constant hi! link Character Constant @@ -99,11 +119,9 @@ hi! link Number Constant hi! link Boolean Constant hi! link Float Constant -" pink call s:h("Identifier", {"fg": s:pink}) hi! link Function Identifier -" blue call s:h("Statement", {"fg": s:dark_blue}) hi! link Conditonal Statement hi! link Repeat Statement @@ -112,20 +130,17 @@ hi! link Operator Statement hi! link Keyword Statement hi! link Exception Statement -" green -call s:h("PreProc", {"fg": s:cyan}) +call s:h("PreProc", {"fg": s:purple}) hi! link Include PreProc -hi! link Include Define -hi! link Include Macro -hi! link Include PreCondit +hi! link Define PreProc +hi! link Macro PreProc +hi! link PreCondit PreProc -" purple -call s:h("Type", {"fg": s:purple}) +call s:h("Type", {"fg": s:cyan}) hi! link StorageClass Type hi! link Structure Type hi! link Typedef Type -" red call s:h("Special", {"fg": s:red}) hi! link Special Special hi! link SpecialChar Special @@ -146,19 +161,19 @@ call s:h("SpecialKey", {"fg": s:light_green}) call s:h("NonText", {"fg": s:medium_grey}) call s:h("Directory", {"fg": s:blue}) call s:h("ErrorMsg", {"fg": s:pink}) -call s:h("IncSearch", {"bg": s:yellow, "fg": s:norm}) -call s:h("Search", {"bg": s:yellow, "fg": s:norm}) +call s:h("IncSearch", {"bg": s:yellow, "fg": s:light_black}) +call s:h("Search", {"bg": s:yellow, "fg": s:light_black}) call s:h("MoreMsg", {"fg": s:medium_grey, "cterm": "bold", "gui": "bold"}) hi! link ModeMsg MoreMsg -call s:h("LineNr", {"fg": s:light_grey}) -call s:h("CursorLineNr", {"fg": s:blue, "bg": s:lighter_grey}) +call s:h("LineNr", {"fg": s:bg_subtle}) +call s:h("CursorLineNr", {"fg": s:blue, "bg": s:bg_very_subtle}) call s:h("Question", {"fg": s:red}) -call s:h("StatusLine", {"bg": s:light_grey}) -call s:h("StatusLineNC", {"bg": s:light_grey, "fg": s:medium_grey}) -call s:h("VertSplit", {"bg": s:light_grey, "fg": s:light_grey}) +call s:h("StatusLine", {"bg": s:bg_subtle}) +call s:h("StatusLineNC", {"bg": s:bg_subtle, "fg": s:medium_grey}) +call s:h("VertSplit", {"bg": s:bg_subtle, "fg": s:bg_subtle}) call s:h("Title", {"fg": s:dark_blue}) -call s:h("Visual", {"bg": s:light_blue}) -call s:h("VisualNOS", {"bg": s:light_grey}) +call s:h("Visual", {"bg": s:visual}) +call s:h("VisualNOS", {"bg": s:bg_subtle}) call s:h("WarningMsg", {"fg": s:red}) call s:h("WildMenu", {"fg": s:bg, "bg": s:norm}) call s:h("Folded", {"fg": s:medium_grey}) @@ -169,26 +184,25 @@ call s:h("DiffChange", {"fg": s:dark_yellow}) call s:h("DiffText", {"fg": s:dark_blue}) call s:h("SignColumn", {"fg": s:light_green}) " hi Conceal -hi SpellBad guifg=fg guibg=bg gui=undercurl guisp=#cc0000 ctermfg=210 ctermbg=bg cterm=underline -hi SpellCap guifg=fg guibg=bg gui=undercurl guisp=#22cc22 ctermfg=174 ctermbg=bg cterm=underline -hi SpellRare guifg=fg guibg=bg gui=undercurl ctermfg=181 ctermbg=bg cterm=underline -hi SpellLocal guifg=fg guibg=bg gui=undercurl ctermfg=180 ctermbg=bg cterm=underline -call s:h("Pmenu", {"fg": s:norm, "bg": s:light_grey}) +let s:spelling = "gui=undercurl cterm=underline guibg=NONE ctermbg=NONE " +exe "hi SpellBad " .s:spelling ."guisp=" .s:red.gui ." ctermfg=" .s:red.cterm +exe "hi SpellCap " .s:spelling ."guisp=" .s:light_green.gui ." ctermfg=" .s:light_green.cterm +exe "hi SpellRare " .s:spelling ."ctermfg=" .s:pink.cterm +exe "hi SpellLocal " .s:spelling ."ctermfg=" .s:dark_green.cterm +call s:h("Pmenu", {"fg": s:norm, "bg": s:bg_subtle}) call s:h("PmenuSel", {"fg": s:norm, "bg": s:blue}) -call s:h("PmenuSbar", {"fg": s:norm, "bg": s:light_grey}) -call s:h("PmenuThumb", {"fg": s:norm, "bg": s:light_grey}) -call s:h("TabLine", {"fg": s:norm, "bg": s:light_grey}) +call s:h("PmenuSbar", {"fg": s:norm, "bg": s:bg_subtle}) +call s:h("PmenuThumb", {"fg": s:norm, "bg": s:bg_subtle}) +call s:h("TabLine", {"fg": s:norm, "bg": s:bg_subtle}) call s:h("TabLineSel", {"fg": s:norm, "bg": s:blue}) -call s:h("TabLineFill", {"fg": s:norm, "bg": s:light_grey}) -call s:h("CursorColumn", {"bg": s:lighter_grey}) -call s:h("CursorLine", {"bg": s:lighter_grey}) -hi ColorColumn guifg=#5FD7AF guibg=#D9D9D9 ctermbg=79 - +call s:h("TabLineFill", {"fg": s:norm, "bg": s:bg_subtle}) +call s:h("CursorColumn", {"bg": s:bg_very_subtle}) +call s:h("CursorLine", {"bg": s:bg_very_subtle}) +call s:h("ColorColumn", {"fg": s:cyan, "bg": s:bg_subtle}) " remainder of syntax highlighting hi MatchParen guifg=fg guibg=#F7DF94 ctermfg=16 ctermbg=72 -hi vimFold guifg=#808080 ctermfg=244 -hi vimCommentTitle guifg=fg ctermfg=fg + hi helpHyperTextJump guifg=#5FAFD7 ctermfg=74 hi htmlItalic guifg=fg guibg=NONE gui=italic ctermfg=38 ctermbg=NONE cterm=bold diff --git a/screenshots/bash-example-dark.png b/screenshots/bash-example-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..350345817c858b412d9aa9d12c2f45225ac6cf81 GIT binary patch literal 18110 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 Z{{@)C{`0Thl8OKT002ovPDHLkV1gQ*P=Npd literal 0 HcmV?d00001