Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
791 lines (732 sloc) 23 KB
" Source repo: http://github.com/rking/vim-detailed
"
" So many 256-color schemes merely shift the palette around, displaying only 8
" colors (even though they're a *different* set of 8 colors than default).
"
" This scheme is more detailed than that.
"
" Your eyes will learn to pick up on subtler patterns without requiring as
" much from your conscious mind. Instead of the goal being merely looking
" cool, the goal is to maximize info bandwidth from the computer to the brain.
" The regexes, for example, are much easier to pick out. The overall feel of a
" given file becomes much more intuitively recognizeable (you'll know you're
" in foo.rb, not bar.rb, without having to read any text). Certain bits will
" "pop" into being the right colors, such as the difference between
" "RUBY_VERISON" and "RUBY_VERSION", or # encoding: utf-8
"
" ## 256 Color Requirement
"
" If you aren't getting 256 colors, you aren't getting detailed.vim.
" Typically, you'll have to make sure your `$TERM` variable is set right. This
" can get un-set by some programs, such as tmux. So you can force it to
" something like:
"
" export TERM=screen-256color
" # or:
" export TERM=xterm-256color
"
" If these are unavailable on the target system, you might have to place a
" terminfo file in `~/.terminfo/` -or- you can be totally gross and force it
" with `:set &t_Co=256` in vim. But don't be gross. It's uncouth.
"
" ## Color Choices
"
" As a historical note, some small effort was taken to be similar to the
" default vim syntax highlighting where it makes sense. That is, "def" is
" magenta in the default, so vim-detailed makes it a shade of purple (and uses
" different shades for all the other magenta things from the default
" colorscheme). A person could modify this idea and do better:
"
" - Greens - The 256 color palette itself is heavy on green variants. If you
" used more greens, you'd be able to group similar-but-different pieces
" together more closely.
" - Coolness - If you adjusted the color choices for æsthetic value rather than
" utilitarian, you could get a more stylish theme without sacrificing much
" detail.
"
" ## Download
"
" If using Pathogen,
"
" cd ~/.vim/bundle && git clone https://github.com/rking/vim-detailed
"
" If using no vim plugin manager:
"
" mkdir -p ~/.vim/colors/ && cd $_ && wget https://raw.github.com/rking/vim-detailed/master/colors/detailed.vim
"
" ## Setup
"
" In your ~/.vimrc (or ~/.vim/plugin/colorscheme.vim if you like to organize):
"
" colo detailed
"
" This enables it globally. If you want to just do it for a trial, as long as
" you have done one of the steps in the "Download" section, above, you can do:
"
" vim foo.rb +colo\ detailed
"
" Or, from within vim:
"
" :colo detailed
let colors_name = 'detailed'
" Prevent any screwy setting from causing errors:
let s:save_cpo = &cpo | set cpo&vim
" Turn on moar syntaks!
let ruby_operators = 1
" If you don't have this, rails.vim will zap the matchers when it resets
" syntax for its own additions:
au Syntax * call s:fatpacked_rainbow_parens()
au Syntax ruby call s:detailed_syntax_addtions()
" Show detailed syntax stack
nmap <Leader>dets :call <SID>SynStack()<CR>
fun! <SID>SynStack()
echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfun
" Color Palette {{{
" Boring ctermfg ⇒ guifg map {{{
let s:cterm_gui_map = {
\0: '000000',
\1: 'ff0000',
\2: '00ff00',
\3: 'ffff00',
\4: '0000ff',
\5: 'ff00ff',
\6: '00ffff',
\16: '000000',
\17: '00005f',
\18: '000087',
\19: '0000af',
\20: '0000d7',
\21: '0000ff',
\22: '005f00',
\23: '005f5f',
\24: '005f87',
\25: '005faf',
\26: '005fd7',
\27: '005fff',
\28: '008700',
\29: '00875f',
\30: '008787',
\31: '0087af',
\32: '0087d7',
\33: '0087ff',
\34: '00af00',
\35: '00af5f',
\36: '00af87',
\37: '00afaf',
\38: '00afd7',
\39: '00afff',
\40: '00d700',
\41: '00d75f',
\42: '00d787',
\43: '00d7af',
\44: '00d7d7',
\45: '00d7ff',
\46: '00ff00',
\47: '00ff5f',
\48: '00ff87',
\49: '00ffaf',
\50: '00ffd7',
\51: '00ffff',
\52: '5f0000',
\53: '5f005f',
\54: '5f0087',
\55: '5f00af',
\56: '5f00d7',
\57: '5f00ff',
\58: '5f5f00',
\59: '5f5f5f',
\60: '5f5f87',
\61: '5f5faf',
\62: '5f5fd7',
\63: '5f5fff',
\64: '5f8700',
\65: '5f875f',
\66: '5f8787',
\67: '5f87af',
\68: '5f87d7',
\69: '5f87ff',
\70: '5faf00',
\71: '5faf5f',
\72: '5faf87',
\73: '5fafaf',
\74: '5fafd7',
\75: '5fafff',
\76: '5fd700',
\77: '5fd75f',
\78: '5fd787',
\79: '5fd7af',
\80: '5fd7d7',
\81: '5fd7ff',
\82: '5fff00',
\83: '5fff5f',
\84: '5fff87',
\85: '5fffaf',
\86: '5fffd7',
\87: '5fffff',
\88: '870000',
\89: '87005f',
\90: '870087',
\91: '8700af',
\92: '8700d7',
\93: '8700ff',
\94: '875f00',
\95: '875f5f',
\96: '875f87',
\97: '875faf',
\98: '875fd7',
\99: '875fff',
\100: '878700',
\101: '87875f',
\102: '878787',
\103: '8787af',
\104: '8787d7',
\105: '8787ff',
\106: '87af00',
\107: '87af5f',
\108: '87af87',
\109: '87afaf',
\110: '87afd7',
\111: '87afff',
\112: '87d700',
\113: '87d75f',
\114: '87d787',
\115: '87d7af',
\116: '87d7d7',
\117: '87d7ff',
\118: '87ff00',
\119: '87ff5f',
\120: '87ff87',
\121: '87ffaf',
\122: '87ffd7',
\123: '87ffff',
\124: 'af0000',
\125: 'af005f',
\126: 'af0087',
\127: 'af00af',
\128: 'af00d7',
\129: 'af00ff',
\130: 'af5f00',
\131: 'af5f5f',
\132: 'af5f87',
\133: 'af5faf',
\134: 'af5fd7',
\135: 'af5fff',
\136: 'af8700',
\137: 'af875f',
\138: 'af8787',
\139: 'af87af',
\140: 'af87d7',
\141: 'af87ff',
\142: 'afaf00',
\143: 'afaf5f',
\144: 'afaf87',
\145: 'afafaf',
\146: 'afafd7',
\147: 'afafff',
\148: 'afd700',
\149: 'afd75f',
\150: 'afd787',
\151: 'afd7af',
\152: 'afd7d7',
\153: 'afd7ff',
\154: 'afff00',
\155: 'afff5f',
\156: 'afff87',
\157: 'afffaf',
\158: 'afffd7',
\159: 'afffff',
\160: 'd70000',
\161: 'd7005f',
\162: 'd70087',
\163: 'd700af',
\164: 'd700d7',
\165: 'd700ff',
\166: 'd75f00',
\167: 'd75f5f',
\168: 'd75f87',
\169: 'd75faf',
\170: 'd75fd7',
\171: 'd75fff',
\172: 'd78700',
\173: 'd7875f',
\174: 'd78787',
\175: 'd787af',
\176: 'd787d7',
\177: 'd787ff',
\178: 'd7af00',
\179: 'd7af5f',
\180: 'd7af87',
\181: 'd7afaf',
\182: 'd7afd7',
\183: 'd7afff',
\184: 'd7d700',
\185: 'd7d75f',
\186: 'd7d787',
\187: 'd7d7af',
\188: 'd7d7d7',
\189: 'd7d7ff',
\190: 'd7ff00',
\191: 'd7ff5f',
\192: 'd7ff87',
\193: 'd7ffaf',
\194: 'd7ffd7',
\195: 'd7ffff',
\196: 'ff0000',
\197: 'ff005f',
\198: 'ff0087',
\199: 'ff00af',
\200: 'ff00d7',
\201: 'ff00ff',
\202: 'ff5f00',
\203: 'ff5f5f',
\204: 'ff5f87',
\205: 'ff5faf',
\206: 'ff5fd7',
\207: 'ff5fff',
\208: 'ff8700',
\209: 'ff875f',
\210: 'ff8787',
\211: 'ff87af',
\212: 'ff87d7',
\213: 'ff87ff',
\214: 'ffaf00',
\215: 'ffaf5f',
\216: 'ffaf87',
\217: 'ffafaf',
\218: 'ffafd7',
\219: 'ffafff',
\220: 'ffd700',
\221: 'ffd75f',
\222: 'ffd787',
\223: 'ffd7af',
\224: 'ffd7d7',
\225: 'ffd7ff',
\226: 'ffff00',
\227: 'ffff5f',
\228: 'ffff87',
\229: 'ffffaf',
\230: 'ffffd7',
\231: 'ffffff',
\232: '080808',
\233: '121212',
\234: '1c1c1c',
\235: '262626',
\236: '303030',
\237: '3a3a3a',
\238: '444444',
\239: '4e4e4e',
\240: '585858',
\241: '626262',
\242: '6c6c6c',
\243: '767676',
\244: '808080',
\245: '8a8a8a',
\246: '949494',
\247: '9e9e9e',
\248: 'a8a8a8',
\249: 'b2b2b2',
\250: 'bcbcbc',
\251: 'c6c6c6',
\252: 'd0d0d0',
\253: 'dadada',
\254: 'e4e4e4',
\255: 'eeeeee',
\}
" }}}
let s:c = {
\'basic8_red (TODO: use this)': 1,
\'basic8_green': 2,
\'basic8_yellow': 3,
\'basic8_blue (TODO: use this)': 4,
\'basic8_magenta': 5,
\'basic8_cyan': 6,
\'basic8_black': 0,
\'red52': 52,
\'red88': 88,
\'red124': 124,
\'red160': 160,
\'red161': 161,
\'red196': 196,
\'yellow58': 58,
\'yellow100': 100,
\'yellow136 (TODO: use this)': 136,
\'yellow142 (TODO: use this)': 142,
\'yellow148': 148,
\'yellow149': 149,
\'yellow190': 190,
\'yellow220 (TODO: use this)': 220,
\'yellow228': 228,
\'orange208': 208,
\'orange178': 178,
\'orange180': 180,
\'orange222': 222,
\'light_yellow230': 229,
\'graygreen (TODO: use this)': 23,
\'green22': 22,
\'green23': 23,
\'green34': 34,
\'green71': 71,
\'green76': 76,
\'green84': 84,
\'green123': 123,
\'seafoam': 30,
\'seafoam2 (TODO: use this)': 35,
\'teal50': 50,
\'blue17 (TODO: use this)': 17,
\'blue19 (TODO: use this)': 19,
\'blue20 (TODO: use this)': 20,
\'blue25': 25,
\'blue27': 27,
\'blue33': 33,
\'blue37': 37,
\'blue75': 75,
\'blue87': 87,
\'lavender104': 104,
\'purple53': 53,
\'purple89 (TODO: use this)': 89,
\'purple90': 90,
\'purple95 (TODO: use this)': 95,
\'purple99 (TODO: use this)': 79,
\'purple125': 125,
\'purple126': 126,
\'purple127 (TODO: use this)': 127,
\'purple129 (TODO: use this)': 129,
\'purple131': 131,
\'purple141 (TODO: use this)': 141,
\'purple161 (TODO: use this)': 161,
\'purple201': 201,
\'purple224': 224,
\'purple225': 225,
\'gray16': 16,
\'gray232': 232,
\'gray233': 233,
\'gray234': 234,
\'gray235': 235,
\'gray236': 236,
\'gray237': 237,
\'gray238': 238,
\'gray239': 239,
\'gray240': 240,
\'gray241': 241,
\'gray242': 242,
\'gray243': 243,
\'gray244': 244,
\'gray245': 245,
\'gray246': 246,
\'gray247': 247,
\'gray248': 248,
\'gray249': 249,
\'gray250': 250,
\'gray251': 251,
\'gray252': 252,
\'gray253': 253,
\'gray254': 254,
\'gray255': 255,
\}
" }}}
" :hi funcs {{{
fun! s:color_for(id, fgbg)
let num = s:c[a:id]
let gui = s:cterm_gui_map[l:num]
return 'cterm'.a:fgbg.'='.l:num.' gui'.a:fgbg.'=#'.l:gui
endfun
fun! s:fg(group, fg)
exe 'hi '.a:group.' '.s:color_for(a:fg,'fg')
endfun
fun! s:bg(group, bg)
exe 'hi '.a:group.' '.s:color_for(a:bg,'bg')
endfun
fun! s:fgbg(group, fg, bg)
exe 'hi '.a:group.' '.s:color_for(a:fg,'fg').' '.s:color_for(a:bg,'bg')
endfun
fun! s:bold_fg(group, fg)
exe 'hi '.a:group.' '.s:color_for(a:fg,'fg').' cterm=bold gui=bold'
endfun
fun! s:underline_fgbg(group, fg, bg)
exe 'hi '.a:group.' ctermfg='.s:c[a:fg].' '
\s:color_for(a:bg,'bg').' cterm=underline,bold gui=underline,bold'
endfun
fun! s:make_obvious(group)
call s:fgbg(a:group, 'green84', 'red160')
endfun
" }}}
" For now, force darkness. If you're a big fan of white bg's, let me know, and
" we can collaborate on a solution.
set bg=dark
hi Normal ctermfg=254 ctermbg=0
call s:fgbg('Normal', 'gray254', 'basic8_black')
" Note: ctermbg=233 was my previous value before user feedback. Any opinions?
" Basic/Default-like Palette {{{
hi SpecialKey term=bold ctermfg=81 guifg=Cyan
hi NonText term=bold ctermfg=12 gui=bold guifg=Blue
hi Directory term=bold ctermfg=159 guifg=Cyan
hi ErrorMsg term=standout ctermfg=15 ctermbg=1 guifg=White guibg=Red
hi IncSearch term=reverse cterm=reverse gui=reverse
hi Search term=reverse ctermfg=0 ctermbg=11 guifg=Black guibg=Yellow
hi MoreMsg term=bold ctermfg=121 gui=bold guifg=SeaGreen
hi ModeMsg term=bold cterm=bold gui=bold
hi LineNr term=underline ctermfg=11 guifg=Yellow
hi CursorLineNr term=bold ctermfg=11 gui=bold guifg=Yellow
hi Question term=standout ctermfg=121 gui=bold guifg=Green
hi StatusLine term=bold,reverse cterm=bold,reverse gui=bold,reverse
hi StatusLineNC term=reverse cterm=reverse gui=reverse
hi VertSplit term=reverse cterm=reverse gui=reverse
hi Title term=bold ctermfg=225 gui=bold guifg=Magenta
hi Visual term=reverse ctermbg=242 guibg=DarkGrey
hi VisualNOS term=bold,underline cterm=bold,underline gui=bold,underline
hi WarningMsg term=standout ctermfg=224 guifg=Red
hi WildMenu term=standout ctermfg=0 ctermbg=11 guifg=Black guibg=Yellow
hi Folded term=standout ctermfg=14 ctermbg=242 guifg=Cyan guibg=DarkGrey
hi FoldColumn term=standout ctermfg=14 ctermbg=242 guifg=Cyan guibg=Grey
hi DiffAdd term=bold ctermbg=4 guibg=DarkBlue
hi DiffChange term=bold ctermbg=5 guibg=DarkMagenta
hi DiffDelete term=bold ctermfg=12 ctermbg=6 gui=bold guifg=Blue guibg=DarkCyan
hi DiffText term=reverse cterm=bold ctermbg=9 gui=bold guibg=Red
hi SignColumn term=standout ctermfg=14 ctermbg=242 guifg=Cyan guibg=Grey
hi Conceal ctermfg=7 ctermbg=242 guifg=LightGrey guibg=DarkGrey
hi SpellBad term=reverse ctermbg=9 gui=undercurl guisp=Red
hi SpellCap term=reverse ctermbg=12 gui=undercurl guisp=Blue
hi SpellRare term=reverse ctermbg=13 gui=undercurl guisp=Magenta
hi SpellLocal term=underline ctermbg=14 gui=undercurl guisp=Cyan
hi Pmenu ctermfg=0 ctermbg=13 guibg=Magenta
hi PmenuSel ctermfg=0 ctermbg=242 guibg=DarkGrey
hi PmenuSbar ctermbg=248 guibg=Grey
hi PmenuThumb ctermbg=15 guibg=White
hi TabLine term=underline cterm=underline ctermfg=15 ctermbg=242 gui=underline guibg=DarkGrey
hi TabLineSel term=bold cterm=bold gui=bold
hi TabLineFill term=reverse cterm=reverse gui=reverse
hi CursorColumn term=reverse ctermbg=242 guibg=Grey40
hi CursorLine term=underline cterm=underline guibg=Grey40
hi ColorColumn term=reverse ctermfg=9 ctermbg=12 guifg=black guibg=lightgrey
hi MatchParen term=reverse ctermbg=6 guibg=DarkCyan
hi Constant term=underline ctermfg=13 guifg=#ffa0a0
hi Special term=bold ctermfg=224 guifg=Orange
hi Identifier term=underline cterm=bold ctermfg=14 guifg=#40ffff
hi Statement term=bold ctermfg=11 gui=bold guifg=#ffff60
hi PreProc term=underline ctermfg=81 guifg=#ff80ff
hi Type term=underline ctermfg=121 gui=bold guifg=#60ff60
hi Underlined term=underline cterm=underline ctermfg=81 gui=underline guifg=#80a0ff
hi Ignore ctermfg=0 guifg=bg
hi Error term=reverse ctermfg=15 ctermbg=9 guifg=White guibg=Red
hi Todo term=standout ctermfg=0 ctermbg=11 guifg=Blue guibg=Yellow
call s:fg('Comment', 'gray242') " In my books, comments should be quiet.
" }}}
" Default links {{{
hi link String Constant
hi link Character Constant
hi link Number Constant
hi link Boolean Constant
hi link Float Number
hi link Function Identifier
hi link Conditional Statement
hi link Repeat Statement
hi link Label Statement
hi link Operator Statement
hi link Keyword Statement
hi link Include PreProc
hi link Define PreProc
hi link Macro PreProc
hi link PreCondit PreProc
hi link StorageClass Type
hi link Structure Type
hi link Typedef Type
hi link Tag Special
hi link SpecialChar Special
hi link Delimiter Special
hi link SpecialComment Special
hi link Debug Special
hi link mailQuoted1 Type
hi link GPGWarning WarningMsg
hi link GPGError ErrorMsg
hi link GPGHighlightUnknownRecipient ErrorMsg
hi link rubyConditional Conditional
hi link rubyExceptional rubyConditional " No-show.
hi link rubyMethodExceptional rubyDefine " And another.
hi link rubyStringEscape Special
hi link rubyQuoteEscape rubyStringEscape
" hi rubyInterpolation cleared
hi link rubyInvalidVariable Error
hi link rubyNoInterpolation rubyString " E.g. \#{} inside a string.
hi link rubyException Exception
hi link rubyKeyword Keyword
"}}}
" s:detailed_colors — the good stuff {{{
fun! s:detailed_colors()
" vimdiff uses Diff*
call s:bg('DiffChange', 'gray240')
call s:bg('DiffText', 'gray232')
call s:bg('DiffAdd', 'green23')
call s:bg('DiffDelete', 'yellow58')
" ft=diff syntax uses diff*
call s:fg('diffAdded', 'green34')
call s:fg('diffRemoved', 'yellow58')
" diffFile
call s:fg('rubyConstant', 'green34')
call s:bold_fg('rubyClass', 'purple126')
call s:fg('rubyModule', 'purple126')
call s:fg('rubyDefine', 'basic8_magenta')
call s:fg('rubyInclude', 'purple53')
call s:bold_fg('rubyFunction', 'blue27')
" No-show: call s:make_obvious('rubyMethodDeclaration')
call s:fg('rubyInstanceVariable', 'blue75')
call s:fgbg('rubyString', 'red160', 'gray233')
call s:fg('rubyStringDelimiter', 'blue33')
call s:fg('rubyInterpolationDelimiter', 'gray244')
call s:fg('rubyRegexpSpecial', 'seafoam')
hi link rubyRegexpComment Comment
" Not quite sure why these don't show up:
" call s:make_obvious('rubyRegexpParens')
" call s:make_obvious('rubyRegexpBrackets')
call s:fg('rubyRegexpCharClass', 'basic8_green')
call s:fg('rubyRegexpQuantifier', 'yellow148')
call s:bold_fg('rubyRegexpEscape', 'purple90')
call s:fg('rubyRegexpAnchor', 'purple90')
call s:fg('rubyRegexpDot', 'green34')
call s:bold_fg('rubyRegexpDelimiter', 'red88')
call s:fgbg('rubyRegexp', 'red160', 'gray233')
call s:fg('rubyASCIICode', 'green71')
call s:fg('rubyPseudoVariable', 'purple125')
call s:fg('rubyInteger', 'red124')
call s:fg('rubyFloat', 'red160')
call s:fg('rubyBlockArgument', 'blue87')
call s:fg('rubySymbol', 'lavender104')
call s:bold_fg('rubyBlockParameter', 'basic8_cyan')
call s:fg('rubyBlockParameterList', 'blue25')
call s:bold_fg('rubyPredefinedConstant', 'green22')
call s:bold_fg('rubyPredefinedVariable', 'blue37')
" XXX no clue why this wont show up: call s:make_obvious('rubyHeredocStart')
" TODO: fix these: call s:make_obvious('rubyAliasDeclaration2')
" call s:make_obvious('rubyAliasDeclaration')
call s:fg('rubyBoolean', 'purple131')
call s:fg('rubyOperator', 'green123')
hi link rubyPseudoOperator rubyOperator " -= /= **= *= etc
" TODO! call s:make_obvious('rubyClassDeclaration')
" call s:make_obvious('rubyDeclaration')
" call s:make_obvious('rubyModuleDeclaration')
hi link rubyBeginEnd Statement " TODO
call s:fg('rubyAccess', 'yellow100')
call s:fg('rubyAttribute', 'orange178') " attr_{accessor,reader,writer}
call s:fg('rubyEval', 'yellow190')
" Blocks:
" (basic)
call s:fg('rubyMethodBlock', 'purple224')
call s:fg('rubyBlock', 'purple225')
call s:fg('rubyBlockExpression', 'orange180')
" (conditionals)
call s:fg('rubyControl', 'orange178')
call s:bold_fg('Conditional', 'basic8_yellow')
call s:bold_fg('rubyConditionalModifier', 'yellow148') " 'Yoda if'
call s:fg('rubyConditionalExpression', 'light_yellow230')
hi link rubyCaseExpression rubyConditionalExpression
" (loops)
call s:fg('rubyRepeat', 'orange178')
call s:bold_fg('rubyRepeatModifier', 'yellow149') " …while/until
call s:fg('rubyRepeatExpression', 'orange222')
hi link rubyDoBlock rubyRepeatExpression
" TODO: call s:make_obvious('rubyOptionalDo')
" TODO: call s:make_obvious('rubyOptionalDoLine')
call s:fg('rubySharpBang', 'gray251')
hi link rubyFirstAndSecondCommentLine rubySharpBang
hi link rubyComment Comment
" hi rubyMultilineComment cleared
hi link rubyDocumentation Comment
call s:fg('rubyDataDirective', 'purple201')
call s:fg('rubyData', 'gray245')
"* Distinguish between each of TODO/FIXME/XXX
call s:fgbg('detailTodo', 'green76', 'gray238')
call s:fgbg('detailFixme', 'gray232', 'orange208')
call s:fgbg('detailXxx', 'gray235', 'red196')
call s:fgbg('Error', 'gray235', 'red196')
call s:underline_fgbg('Search', 'gray254', 'gray235')
" https://github.com/bitc/vim-bad-whitespace
call s:fgbg('BadWhitespace', 'gray238', 'yellow58')
hi link rubySpaceError BadWhitespace
"* `fail`/`raise`/`exit` were yellow by default, but here a more warny orange.
call s:fg('Exception', 'orange208')
hi link rubyExits Exception
"* class `@@vars` get ugly, cautionary color: they are troublesome.
call s:fgbg('rubyClassVariable', 'blue75', 'red52')
"* global `$vars` also get a bit of ugliness. Everyone knows they're iffy.
call s:fgbg('rubyGlobalVariable', 'red161', 'gray234')
" rails.vim niceness:
call s:fg('rubyRailsARAssociationMethod', 'teal50')
" detailed.vim especialties:
call s:fg('rubyInitialize', 'green84')
call s:bold_fg('rubyEncodingDirective', 'green22')
" Only linked highlights, not actual syntax:
" call s:make_obvious('rubyIdentifier')
" call s:make_obvious('rubyError')
" Pretty much just the leftover default:
" call s:make_obvious('rubyLocalVariableOrMethod')
" Gets all [{()}] within any {}'s. Not very useful AFAICT:
" call s:make_obvious('rubyCurlyBlock')
" These mess up on first ] of [a[1]]. Seems plain busted.
" call s:make_obvious('rubyArrayDelimiter')
" call s:make_obvious('rubyArrayLiteral')
" Mere implementation details, AFAICT:
" call s:make_obvious('rubyNestedParentheses')
" call s:make_obvious('rubyNestedCurlyBraces')
" call s:make_obvious('rubyNestedAngleBrackets')
" call s:make_obvious('rubyNestedSquareBrackets')
" call s:make_obvious('rubyDelimEscape')
" call s:make_obvious('rubySymbolDelimiter')
endfun
" }}}
fun! s:detailed_syntax_addtions()
call s:detailed_colors()
" The default syntax/ruby.vim gets this way wrong (only does 2 chars and is
" transparent):
syn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]*" contains=NONE display
" Steal this back from the too-generic 'rubyControl':
syn match rubyExits "\<\%(exit!\|\%(abort\|at_exit\|exit\|fork\|trap\)\>[?!]\@!\)"
" Bonus!
syn match rubyInitialize '\<initialize\>' contained containedin=rubyMethodDeclaration
syn match rubyEncodingDirective "\cencoding: *utf-8" contained
" TODO - make this more elegant.
syn match rubyFirstAndSecondCommentLine '\%^#.*'
\ contains=rubyEncodingDirective contained
syn match rubyFirstAndSecondCommentLine '\%^#.*\n#.*'
\ contains=rubyEncodingDirective contained
syn keyword detailTodo TODO contained
syn keyword detailFixme FIXME contained
syn keyword detailXxx XXX contained
syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,
\rubyFirstAndSecondCommentLine,detailTodo,detailFixme,detailXxx,@Spell
" TODO - somehow make the detail{Todo,Fixme,Xxx} work for non-ruby langs.
endfun
call s:detailed_syntax_addtions()
" Rainbow-Parens Improved {{{
" Inlined from v2.3 of http://www.vim.org/scripts/script.php?script_id=4176
" 1. to remove the external dep, 2. to work around vim-rails resetting it.
" Thanks!
fun! s:fatpacked_rainbow_parens()
let guifgs = exists('g:rainbow_guifgs')? g:rainbow_guifgs : [
\ 'DarkOrchid3', 'RoyalBlue3', 'SeaGreen3',
\ 'DarkOrange3', 'FireBrick',
\ ]
let ctermfgs = exists('g:rainbow_ctermfgs')? g:rainbow_ctermfgs : [
\ 'darkgray', 'Darkblue', 'darkmagenta',
\ 'darkcyan', 'darkred', 'darkgreen',
\ ]
let max = has('gui_running')? len(guifgs) : len(ctermfgs)
let cmd = 'syn region %s matchgroup=%s start=/%s/ end=/%s/ containedin=%s contains=%s'
let str = 'TOP'
for each in range(1, max)
let str .= ',lv'.each
endfor
for [left , right] in [['(',')'],['\[','\]'],['{','}']]
for each in range(1, max - 1)
exe printf(cmd, 'lv'.each, 'lv'.each.'c', left, right, 'lv'.(each+1) , str)
endfor
exe printf(cmd, 'lv'.max, 'lv'.max.'c', left, right, 'lv1' , str)
endfor
for id in range(1 , max)
let ctermfg = ctermfgs[(max - id) % len(ctermfgs)]
let guifg = guifgs[(max - id) % len(guifgs)]
exe 'hi default lv'.id.'c ctermfg='.ctermfg.' guifg='.guifg
endfor
endfun
" }}}
let &cpo = s:save_cpo
" vim:foldmethod=marker
Jump to Line
Something went wrong with that request. Please try again.