You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
504 lines
14 KiB
504 lines
14 KiB
" _ _ _ __ |
|
" | |__ __ _ __| | __ _____ | |/ _| |
|
" | '_ \ / _` |/ _` | \ \ /\ / / _ \| | |_ |
|
" | |_) | (_| | (_| | \ V V / (_) | | _| |
|
" |_.__/ \__,_|\__,_| \_/\_/ \___/|_|_| |
|
" |
|
" I am the Bad Wolf. I create myself. |
|
" I take the words. I scatter them in time and space. |
|
" A message to lead myself here. |
|
" |
|
" A Vim colorscheme pieced together by Steve Losh. |
|
" Available at http://stevelosh.com/projects/badwolf/ |
|
" |
|
" Why? {{{ |
|
" |
|
" After using Molokai for quite a long time, I started longing for |
|
" a replacement. |
|
" |
|
" I love Molokai's high contrast and gooey, saturated tones, but it can be |
|
" a little inconsistent at times. |
|
" |
|
" Also it's winter here in Rochester, so I wanted a color scheme that's a bit |
|
" warmer. A little less blue and a bit more red. |
|
" |
|
" And so Bad Wolf was born. I'm no designer, but designers have been scattering |
|
" beautiful colors through time and space long before I came along. I took |
|
" advantage of that and reused some of my favorites to lead me to this scheme. |
|
" |
|
" }}} |
|
|
|
" Supporting code ------------------------------------------------------------- |
|
" Preamble {{{ |
|
|
|
set background=dark |
|
|
|
if exists("syntax_on") |
|
syntax reset |
|
endif |
|
|
|
let colors_name = "badwolf" |
|
|
|
" }}} |
|
" Palette {{{ |
|
|
|
let s:bwc = {} |
|
|
|
" The most basic of all our colors is a slightly tweaked version of the Molokai |
|
" Normal text. |
|
let s:bwc.plain = ['f8f6f2', 15] |
|
|
|
" Pure and simple. |
|
let s:bwc.snow = ['ffffff', 15] |
|
let s:bwc.coal = ['000000', 16] |
|
|
|
" All of the Gravel colors are based on a brown from Clouds Midnight. |
|
let s:bwc.brightgravel = ['d9cec3', 252] |
|
let s:bwc.lightgravel = ['998f84', 245] |
|
let s:bwc.gravel = ['857f78', 243] |
|
let s:bwc.mediumgravel = ['666462', 241] |
|
let s:bwc.deepgravel = ['45413b', 238] |
|
let s:bwc.deepergravel = ['35322d', 236] |
|
let s:bwc.darkgravel = ['242321', 235] |
|
let s:bwc.blackgravel = ['1c1b1a', 233] |
|
let s:bwc.blackestgravel = ['141413', 232] |
|
|
|
" A color sampled from a highlight in a photo of a glass of Dale's Pale Ale on |
|
" my desk. |
|
let s:bwc.dalespale = ['fade3e', 221] |
|
|
|
" A beautiful tan from Tomorrow Night. |
|
let s:bwc.dirtyblonde = ['f4cf86', 222] |
|
|
|
" Delicious, chewy red from Made of Code for the poppiest highlights. |
|
let s:bwc.taffy = ['ff2c4b', 196] |
|
|
|
" The star of the show comes straight from Made of Code. |
|
let s:bwc.tardis = ['0a9dff', 39] |
|
|
|
" This one's from Mustang, not Florida! |
|
let s:bwc.orange = ['ffa724', 214] |
|
|
|
" A limier green from Getafe. |
|
let s:bwc.lime = ['aeee00', 148] |
|
|
|
" Rose's dress in The Idiot's Lantern. |
|
let s:bwc.dress = ['ff9eb8', 211] |
|
|
|
" Another play on the brown from Clouds Midnight. I love that color. |
|
let s:bwc.toffee = ['b88853', 137] |
|
|
|
" Also based on that Clouds Midnight brown. |
|
let s:bwc.coffee = ['c7915b', 173] |
|
let s:bwc.darkroast = ['88633f', 95] |
|
|
|
" }}} |
|
" Highlighting Function {{{ |
|
function! HL(group, fg, ...) |
|
" Arguments: group, guifg, guibg, gui, guisp |
|
|
|
let histring = 'hi ' . a:group . ' ' |
|
|
|
if strlen(a:fg) |
|
if a:fg == 'fg' |
|
let histring .= 'guifg=fg ctermfg=fg ' |
|
else |
|
let c = get(s:bwc, a:fg) |
|
let histring .= 'guifg=#' . c[0] . ' ctermfg=' . c[1] . ' ' |
|
endif |
|
endif |
|
|
|
if a:0 >= 1 && strlen(a:1) |
|
if a:1 == 'bg' |
|
let histring .= 'guibg=bg ctermbg=bg ' |
|
else |
|
let c = get(s:bwc, a:1) |
|
let histring .= 'guibg=#' . c[0] . ' ctermbg=' . c[1] . ' ' |
|
endif |
|
endif |
|
|
|
if a:0 >= 2 && strlen(a:2) |
|
let histring .= 'gui=' . a:2 . ' cterm=' . a:2 . ' ' |
|
endif |
|
|
|
if a:0 >= 3 && strlen(a:3) |
|
let c = get(s:bwc, a:3) |
|
let histring .= 'guisp=#' . c[0] . ' ' |
|
endif |
|
|
|
" echom histring |
|
|
|
execute histring |
|
endfunction |
|
" }}} |
|
" Configuration Options {{{ |
|
|
|
if exists('g:badwolf_darkgutter') && g:badwolf_darkgutter |
|
let s:gutter = 'blackestgravel' |
|
else |
|
let s:gutter = 'blackgravel' |
|
endif |
|
|
|
" }}} |
|
|
|
" Actual colorscheme ---------------------------------------------------------- |
|
" Vanilla Vim {{{ |
|
|
|
" General/UI {{{ |
|
|
|
call HL('Normal', 'plain', 'blackgravel') |
|
|
|
call HL('Folded', 'mediumgravel', 'bg', 'none') |
|
|
|
call HL('VertSplit', 'lightgravel', 'bg', 'none') |
|
|
|
call HL('CursorLine', '', 'darkgravel', 'none') |
|
call HL('CursorColumn', '', 'darkgravel') |
|
call HL('ColorColumn', '', 'darkgravel') |
|
|
|
call HL('MatchParen', 'dalespale', 'darkgravel', 'bold') |
|
|
|
call HL('NonText', 'deepgravel', 'bg') |
|
call HL('SpecialKey', 'deepgravel', 'bg') |
|
|
|
call HL('Visual', '', 'deepgravel') |
|
call HL('VisualNOS', '', 'deepgravel') |
|
|
|
call HL('Search', 'coal', 'dalespale', 'bold') |
|
call HL('IncSearch', 'coal', 'tardis', 'bold') |
|
|
|
call HL('Underlined', 'fg', '', 'underline') |
|
|
|
call HL('StatusLine', 'coal', 'tardis', 'bold') |
|
call HL('StatusLineNC', 'snow', 'deepgravel', 'bold') |
|
|
|
call HL('Directory', 'dirtyblonde', '', 'bold') |
|
|
|
call HL('Title', 'lime') |
|
|
|
call HL('ErrorMsg', 'taffy', 'bg', 'bold') |
|
call HL('MoreMsg', 'dalespale', '', 'bold') |
|
call HL('ModeMsg', 'dirtyblonde', '', 'bold') |
|
call HL('Question', 'dirtyblonde', '', 'bold') |
|
call HL('WarningMsg', 'dress', '', 'bold') |
|
|
|
" This is a ctags tag, not an HTML one. 'Something you can use c-] on'. |
|
call HL('Tag', '', '', 'bold') |
|
|
|
" hi IndentGuides guibg=#373737 |
|
" hi WildMenu guifg=#66D9EF guibg=#000000 |
|
|
|
" }}} |
|
" Gutter {{{ |
|
|
|
call HL('LineNr', 'mediumgravel', s:gutter) |
|
call HL('SignColumn', '', s:gutter) |
|
call HL('FoldColumn', 'mediumgravel', s:gutter) |
|
|
|
" }}} |
|
" Cursor {{{ |
|
|
|
call HL('Cursor', 'coal', 'tardis', 'bold') |
|
call HL('vCursor', 'coal', 'tardis', 'bold') |
|
call HL('iCursor', 'coal', 'tardis', 'none') |
|
|
|
" }}} |
|
" Syntax highlighting {{{ |
|
|
|
" Start with a simple base. |
|
call HL('Special', 'plain') |
|
|
|
" Comments are slightly brighter than folds, to make 'headers' easier to see. |
|
call HL('Comment', 'gravel') |
|
call HL('Todo', 'snow', 'bg', 'bold') |
|
call HL('SpecialComment', 'snow', 'bg', 'bold') |
|
|
|
" Strings are a nice, pale straw color. Nothing too fancy. |
|
call HL('String', 'dirtyblonde') |
|
|
|
" Control flow stuff is taffy. |
|
call HL('Statement', 'taffy', '', 'bold') |
|
call HL('Keyword', 'taffy', '', 'bold') |
|
call HL('Conditional', 'taffy', '', 'bold') |
|
call HL('Operator', 'taffy', '', 'none') |
|
call HL('Label', 'taffy', '', 'none') |
|
call HL('Repeat', 'taffy', '', 'none') |
|
|
|
" Functions and variable declarations are orange, because plain looks weird. |
|
call HL('Identifier', 'orange', '', 'none') |
|
call HL('Function', 'orange', '', 'none') |
|
|
|
" Preprocessor stuff is lime, to make it pop. |
|
" |
|
" This includes imports in any given language, because they should usually be |
|
" grouped together at the beginning of a file. If they're in the middle of some |
|
" other code they should stand out, because something tricky is |
|
" probably going on. |
|
call HL('PreProc', 'lime', '', 'none') |
|
call HL('Macro', 'lime', '', 'none') |
|
call HL('Define', 'lime', '', 'none') |
|
call HL('PreCondit', 'lime', '', 'bold') |
|
|
|
" Constants of all kinds are colored together. |
|
" I'm not really happy with the color yet... |
|
call HL('Constant', 'toffee', '', 'bold') |
|
call HL('Character', 'toffee', '', 'bold') |
|
call HL('Boolean', 'toffee', '', 'bold') |
|
|
|
call HL('Number', 'toffee', '', 'bold') |
|
call HL('Float', 'toffee', '', 'bold') |
|
|
|
" Not sure what 'special character in a constant' means, but let's make it pop. |
|
call HL('SpecialChar', 'dress', '', 'bold') |
|
|
|
call HL('Type', 'dress', '', 'none') |
|
call HL('StorageClass', 'taffy', '', 'none') |
|
call HL('Structure', 'taffy', '', 'none') |
|
call HL('Typedef', 'taffy', '', 'bold') |
|
|
|
" Make try/catch blocks stand out. |
|
call HL('Exception', 'lime', '', 'bold') |
|
|
|
" Misc |
|
call HL('Error', 'snow', 'taffy', 'bold') |
|
call HL('Debug', 'snow', '', 'bold') |
|
call HL('Ignore', 'gravel', '', '') |
|
|
|
" }}} |
|
" Completion Menu {{{ |
|
|
|
call HL('Pmenu', 'plain', 'deepergravel') |
|
call HL('PmenuSel', 'coal', 'tardis', 'bold') |
|
call HL('PmenuSbar', '', 'deepergravel') |
|
call HL('PmenuThumb', 'brightgravel') |
|
|
|
" }}} |
|
" Diffs {{{ |
|
|
|
call HL('DiffDelete', 'coal', 'coal') |
|
call HL('DiffAdd', '', 'deepergravel') |
|
call HL('DiffChange', '', 'darkgravel') |
|
call HL('DiffText', 'snow', 'deepergravel', 'bold') |
|
|
|
" }}} |
|
" Spelling {{{ |
|
|
|
if has("spell") |
|
call HL('SpellCap', 'dalespale', '', 'undercurl,bold', 'dalespale') |
|
call HL('SpellBad', '', '', 'undercurl', 'dalespale') |
|
call HL('SpellLocal', '', '', 'undercurl', 'dalespale') |
|
call HL('SpellRare', '', '', 'undercurl', 'dalespale') |
|
endif |
|
|
|
" }}} |
|
|
|
" }}} |
|
" Plugins {{{ |
|
|
|
" CtrlP {{{ |
|
|
|
" the message when no match is found |
|
call HL('CtrlPNoEntries', 'snow', 'taffy', 'bold') |
|
|
|
" the matched pattern |
|
call HL('CtrlPMatch', 'orange', 'bg', 'none') |
|
|
|
" the line prefix '>' in the match window |
|
call HL('CtrlPLinePre', 'deepgravel', 'bg', 'none') |
|
|
|
" the prompt’s base |
|
call HL('CtrlPPrtBase', 'deepgravel', 'bg', 'none') |
|
|
|
" the prompt’s text |
|
call HL('CtrlPPrtText', 'plain', 'bg', 'none') |
|
|
|
" the prompt’s cursor when moving over the text |
|
call HL('CtrlPPrtCursor', 'coal', 'tardis', 'bold') |
|
|
|
" 'prt' or 'win', also for 'regex' |
|
call HL('CtrlPMode1', 'coal', 'tardis', 'bold') |
|
|
|
" 'file' or 'path', also for the local working dir |
|
call HL('CtrlPMode2', 'coal', 'tardis', 'bold') |
|
|
|
" the scanning status |
|
call HL('CtrlPStats', 'coal', 'tardis', 'bold') |
|
|
|
" TODO: CtrlP extensions. |
|
" CtrlPTabExtra : the part of each line that’s not matched against (Comment) |
|
" CtrlPqfLineCol : the line and column numbers in quickfix mode (|hl-Search|) |
|
" CtrlPUndoT : the elapsed time in undo mode (|hl-Directory|) |
|
" CtrlPUndoBr : the square brackets [] in undo mode (Comment) |
|
" CtrlPUndoNr : the undo number inside [] in undo mode (String) |
|
|
|
" }}} |
|
" EasyMotion {{{ |
|
|
|
call HL('EasyMotionTarget', 'tardis', 'bg', 'bold') |
|
call HL('EasyMotionShade', 'deepgravel', 'bg') |
|
|
|
" }}} |
|
" Interesting Words {{{ |
|
|
|
" These are only used if you're me or have copied the <leader>hNUM mappings |
|
" from my Vimrc. |
|
call HL('InterestingWord1', 'coal', 'orange') |
|
call HL('InterestingWord2', 'coal', 'lime') |
|
call HL('InterestingWord3', 'coal', 'taffy') |
|
|
|
" }}} |
|
" Makegreen {{{ |
|
|
|
" hi GreenBar term=reverse ctermfg=white ctermbg=green guifg=coal guibg=#9edf1c |
|
" hi RedBar term=reverse ctermfg=white ctermbg=red guifg=white guibg=#C50048 |
|
|
|
" }}} |
|
" ShowMarks {{{ |
|
|
|
call HL('ShowMarksHLl', 'tardis', 'blackgravel') |
|
call HL('ShowMarksHLu', 'tardis', 'blackgravel') |
|
call HL('ShowMarksHLo', 'tardis', 'blackgravel') |
|
call HL('ShowMarksHLm', 'tardis', 'blackgravel') |
|
|
|
" }}} |
|
|
|
" }}} |
|
" Filetype-specific {{{ |
|
|
|
" Clojure {{{ |
|
|
|
call HL('clojureSpecial', 'taffy', '', '') |
|
call HL('clojureDefn', 'taffy', '', '') |
|
call HL('clojureDefMacro', 'taffy', '', '') |
|
call HL('clojureDefine', 'taffy', '', '') |
|
call HL('clojureMacro', 'taffy', '', '') |
|
call HL('clojureCond', 'taffy', '', '') |
|
|
|
call HL('clojureKeyword', 'orange', '', 'none') |
|
|
|
call HL('clojureFunc', 'dress', '', 'none') |
|
call HL('clojureRepeat', 'dress', '', 'none') |
|
|
|
call HL('clojureParen0', 'lightgravel', '', 'none') |
|
|
|
call HL('clojureAnonArg', 'snow', '', 'bold') |
|
|
|
" }}} |
|
" CSS {{{ |
|
|
|
call HL('cssColorProp', 'fg', '', 'none') |
|
call HL('cssBoxProp', 'fg', '', 'none') |
|
call HL('cssTextProp', 'fg', '', 'none') |
|
call HL('cssRenderProp', 'fg', '', 'none') |
|
call HL('cssGeneratedContentProp', 'fg', '', 'none') |
|
|
|
call HL('cssValueLength', 'toffee', '', 'bold') |
|
call HL('cssColor', 'toffee', '', 'bold') |
|
call HL('cssBraces', 'lightgravel', '', 'none') |
|
call HL('cssIdentifier', 'orange', '', 'bold') |
|
call HL('cssClassName', 'orange', '', 'none') |
|
|
|
" }}} |
|
" Django Templates {{{ |
|
|
|
call HL('djangoArgument', 'dirtyblonde', '',) |
|
call HL('djangoTagBlock', 'orange', '') |
|
call HL('djangoVarBlock', 'orange', '') |
|
" hi djangoStatement guifg=#ff3853 gui=bold |
|
" hi djangoVarBlock guifg=#f4cf86 |
|
|
|
" }}} |
|
" HTML {{{ |
|
|
|
" Punctuation |
|
call HL('htmlTag', 'darkroast', 'bg', 'none') |
|
call HL('htmlEndTag', 'darkroast', 'bg', 'none') |
|
|
|
" Tag names |
|
call HL('htmlTagName', 'coffee', '', 'bold') |
|
call HL('htmlSpecialTagName', 'coffee', '', 'bold') |
|
|
|
" Attributes |
|
call HL('htmlArg', 'coffee', '', 'none') |
|
|
|
" Stuff inside an <a> tag |
|
call HL('htmlLink', 'lightgravel', '', 'underline') |
|
|
|
" }}} |
|
" Java {{{ |
|
|
|
call HL('javaClassDecl', 'taffy', '', 'bold') |
|
call HL('javaScopeDecl', 'taffy', '', 'bold') |
|
call HL('javaCommentTitle', 'gravel', '') |
|
call HL('javaDocTags', 'snow', '', 'none') |
|
call HL('javaDocParam', 'dalespale', '', '') |
|
|
|
" }}} |
|
" LessCSS {{{ |
|
|
|
call HL('lessVariable', 'lime', '', 'none') |
|
|
|
" }}} |
|
" Mail {{{ |
|
|
|
call HL('mailSubject', 'orange', '', 'bold') |
|
call HL('mailHeader', 'lightgravel', '', '') |
|
call HL('mailHeaderKey', 'lightgravel', '', '') |
|
call HL('mailHeaderEmail', 'snow', '', '') |
|
call HL('mailURL', 'toffee', '', 'underline') |
|
call HL('mailSignature', 'gravel', '', 'none') |
|
|
|
call HL('mailQuoted1', 'gravel', '', 'none') |
|
call HL('mailQuoted2', 'dress', '', 'none') |
|
call HL('mailQuoted3', 'dirtyblonde', '', 'none') |
|
call HL('mailQuoted4', 'orange', '', 'none') |
|
call HL('mailQuoted5', 'lime', '', 'none') |
|
|
|
" }}} |
|
" Markdown {{{ |
|
|
|
call HL('markdownHeadingRule', 'lightgravel', '', 'bold') |
|
call HL('markdownHeadingDelimiter', 'lightgravel', '', 'bold') |
|
call HL('markdownOrderedListMarker', 'lightgravel', '', 'bold') |
|
call HL('markdownListMarker', 'lightgravel', '', 'bold') |
|
call HL('markdownH1', 'orange', '', 'bold') |
|
call HL('markdownH2', 'lime', '', 'bold') |
|
call HL('markdownH3', 'lime', '', 'none') |
|
call HL('markdownH4', 'lime', '', 'none') |
|
call HL('markdownH5', 'lime', '', 'none') |
|
call HL('markdownH6', 'lime', '', 'none') |
|
call HL('markdownLinkText', 'toffee', '', 'underline') |
|
call HL('markdownIdDeclaration', 'toffee') |
|
call HL('markdownAutomaticLink', 'toffee', '', 'bold') |
|
call HL('markdownUrl', 'toffee', '', 'bold') |
|
call HL('markdownUrldelimiter', 'lightgravel', '', 'bold') |
|
call HL('markdownLinkDelimiter', 'lightgravel', '', 'bold') |
|
call HL('markdownLinkTextDelimiter', 'lightgravel', '', 'bold') |
|
call HL('markdownCodeDelimiter', 'dirtyblonde', '', 'bold') |
|
call HL('markdownCode', 'dirtyblonde', '', 'none') |
|
call HL('markdownCodeBlock', 'dirtyblonde', '', 'none') |
|
|
|
" }}} |
|
" Python {{{ |
|
|
|
hi def link pythonOperator Operator |
|
call HL('pythonBuiltin', 'dress') |
|
call HL('pythonEscape', 'dress') |
|
call HL('pythonException', 'lime', '', 'bold') |
|
call HL('pythonExceptions', 'lime', '', 'none') |
|
call HL('pythonDecorator', 'taffy', '', 'none') |
|
|
|
" }}} |
|
" Vim {{{ |
|
|
|
call HL('VimCommentTitle', 'lightgravel', '', 'bold') |
|
|
|
call HL('VimMapMod', 'dress', '', 'none') |
|
call HL('VimMapModKey', 'dress', '', 'none') |
|
call HL('VimNotation', 'dress', '', 'none') |
|
call HL('VimBracket', 'dress', '', 'none') |
|
|
|
" }}} |
|
|
|
" }}} |
|
|
|
|