Skip to content
Browse files

initial

  • Loading branch information...
0 parents commit 60a157cd03bd5da1075b03746284d138a9ff9348 @mikeyk committed Aug 12, 2012
1 .gitignore
@@ -0,0 +1 @@
+*swp
8 setup_symlinks.sh
@@ -0,0 +1,8 @@
+#! /bin/sh
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+ln -ns $DIR/zshrc ~/.zshrc
+ln -ns $DIR/zsh ~/.zsh
+ln -ns $DIR/vimrc ~/.vimrc
+ln -ns $DIR/vim ~/.vim
1 vim/.VimballRecord
@@ -0,0 +1 @@
+netrw.vba: call delete('/Users/mkrieger/.vim/plugin/netrwPlugin.vim')|call delete('/Users/mkrieger/.vim/autoload/netrw.vim')|call delete('/Users/mkrieger/.vim/autoload/netrwFileHandlers.vim')|call delete('/Users/mkrieger/.vim/autoload/netrwSettings.vim')|call delete('/Users/mkrieger/.vim/doc/pi_netrw.txt')|call delete('/Users/mkrieger/.vim/syntax/netrw.vim')
7 vim/.netrwhist
@@ -0,0 +1,7 @@
+let g:netrw_dirhistmax =10
+let g:netrw_dirhist_cnt =5
+let g:netrw_dirhist_1='/Users/mkrieger/src/instagram-kitchen/cookbooks'
+let g:netrw_dirhist_2='/Users/mkrieger/src/instagram-kitchen/cookbooks/rabbitmq'
+let g:netrw_dirhist_3='/Users/mkrieger/src/instagram-kitchen/.chef'
+let g:netrw_dirhist_4='/Users/mkrieger/src/instagram-kitchen/.chef/plugins'
+let g:netrw_dirhist_5='/Users/mkrieger/src/instagram-kitchen/.chef/plugins/knife'
11 vim/.netrwhist (Mike Krieger's conflicted copy 2011-12-12)
@@ -0,0 +1,11 @@
+let g:netrw_dirhistmax =10
+let g:netrw_dirhist_cnt =9
+let g:netrw_dirhist_1='/Users/mkrieger/src/distillery-server/distillery/locations'
+let g:netrw_dirhist_2='/Users/mkrieger/src/distillery-server/distillery'
+let g:netrw_dirhist_3='/Users/mkrieger/Dropbox/mikeyk-wiki/vimstuff/bundle/pyflakes/pyflakes'
+let g:netrw_dirhist_4='/Users/mkrieger/src/distillery-server/distillery'
+let g:netrw_dirhist_5='/Users/mkrieger/src/distillery-server'
+let g:netrw_dirhist_6='/Users/mkrieger/src'
+let g:netrw_dirhist_7='/Users/mkrieger/src/distillery-server/distillery'
+let g:netrw_dirhist_8='/Users/mkrieger/src/distillery-server/distillery/dogslow'
+let g:netrw_dirhist_9='/Users/mkrieger/src/distillery-server/distillery'
3 vim/.netrwhist (Mike Krieger's conflicted copy 2011-12-22)
@@ -0,0 +1,3 @@
+let g:netrw_dirhistmax =10
+let g:netrw_dirhist_cnt =1
+let g:netrw_dirhist_1='/Users/mkrieger/src/django/django/core/cache/backends'
10 vim/.netrwhist (Mike Krieger's conflicted copy 2012-01-17)
@@ -0,0 +1,10 @@
+let g:netrw_dirhistmax =10
+let g:netrw_dirhist_cnt =8
+let g:netrw_dirhist_1='/Users/mkrieger/src/distillery-server/distillery/conf/shards'
+let g:netrw_dirhist_2='/Users/mkrieger/src/distillery-deploy/ebs'
+let g:netrw_dirhist_3='/Users/mkrieger/src/distillery-server/distillery'
+let g:netrw_dirhist_4='/Users/mkrieger/src/distillery-server/distillery/conf/shards'
+let g:netrw_dirhist_5='/Users/mkrieger/src/distillery-server/distillery'
+let g:netrw_dirhist_6='/Users/mkrieger/src/distillery-server/distillery/about'
+let g:netrw_dirhist_7='/Users/mkrieger/src/Distillery-Server/distillery/accounts/templates/accounts'
+let g:netrw_dirhist_8='/Users/mkrieger/src/distillery-server/distillery'
2 vim/.netrwhist (Mike Krieger's conflicted copy 2012-01-27)
@@ -0,0 +1,2 @@
+let g:netrw_dirhistmax =10
+let g:netrw_dirhist_cnt =0
2 vim/.netrwhist~
@@ -0,0 +1,2 @@
+let g:netrw_dirhistmax =10
+let g:netrw_dirhist_cnt =0
173 vim/.vimrc
@@ -0,0 +1,173 @@
+""" Start Pathogen
+call pathogen#infect()
+
+set nocompatible
+
+set autoindent
+set smartindent
+
+set esckeys
+
+set magic
+
+set ruler
+set binary noeol
+
+" for searching
+set incsearch
+set showmatch
+set hlsearch
+map <silent> <leader><space> :noh<cr>
+
+" Save on losing focus
+au FocusLost * :wa
+
+set showmode
+
+set title
+set wildchar=<TAB>
+
+set ignorecase
+set smartcase
+" set the backup dir to declutter working directory.
+" two ending slashes means, full path to the actual filename
+" -- thanks to indygemma
+silent! !mkdir -p /tmp/vim-backup
+silent! !mkdir -p /tmp/vim-swap
+set ruler
+silent! !mkdir -p /tmp/vim-undo
+set backup
+set backupdir=/tmp/vim-backup/
+set directory=/tmp/vim-swap/
+" Persistent undos (vim 7.3+)
+set undofile
+set undodir=/tmp/vim-undo/
+
+set gdefault " default replace all in line
+
+" use perl/python style regexp
+nnoremap / /\v
+vnoremap / /\v
+
+filetype plugin indent on
+filetype plugin on
+
+syntax on
+
+set guifont=Anonymous\ Pro:h13
+inoremap # X#
+
+inoremap jj <ESC>
+
+" easier movement for splits
+nnoremap <leader>w <C-w>v<C-w>l
+nnoremap <C-h> <C-w>h
+nnoremap <C-j> <C-w>j
+nnoremap <C-k> <C-w>k
+nnoremap <C-l> <C-w>l
+
+set softtabstop=4 shiftwidth=4
+set expandtab
+set backspace=2 " backspace behaves properly
+
+set background=dark
+colorscheme vividchalk
+
+map <Leader>p :call ShowPyFlakes()<CR>
+map <Leader>a :call ShowAck()<CR>
+nnoremap <leader>r :set relativenumber!<cr>
+nnoremap <leader>e :set paste!<cr>
+nnoremap <leader>s :set clipboard=unnamed<cr>
+nnoremap <leader>d :set clipboard=''<cr>
+nnoremap <leader>c :set cursorline!<cr>
+nnoremap <silent> <leader>y :YRShow<cr>
+
+function! ShowPyFlakes()
+ :PyflakesUpdate
+ if !exists("s:pyflakes_qf")
+ :botright cwindow
+ endif
+endfunction
+
+function! ShowAck()
+ :Ack
+endfunction
+
+fun! <SID>StripTrailingWhitespaces()
+ let l = line(".")
+ let c = col(".")
+ %s/\s\+$//e
+ call cursor(l, c)
+endfun
+
+autocmd BufWritePre * :call <SID>StripTrailingWhitespaces()
+
+""""" Searching
+"""""
+
+" When you press gv you vimgrep after the selected text
+nmap <leader>a <ESC>:Ack<space>
+map <leader>g :call SearchForCurrentWord()<CR>
+
+
+func! SearchForCurrentWord()
+ :let @/=expand("<cword>")
+ :vsplit
+ call CmdLine("Ack \"" . @/ . "\"")
+endfunction
+
+function! CmdLine(str)
+ exe "menu Foo.Bar :" . a:str
+ emenu Foo.Bar
+ unmenu Foo
+endfunction
+
+""" Jump to folders
+
+command! DP :exec ":cd ~/src/distillery-deploy/ | e . "
+command! DST :exec ":cd ~/src/distillery-server/distillery/ | e ."
+
+
+""" Via John Resig, add some memory to Vim
+
+" Tell vim to remember certain things when we exit
+" '10 : marks will be remembered for up to 10 previously edited files
+" "100 : will save up to 100 lines for each register
+" :20 : up to 20 lines of command-line history will be remembered
+" % : saves and restores the buffer list
+" n... : where to save the viminfo files
+set viminfo='10,\"100,:20,%,n~/.viminfo
+
+" when we reload, tell vim to restore the cursor to the saved position
+augroup JumpCursorOnEdit
+ au!
+ autocmd BufReadPost *
+ \ if expand("<afile>:p:h") !=? $TEMP |
+ \ if line("'\"") > 1 && line("'\"") <= line("$") |
+ \ let JumpCursorOnEdit_foo = line("'\"") |
+ \ let b:doopenfold = 1 |
+ \ if (foldlevel(JumpCursorOnEdit_foo) > foldlevel(JumpCursorOnEdit_foo - 1)) |
+ \ let JumpCursorOnEdit_foo = JumpCursorOnEdit_foo - 1 |
+ \ let b:doopenfold = 2 |
+ \ endif |
+ \ exe JumpCursorOnEdit_foo |
+ \ endif |
+ \ endif
+ " Need to postpone using "zv" until after reading the modelines.
+ autocmd BufWinEnter *
+ \ if exists("b:doopenfold") |
+ \ exe "normal zv" |
+ \ if(b:doopenfold > 1) |
+ \ exe "+".1 |
+ \ endif |
+ \ unlet b:doopenfold |
+ \ endif
+augroup END
+
+set foldmethod=indent "fold based on indent
+set foldnestmax=10 "deepest fold is 10 levels
+set nofoldenable "dont fold by default
+set foldlevel=1 "this is just what i use
+
+" Make vim clipboard match Mac OS X clipboard
+" set clipboard=unnamed
245 vim/autoload/pathogen.vim
@@ -0,0 +1,245 @@
+" pathogen.vim - path option manipulation
+" Maintainer: Tim Pope <http://tpo.pe/>
+" Version: 2.0
+
+" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
+"
+" For management of individually installed plugins in ~/.vim/bundle (or
+" ~\vimfiles\bundle), adding `call pathogen#infect()` to your .vimrc
+" prior to `filetype plugin indent on` is the only other setup necessary.
+"
+" The API is documented inline below. For maximum ease of reading,
+" :set foldmethod=marker
+
+if exists("g:loaded_pathogen") || &cp
+ finish
+endif
+let g:loaded_pathogen = 1
+
+" Point of entry for basic default usage. Give a directory name to invoke
+" pathogen#runtime_append_all_bundles() (defaults to "bundle"), or a full path
+" to invoke pathogen#runtime_prepend_subdirectories(). Afterwards,
+" pathogen#cycle_filetype() is invoked.
+function! pathogen#infect(...) abort " {{{1
+ let source_path = a:0 ? a:1 : 'bundle'
+ if source_path =~# '[\\/]'
+ call pathogen#runtime_prepend_subdirectories(source_path)
+ else
+ call pathogen#runtime_append_all_bundles(source_path)
+ endif
+ call pathogen#cycle_filetype()
+endfunction " }}}1
+
+" Split a path into a list.
+function! pathogen#split(path) abort " {{{1
+ if type(a:path) == type([]) | return a:path | endif
+ let split = split(a:path,'\\\@<!\%(\\\\\)*\zs,')
+ return map(split,'substitute(v:val,''\\\([\\,]\)'',''\1'',"g")')
+endfunction " }}}1
+
+" Convert a list to a path.
+function! pathogen#join(...) abort " {{{1
+ if type(a:1) == type(1) && a:1
+ let i = 1
+ let space = ' '
+ else
+ let i = 0
+ let space = ''
+ endif
+ let path = ""
+ while i < a:0
+ if type(a:000[i]) == type([])
+ let list = a:000[i]
+ let j = 0
+ while j < len(list)
+ let escaped = substitute(list[j],'[,'.space.']\|\\[\,'.space.']\@=','\\&','g')
+ let path .= ',' . escaped
+ let j += 1
+ endwhile
+ else
+ let path .= "," . a:000[i]
+ endif
+ let i += 1
+ endwhile
+ return substitute(path,'^,','','')
+endfunction " }}}1
+
+" Convert a list to a path with escaped spaces for 'path', 'tag', etc.
+function! pathogen#legacyjoin(...) abort " {{{1
+ return call('pathogen#join',[1] + a:000)
+endfunction " }}}1
+
+" Remove duplicates from a list.
+function! pathogen#uniq(list) abort " {{{1
+ let i = 0
+ let seen = {}
+ while i < len(a:list)
+ if (a:list[i] ==# '' && exists('empty')) || has_key(seen,a:list[i])
+ call remove(a:list,i)
+ elseif a:list[i] ==# ''
+ let i += 1
+ let empty = 1
+ else
+ let seen[a:list[i]] = 1
+ let i += 1
+ endif
+ endwhile
+ return a:list
+endfunction " }}}1
+
+" \ on Windows unless shellslash is set, / everywhere else.
+function! pathogen#separator() abort " {{{1
+ return !exists("+shellslash") || &shellslash ? '/' : '\'
+endfunction " }}}1
+
+" Convenience wrapper around glob() which returns a list.
+function! pathogen#glob(pattern) abort " {{{1
+ let files = split(glob(a:pattern),"\n")
+ return map(files,'substitute(v:val,"[".pathogen#separator()."/]$","","")')
+endfunction "}}}1
+
+" Like pathogen#glob(), only limit the results to directories.
+function! pathogen#glob_directories(pattern) abort " {{{1
+ return filter(pathogen#glob(a:pattern),'isdirectory(v:val)')
+endfunction "}}}1
+
+" Turn filetype detection off and back on again if it was already enabled.
+function! pathogen#cycle_filetype() " {{{1
+ if exists('g:did_load_filetypes')
+ filetype off
+ filetype on
+ endif
+endfunction " }}}1
+
+" Checks if a bundle is 'disabled'. A bundle is considered 'disabled' if
+" its 'basename()' is included in g:pathogen_disabled[]' or ends in a tilde.
+function! pathogen#is_disabled(path) " {{{1
+ if a:path =~# '\~$'
+ return 1
+ elseif !exists("g:pathogen_disabled")
+ return 0
+ endif
+ let sep = pathogen#separator()
+ return index(g:pathogen_disabled, strpart(a:path, strridx(a:path, sep)+1)) != -1
+endfunction "}}}1
+
+" Prepend all subdirectories of path to the rtp, and append all 'after'
+" directories in those subdirectories.
+function! pathogen#runtime_prepend_subdirectories(path) " {{{1
+ let sep = pathogen#separator()
+ let before = filter(pathogen#glob_directories(a:path.sep."*"), '!pathogen#is_disabled(v:val)')
+ let after = filter(pathogen#glob_directories(a:path.sep."*".sep."after"), '!pathogen#is_disabled(v:val[0:-7])')
+ let rtp = pathogen#split(&rtp)
+ let path = expand(a:path)
+ call filter(rtp,'v:val[0:strlen(path)-1] !=# path')
+ let &rtp = pathogen#join(pathogen#uniq(before + rtp + after))
+ return &rtp
+endfunction " }}}1
+
+" For each directory in rtp, check for a subdirectory named dir. If it
+" exists, add all subdirectories of that subdirectory to the rtp, immediately
+" after the original directory. If no argument is given, 'bundle' is used.
+" Repeated calls with the same arguments are ignored.
+function! pathogen#runtime_append_all_bundles(...) " {{{1
+ let sep = pathogen#separator()
+ let name = a:0 ? a:1 : 'bundle'
+ if "\n".s:done_bundles =~# "\\M\n".name."\n"
+ return ""
+ endif
+ let s:done_bundles .= name . "\n"
+ let list = []
+ for dir in pathogen#split(&rtp)
+ if dir =~# '\<after$'
+ let list += filter(pathogen#glob_directories(substitute(dir,'after$',name,'').sep.'*[^~]'.sep.'after'), '!pathogen#is_disabled(v:val[0:-7])') + [dir]
+ else
+ let list += [dir] + filter(pathogen#glob_directories(dir.sep.name.sep.'*[^~]'), '!pathogen#is_disabled(v:val)')
+ endif
+ endfor
+ let &rtp = pathogen#join(pathogen#uniq(list))
+ return 1
+endfunction
+
+let s:done_bundles = ''
+" }}}1
+
+" Invoke :helptags on all non-$VIM doc directories in runtimepath.
+function! pathogen#helptags() " {{{1
+ let sep = pathogen#separator()
+ for dir in pathogen#split(&rtp)
+ if (dir.sep)[0 : strlen($VIMRUNTIME)] !=# $VIMRUNTIME.sep && filewritable(dir.sep.'doc') == 2 && !empty(glob(dir.sep.'doc'.sep.'*')) && (!filereadable(dir.sep.'doc'.sep.'tags') || filewritable(dir.sep.'doc'.sep.'tags'))
+ helptags `=dir.'/doc'`
+ endif
+ endfor
+endfunction " }}}1
+
+command! -bar Helptags :call pathogen#helptags()
+
+" Like findfile(), but hardcoded to use the runtimepath.
+function! pathogen#runtime_findfile(file,count) "{{{1
+ let rtp = pathogen#join(1,pathogen#split(&rtp))
+ return fnamemodify(findfile(a:file,rtp,a:count),':p')
+endfunction " }}}1
+
+" Backport of fnameescape().
+function! pathogen#fnameescape(string) " {{{1
+ if exists('*fnameescape')
+ return fnameescape(a:string)
+ elseif a:string ==# '-'
+ return '\-'
+ else
+ return substitute(escape(a:string," \t\n*?[{`$\\%#'\"|!<"),'^[+>]','\\&','')
+ endif
+endfunction " }}}1
+
+function! s:find(count,cmd,file,lcd) " {{{1
+ let rtp = pathogen#join(1,pathogen#split(&runtimepath))
+ let file = pathogen#runtime_findfile(a:file,a:count)
+ if file ==# ''
+ return "echoerr 'E345: Can''t find file \"".a:file."\" in runtimepath'"
+ elseif a:lcd
+ let path = file[0:-strlen(a:file)-2]
+ execute 'lcd `=path`'
+ return a:cmd.' '.pathogen#fnameescape(a:file)
+ else
+ return a:cmd.' '.pathogen#fnameescape(file)
+ endif
+endfunction " }}}1
+
+function! s:Findcomplete(A,L,P) " {{{1
+ let sep = pathogen#separator()
+ let cheats = {
+ \'a': 'autoload',
+ \'d': 'doc',
+ \'f': 'ftplugin',
+ \'i': 'indent',
+ \'p': 'plugin',
+ \'s': 'syntax'}
+ if a:A =~# '^\w[\\/]' && has_key(cheats,a:A[0])
+ let request = cheats[a:A[0]].a:A[1:-1]
+ else
+ let request = a:A
+ endif
+ let pattern = substitute(request,'\'.sep,'*'.sep,'g').'*'
+ let found = {}
+ for path in pathogen#split(&runtimepath)
+ let path = expand(path, ':p')
+ let matches = split(glob(path.sep.pattern),"\n")
+ call map(matches,'isdirectory(v:val) ? v:val.sep : v:val')
+ call map(matches,'expand(v:val, ":p")[strlen(path)+1:-1]')
+ for match in matches
+ let found[match] = 1
+ endfor
+ endfor
+ return sort(keys(found))
+endfunction " }}}1
+
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Ve :execute s:find(<count>,'edit<bang>',<q-args>,0)
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vedit :execute s:find(<count>,'edit<bang>',<q-args>,0)
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vopen :execute s:find(<count>,'edit<bang>',<q-args>,1)
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vsplit :execute s:find(<count>,'split',<q-args>,<bang>1)
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vvsplit :execute s:find(<count>,'vsplit',<q-args>,<bang>1)
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vtabedit :execute s:find(<count>,'tabedit',<q-args>,<bang>1)
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vpedit :execute s:find(<count>,'pedit',<q-args>,<bang>1)
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vread :execute s:find(<count>,'read',<q-args>,<bang>1)
+
+" vim:set ft=vim ts=8 sw=2 sts=2:
433 vim/autoload/snipMate.vim
@@ -0,0 +1,433 @@
+fun! Filename(...)
+ let filename = expand('%:t:r')
+ if filename == '' | return a:0 == 2 ? a:2 : '' | endif
+ return !a:0 || a:1 == '' ? filename : substitute(a:1, '$1', filename, 'g')
+endf
+
+fun s:RemoveSnippet()
+ unl! g:snipPos s:curPos s:snipLen s:endCol s:endLine s:prevLen
+ \ s:lastBuf s:oldWord
+ if exists('s:update')
+ unl s:startCol s:origWordLen s:update
+ if exists('s:oldVars') | unl s:oldVars s:oldEndCol | endif
+ endif
+ aug! snipMateAutocmds
+endf
+
+fun snipMate#expandSnip(snip, col)
+ let lnum = line('.') | let col = a:col
+
+ let snippet = s:ProcessSnippet(a:snip)
+ " Avoid error if eval evaluates to nothing
+ if snippet == '' | return '' | endif
+
+ " Expand snippet onto current position with the tab stops removed
+ let snipLines = split(substitute(snippet, '$\d\+\|${\d\+.\{-}}', '', 'g'), "\n", 1)
+
+ let line = getline(lnum)
+ let afterCursor = strpart(line, col - 1)
+ " Keep text after the cursor
+ if afterCursor != "\t" && afterCursor != ' '
+ let line = strpart(line, 0, col - 1)
+ let snipLines[-1] .= afterCursor
+ else
+ let afterCursor = ''
+ " For some reason the cursor needs to move one right after this
+ if line != '' && col == 1 && &ve != 'all' && &ve != 'onemore'
+ let col += 1
+ endif
+ endif
+
+ call setline(lnum, line.snipLines[0])
+
+ " Autoindent snippet according to previous indentation
+ let indent = matchend(line, '^.\{-}\ze\(\S\|$\)') + 1
+ call append(lnum, map(snipLines[1:], "'".strpart(line, 0, indent - 1)."'.v:val"))
+
+ " Open any folds snippet expands into
+ if &fen | sil! exe lnum.','.(lnum + len(snipLines) - 1).'foldopen' | endif
+
+ let [g:snipPos, s:snipLen] = s:BuildTabStops(snippet, lnum, col - indent, indent)
+
+ if s:snipLen
+ aug snipMateAutocmds
+ au CursorMovedI * call s:UpdateChangedSnip(0)
+ au InsertEnter * call s:UpdateChangedSnip(1)
+ aug END
+ let s:lastBuf = bufnr(0) " Only expand snippet while in current buffer
+ let s:curPos = 0
+ let s:endCol = g:snipPos[s:curPos][1]
+ let s:endLine = g:snipPos[s:curPos][0]
+
+ call cursor(g:snipPos[s:curPos][0], g:snipPos[s:curPos][1])
+ let s:prevLen = [line('$'), col('$')]
+ if g:snipPos[s:curPos][2] != -1 | return s:SelectWord() | endif
+ else
+ unl g:snipPos s:snipLen
+ " Place cursor at end of snippet if no tab stop is given
+ let newlines = len(snipLines) - 1
+ call cursor(lnum + newlines, indent + len(snipLines[-1]) - len(afterCursor)
+ \ + (newlines ? 0: col - 1))
+ endif
+ return ''
+endf
+
+" Prepare snippet to be processed by s:BuildTabStops
+fun s:ProcessSnippet(snip)
+ let snippet = a:snip
+ " Evaluate eval (`...`) expressions.
+ " Using a loop here instead of a regex fixes a bug with nested "\=".
+ if stridx(snippet, '`') != -1
+ while match(snippet, '`.\{-}`') != -1
+ let snippet = substitute(snippet, '`.\{-}`',
+ \ substitute(eval(matchstr(snippet, '`\zs.\{-}\ze`')),
+ \ "\n\\%$", '', ''), '')
+ endw
+ let snippet = substitute(snippet, "\r", "\n", 'g')
+ endif
+
+ " Place all text after a colon in a tab stop after the tab stop
+ " (e.g. "${#:foo}" becomes "${:foo}foo").
+ " This helps tell the position of the tab stops later.
+ let snippet = substitute(snippet, '${\d\+:\(.\{-}\)}', '&\1', 'g')
+
+ " Update the a:snip so that all the $# become the text after
+ " the colon in their associated ${#}.
+ " (e.g. "${1:foo}" turns all "$1"'s into "foo")
+ let i = 1
+ while stridx(snippet, '${'.i) != -1
+ let s = matchstr(snippet, '${'.i.':\zs.\{-}\ze}')
+ if s != ''
+ let snippet = substitute(snippet, '$'.i, s.'&', 'g')
+ endif
+ let i += 1
+ endw
+
+ if &et " Expand tabs to spaces if 'expandtab' is set.
+ return substitute(snippet, '\t', repeat(' ', &sts ? &sts : &sw), 'g')
+ endif
+ return snippet
+endf
+
+" Counts occurences of haystack in needle
+fun s:Count(haystack, needle)
+ let counter = 0
+ let index = stridx(a:haystack, a:needle)
+ while index != -1
+ let index = stridx(a:haystack, a:needle, index+1)
+ let counter += 1
+ endw
+ return counter
+endf
+
+" Builds a list of a list of each tab stop in the snippet containing:
+" 1.) The tab stop's line number.
+" 2.) The tab stop's column number
+" (by getting the length of the string between the last "\n" and the
+" tab stop).
+" 3.) The length of the text after the colon for the current tab stop
+" (e.g. "${1:foo}" would return 3). If there is no text, -1 is returned.
+" 4.) If the "${#:}" construct is given, another list containing all
+" the matches of "$#", to be replaced with the placeholder. This list is
+" composed the same way as the parent; the first item is the line number,
+" and the second is the column.
+fun s:BuildTabStops(snip, lnum, col, indent)
+ let snipPos = []
+ let i = 1
+ let withoutVars = substitute(a:snip, '$\d\+', '', 'g')
+ while stridx(a:snip, '${'.i) != -1
+ let beforeTabStop = matchstr(withoutVars, '^.*\ze${'.i.'\D')
+ let withoutOthers = substitute(withoutVars, '${\('.i.'\D\)\@!\d\+.\{-}}', '', 'g')
+
+ let j = i - 1
+ call add(snipPos, [0, 0, -1])
+ let snipPos[j][0] = a:lnum + s:Count(beforeTabStop, "\n")
+ let snipPos[j][1] = a:indent + len(matchstr(withoutOthers, '.*\(\n\|^\)\zs.*\ze${'.i.'\D'))
+ if snipPos[j][0] == a:lnum | let snipPos[j][1] += a:col | endif
+
+ " Get all $# matches in another list, if ${#:name} is given
+ if stridx(withoutVars, '${'.i.':') != -1
+ let snipPos[j][2] = len(matchstr(withoutVars, '${'.i.':\zs.\{-}\ze}'))
+ let dots = repeat('.', snipPos[j][2])
+ call add(snipPos[j], [])
+ let withoutOthers = substitute(a:snip, '${\d\+.\{-}}\|$'.i.'\@!\d\+', '', 'g')
+ while match(withoutOthers, '$'.i.'\(\D\|$\)') != -1
+ let beforeMark = matchstr(withoutOthers, '^.\{-}\ze'.dots.'$'.i.'\(\D\|$\)')
+ call add(snipPos[j][3], [0, 0])
+ let snipPos[j][3][-1][0] = a:lnum + s:Count(beforeMark, "\n")
+ let snipPos[j][3][-1][1] = a:indent + (snipPos[j][3][-1][0] > a:lnum
+ \ ? len(matchstr(beforeMark, '.*\n\zs.*'))
+ \ : a:col + len(beforeMark))
+ let withoutOthers = substitute(withoutOthers, '$'.i.'\ze\(\D\|$\)', '', '')
+ endw
+ endif
+ let i += 1
+ endw
+ return [snipPos, i - 1]
+endf
+
+fun snipMate#jumpTabStop(backwards)
+ let leftPlaceholder = exists('s:origWordLen')
+ \ && s:origWordLen != g:snipPos[s:curPos][2]
+ if leftPlaceholder && exists('s:oldEndCol')
+ let startPlaceholder = s:oldEndCol + 1
+ endif
+
+ if exists('s:update')
+ call s:UpdatePlaceholderTabStops()
+ else
+ call s:UpdateTabStops()
+ endif
+
+ " Don't reselect placeholder if it has been modified
+ if leftPlaceholder && g:snipPos[s:curPos][2] != -1
+ if exists('startPlaceholder')
+ let g:snipPos[s:curPos][1] = startPlaceholder
+ else
+ let g:snipPos[s:curPos][1] = col('.')
+ let g:snipPos[s:curPos][2] = 0
+ endif
+ endif
+
+ let s:curPos += a:backwards ? -1 : 1
+ " Loop over the snippet when going backwards from the beginning
+ if s:curPos < 0 | let s:curPos = s:snipLen - 1 | endif
+
+ if s:curPos == s:snipLen
+ let sMode = s:endCol == g:snipPos[s:curPos-1][1]+g:snipPos[s:curPos-1][2]
+ call s:RemoveSnippet()
+ return sMode ? "\<tab>" : TriggerSnippet()
+ endif
+
+ call cursor(g:snipPos[s:curPos][0], g:snipPos[s:curPos][1])
+
+ let s:endLine = g:snipPos[s:curPos][0]
+ let s:endCol = g:snipPos[s:curPos][1]
+ let s:prevLen = [line('$'), col('$')]
+
+ return g:snipPos[s:curPos][2] == -1 ? '' : s:SelectWord()
+endf
+
+fun s:UpdatePlaceholderTabStops()
+ let changeLen = s:origWordLen - g:snipPos[s:curPos][2]
+ unl s:startCol s:origWordLen s:update
+ if !exists('s:oldVars') | return | endif
+ " Update tab stops in snippet if text has been added via "$#"
+ " (e.g., in "${1:foo}bar$1${2}").
+ if changeLen != 0
+ let curLine = line('.')
+
+ for pos in g:snipPos
+ if pos == g:snipPos[s:curPos] | continue | endif
+ let changed = pos[0] == curLine && pos[1] > s:oldEndCol
+ let changedVars = 0
+ let endPlaceholder = pos[2] - 1 + pos[1]
+ " Subtract changeLen from each tab stop that was after any of
+ " the current tab stop's placeholders.
+ for [lnum, col] in s:oldVars
+ if lnum > pos[0] | break | endif
+ if pos[0] == lnum
+ if pos[1] > col || (pos[2] == -1 && pos[1] == col)
+ let changed += 1
+ elseif col < endPlaceholder
+ let changedVars += 1
+ endif
+ endif
+ endfor
+ let pos[1] -= changeLen * changed
+ let pos[2] -= changeLen * changedVars " Parse variables within placeholders
+ " e.g., "${1:foo} ${2:$1bar}"
+
+ if pos[2] == -1 | continue | endif
+ " Do the same to any placeholders in the other tab stops.
+ for nPos in pos[3]
+ let changed = nPos[0] == curLine && nPos[1] > s:oldEndCol
+ for [lnum, col] in s:oldVars
+ if lnum > nPos[0] | break | endif
+ if nPos[0] == lnum && nPos[1] > col
+ let changed += 1
+ endif
+ endfor
+ let nPos[1] -= changeLen * changed
+ endfor
+ endfor
+ endif
+ unl s:endCol s:oldVars s:oldEndCol
+endf
+
+fun s:UpdateTabStops()
+ let changeLine = s:endLine - g:snipPos[s:curPos][0]
+ let changeCol = s:endCol - g:snipPos[s:curPos][1]
+ if exists('s:origWordLen')
+ let changeCol -= s:origWordLen
+ unl s:origWordLen
+ endif
+ let lnum = g:snipPos[s:curPos][0]
+ let col = g:snipPos[s:curPos][1]
+ " Update the line number of all proceeding tab stops if <cr> has
+ " been inserted.
+ if changeLine != 0
+ let changeLine -= 1
+ for pos in g:snipPos
+ if pos[0] >= lnum
+ if pos[0] == lnum | let pos[1] += changeCol | endif
+ let pos[0] += changeLine
+ endif
+ if pos[2] == -1 | continue | endif
+ for nPos in pos[3]
+ if nPos[0] >= lnum
+ if nPos[0] == lnum | let nPos[1] += changeCol | endif
+ let nPos[0] += changeLine
+ endif
+ endfor
+ endfor
+ elseif changeCol != 0
+ " Update the column of all proceeding tab stops if text has
+ " been inserted/deleted in the current line.
+ for pos in g:snipPos
+ if pos[1] >= col && pos[0] == lnum
+ let pos[1] += changeCol
+ endif
+ if pos[2] == -1 | continue | endif
+ for nPos in pos[3]
+ if nPos[0] > lnum | break | endif
+ if nPos[0] == lnum && nPos[1] >= col
+ let nPos[1] += changeCol
+ endif
+ endfor
+ endfor
+ endif
+endf
+
+fun s:SelectWord()
+ let s:origWordLen = g:snipPos[s:curPos][2]
+ let s:oldWord = strpart(getline('.'), g:snipPos[s:curPos][1] - 1,
+ \ s:origWordLen)
+ let s:prevLen[1] -= s:origWordLen
+ if !empty(g:snipPos[s:curPos][3])
+ let s:update = 1
+ let s:endCol = -1
+ let s:startCol = g:snipPos[s:curPos][1] - 1
+ endif
+ if !s:origWordLen | return '' | endif
+ let l = col('.') != 1 ? 'l' : ''
+ if &sel == 'exclusive'
+ return "\<esc>".l.'v'.s:origWordLen."l\<c-g>"
+ endif
+ return s:origWordLen == 1 ? "\<esc>".l.'gh'
+ \ : "\<esc>".l.'v'.(s:origWordLen - 1)."l\<c-g>"
+endf
+
+" This updates the snippet as you type when text needs to be inserted
+" into multiple places (e.g. in "${1:default text}foo$1bar$1",
+" "default text" would be highlighted, and if the user types something,
+" UpdateChangedSnip() would be called so that the text after "foo" & "bar"
+" are updated accordingly)
+"
+" It also automatically quits the snippet if the cursor is moved out of it
+" while in insert mode.
+fun s:UpdateChangedSnip(entering)
+ if exists('g:snipPos') && bufnr(0) != s:lastBuf
+ call s:RemoveSnippet()
+ elseif exists('s:update') " If modifying a placeholder
+ if !exists('s:oldVars') && s:curPos + 1 < s:snipLen
+ " Save the old snippet & word length before it's updated
+ " s:startCol must be saved too, in case text is added
+ " before the snippet (e.g. in "foo$1${2}bar${1:foo}").
+ let s:oldEndCol = s:startCol
+ let s:oldVars = deepcopy(g:snipPos[s:curPos][3])
+ endif
+ let col = col('.') - 1
+
+ if s:endCol != -1
+ let changeLen = col('$') - s:prevLen[1]
+ let s:endCol += changeLen
+ else " When being updated the first time, after leaving select mode
+ if a:entering | return | endif
+ let s:endCol = col - 1
+ endif
+
+ " If the cursor moves outside the snippet, quit it
+ if line('.') != g:snipPos[s:curPos][0] || col < s:startCol ||
+ \ col - 1 > s:endCol
+ unl! s:startCol s:origWordLen s:oldVars s:update
+ return s:RemoveSnippet()
+ endif
+
+ call s:UpdateVars()
+ let s:prevLen[1] = col('$')
+ elseif exists('g:snipPos')
+ if !a:entering && g:snipPos[s:curPos][2] != -1
+ let g:snipPos[s:curPos][2] = -2
+ endif
+
+ let col = col('.')
+ let lnum = line('.')
+ let changeLine = line('$') - s:prevLen[0]
+
+ if lnum == s:endLine
+ let s:endCol += col('$') - s:prevLen[1]
+ let s:prevLen = [line('$'), col('$')]
+ endif
+ if changeLine != 0
+ let s:endLine += changeLine
+ let s:endCol = col
+ endif
+
+ " Delete snippet if cursor moves out of it in insert mode
+ if (lnum == s:endLine && (col > s:endCol || col < g:snipPos[s:curPos][1]))
+ \ || lnum > s:endLine || lnum < g:snipPos[s:curPos][0]
+ call s:RemoveSnippet()
+ endif
+ endif
+endf
+
+" This updates the variables in a snippet when a placeholder has been edited.
+" (e.g., each "$1" in "${1:foo} $1bar $1bar")
+fun s:UpdateVars()
+ let newWordLen = s:endCol - s:startCol + 1
+ let newWord = strpart(getline('.'), s:startCol, newWordLen)
+ if newWord == s:oldWord || empty(g:snipPos[s:curPos][3])
+ return
+ endif
+
+ let changeLen = g:snipPos[s:curPos][2] - newWordLen
+ let curLine = line('.')
+ let startCol = col('.')
+ let oldStartSnip = s:startCol
+ let updateTabStops = changeLen != 0
+ let i = 0
+
+ for [lnum, col] in g:snipPos[s:curPos][3]
+ if updateTabStops
+ let start = s:startCol
+ if lnum == curLine && col <= start
+ let s:startCol -= changeLen
+ let s:endCol -= changeLen
+ endif
+ for nPos in g:snipPos[s:curPos][3][(i):]
+ " This list is in ascending order, so quit if we've gone too far.
+ if nPos[0] > lnum | break | endif
+ if nPos[0] == lnum && nPos[1] > col
+ let nPos[1] -= changeLen
+ endif
+ endfor
+ if lnum == curLine && col > start
+ let col -= changeLen
+ let g:snipPos[s:curPos][3][i][1] = col
+ endif
+ let i += 1
+ endif
+
+ " "Very nomagic" is used here to allow special characters.
+ call setline(lnum, substitute(getline(lnum), '\%'.col.'c\V'.
+ \ escape(s:oldWord, '\'), escape(newWord, '\&'), ''))
+ endfor
+ if oldStartSnip != s:startCol
+ call cursor(0, startCol + s:startCol - oldStartSnip)
+ endif
+
+ let s:oldWord = newWord
+ let g:snipPos[s:curPos][2] = newWordLen
+endf
+" vim:noet:sw=4:ts=4:ft=vim
1 vim/bundle/ack.vim
@@ -0,0 +1 @@
+Subproject commit 9895285042a2fd5691b2f6582aa979e4d1bdffea
1 vim/bundle/command-t
@@ -0,0 +1 @@
+Subproject commit e9a861b34674608ffa70e26063674245cd4e0927
1 vim/bundle/nerdcommenter
@@ -0,0 +1 @@
+Subproject commit e777829d34af17a1d851178c23c1c6ad62e7493f
1 vim/bundle/pyflakes-pathogen
@@ -0,0 +1 @@
+Subproject commit ca28f1cdac2a540fa61631602ff1debb4a9df95e
1 vim/bundle/snipmate.vim
@@ -0,0 +1 @@
+Subproject commit f5a75d075d3c005ebe69e3f5e56cf99516e8aa3b
1 vim/bundle/vim-fugitive
@@ -0,0 +1 @@
+Subproject commit b4b75ef682da3e946c648d3634ade39d0af49aba
1 vim/bundle/vim-yankring
@@ -0,0 +1 @@
+Subproject commit 37f57f839fc5ff13ddf2445077796b134b637a4e
212 vim/colors/ir_black.vim
@@ -0,0 +1,212 @@
+" ir_black color scheme
+" More at: http://blog.infinitered.com/entries/show/8
+
+
+" ********************************************************************************
+" Standard colors used in all ir_black themes:
+" Note, x:x:x are RGB values
+"
+" normal: #f6f3e8
+"
+" string: #A8FF60 168:255:96
+" string inner (punc, code, etc): #00A0A0 0:160:160
+" number: #FF73FD 255:115:253
+" comments: #7C7C7C 124:124:124
+" keywords: #96CBFE 150:203:254
+" operators: white
+" class: #FFFFB6 255:255:182
+" method declaration name: #FFD2A7 255:210:167
+" regular expression: #E9C062 233:192:98
+" regexp alternate: #FF8000 255:128:0
+" regexp alternate 2: #B18A3D 177:138:61
+" variable: #C6C5FE 198:197:254
+"
+" Misc colors:
+" red color (used for whatever): #FF6C60 255:108:96
+" light red: #FFB6B0 255:182:176
+"
+" brown: #E18964 good for special
+"
+" lightpurpleish: #FFCCFF
+"
+" Interface colors:
+" background color: black
+" cursor (where underscore is used): #FFA560 255:165:96
+" cursor (where block is used): white
+" visual selection: #1D1E2C
+" current line: #151515 21:21:21
+" search selection: #07281C 7:40:28
+" line number: #3D3D3D 61:61:61
+
+
+" ********************************************************************************
+" The following are the preferred 16 colors for your terminal
+" Colors Bright Colors
+" Black #4E4E4E #7C7C7C
+" Red #FF6C60 #FFB6B0
+" Green #A8FF60 #CEFFAB
+" Yellow #FFFFB6 #FFFFCB
+" Blue #96CBFE #FFFFCB
+" Magenta #FF73FD #FF9CFE
+" Cyan #C6C5FE #DFDFFE
+" White #EEEEEE #FFFFFF
+
+
+" ********************************************************************************
+set background=dark
+hi clear
+
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "ir_black"
+
+
+"hi Example guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+
+" General colors
+hi Normal guifg=#f6f3e8 guibg=black gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+hi NonText guifg=#070707 guibg=black gui=NONE ctermfg=black ctermbg=NONE cterm=NONE
+
+hi Cursor guifg=black guibg=white gui=NONE ctermfg=black ctermbg=white cterm=reverse
+hi LineNr guifg=#3D3D3D guibg=black gui=NONE ctermfg=darkgray ctermbg=NONE cterm=NONE
+
+hi VertSplit guifg=#202020 guibg=#202020 gui=NONE ctermfg=darkgray ctermbg=darkgray cterm=NONE
+hi StatusLine guifg=#CCCCCC guibg=#202020 gui=italic ctermfg=white ctermbg=darkgray cterm=NONE
+hi StatusLineNC guifg=black guibg=#202020 gui=NONE ctermfg=blue ctermbg=darkgray cterm=NONE
+
+hi Folded guifg=#a0a8b0 guibg=#384048 gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+hi Title guifg=#f6f3e8 guibg=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=NONE
+hi Visual guifg=NONE guibg=#262D51 gui=NONE ctermfg=NONE ctermbg=darkgray cterm=NONE
+
+hi SpecialKey guifg=#808080 guibg=#343434 gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+
+hi WildMenu guifg=green guibg=yellow gui=NONE ctermfg=black ctermbg=yellow cterm=NONE
+hi PmenuSbar guifg=black guibg=white gui=NONE ctermfg=black ctermbg=white cterm=NONE
+"hi Ignore guifg=gray guibg=black gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+
+hi Error guifg=NONE guibg=NONE gui=undercurl ctermfg=white ctermbg=red cterm=NONE guisp=#FF6C60 " undercurl color
+hi ErrorMsg guifg=white guibg=#FF6C60 gui=BOLD ctermfg=white ctermbg=red cterm=NONE
+hi WarningMsg guifg=white guibg=#FF6C60 gui=BOLD ctermfg=white ctermbg=red cterm=NONE
+
+" Message displayed in lower left, such as --INSERT--
+hi ModeMsg guifg=black guibg=#C6C5FE gui=BOLD ctermfg=black ctermbg=cyan cterm=BOLD
+
+if version >= 700 " Vim 7.x specific colors
+ hi CursorLine guifg=NONE guibg=#121212 gui=NONE ctermfg=NONE ctermbg=NONE cterm=BOLD
+ hi CursorColumn guifg=NONE guibg=#121212 gui=NONE ctermfg=NONE ctermbg=NONE cterm=BOLD
+ hi MatchParen guifg=#f6f3e8 guibg=#857b6f gui=BOLD ctermfg=white ctermbg=darkgray cterm=NONE
+ hi Pmenu guifg=#f6f3e8 guibg=#444444 gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi PmenuSel guifg=#000000 guibg=#cae682 gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
+ hi Search guifg=NONE guibg=NONE gui=underline ctermfg=NONE ctermbg=NONE cterm=underline
+endif
+
+" Syntax highlighting
+hi Comment guifg=#7C7C7C guibg=NONE gui=NONE ctermfg=darkgray ctermbg=NONE cterm=NONE
+hi String guifg=#A8FF60 guibg=NONE gui=NONE ctermfg=green ctermbg=NONE cterm=NONE
+hi Number guifg=#FF73FD guibg=NONE gui=NONE ctermfg=magenta ctermbg=NONE cterm=NONE
+
+hi Keyword guifg=#96CBFE guibg=NONE gui=NONE ctermfg=blue ctermbg=NONE cterm=NONE
+hi PreProc guifg=#96CBFE guibg=NONE gui=NONE ctermfg=blue ctermbg=NONE cterm=NONE
+hi Conditional guifg=#6699CC guibg=NONE gui=NONE ctermfg=blue ctermbg=NONE cterm=NONE " if else end
+
+hi Todo guifg=#8f8f8f guibg=NONE gui=NONE ctermfg=red ctermbg=NONE cterm=NONE
+hi Constant guifg=#99CC99 guibg=NONE gui=NONE ctermfg=cyan ctermbg=NONE cterm=NONE
+
+hi Identifier guifg=#C6C5FE guibg=NONE gui=NONE ctermfg=cyan ctermbg=NONE cterm=NONE
+hi Function guifg=#FFD2A7 guibg=NONE gui=NONE ctermfg=brown ctermbg=NONE cterm=NONE
+hi Type guifg=#FFFFB6 guibg=NONE gui=NONE ctermfg=yellow ctermbg=NONE cterm=NONE
+hi Statement guifg=#6699CC guibg=NONE gui=NONE ctermfg=lightblue ctermbg=NONE cterm=NONE
+
+hi Special guifg=#E18964 guibg=NONE gui=NONE ctermfg=white ctermbg=NONE cterm=NONE
+hi Delimiter guifg=#00A0A0 guibg=NONE gui=NONE ctermfg=cyan ctermbg=NONE cterm=NONE
+hi Operator guifg=white guibg=NONE gui=NONE ctermfg=white ctermbg=NONE cterm=NONE
+
+hi link Character Constant
+hi link Boolean Constant
+hi link Float Number
+hi link Repeat Statement
+hi link Label Statement
+hi link Exception 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 SpecialComment Special
+hi link Debug Special
+
+
+" Special for Ruby
+hi rubyRegexp guifg=#B18A3D guibg=NONE gui=NONE ctermfg=brown ctermbg=NONE cterm=NONE
+hi rubyRegexpDelimiter guifg=#FF8000 guibg=NONE gui=NONE ctermfg=brown ctermbg=NONE cterm=NONE
+hi rubyEscape guifg=white guibg=NONE gui=NONE ctermfg=cyan ctermbg=NONE cterm=NONE
+hi rubyInterpolationDelimiter guifg=#00A0A0 guibg=NONE gui=NONE ctermfg=blue ctermbg=NONE cterm=NONE
+hi rubyControl guifg=#6699CC guibg=NONE gui=NONE ctermfg=blue ctermbg=NONE cterm=NONE "and break, etc
+"hi rubyGlobalVariable guifg=#FFCCFF guibg=NONE gui=NONE ctermfg=lightblue ctermbg=NONE cterm=NONE "yield
+hi rubyStringDelimiter guifg=#336633 guibg=NONE gui=NONE ctermfg=lightgreen ctermbg=NONE cterm=NONE
+"rubyInclude
+"rubySharpBang
+"rubyAccess
+"rubyPredefinedVariable
+"rubyBoolean
+"rubyClassVariable
+"rubyBeginEnd
+"rubyRepeatModifier
+"hi link rubyArrayDelimiter Special " [ , , ]
+"rubyCurlyBlock { , , }
+
+hi link rubyClass Keyword
+hi link rubyModule Keyword
+hi link rubyKeyword Keyword
+hi link rubyOperator Operator
+hi link rubyIdentifier Identifier
+hi link rubyInstanceVariable Identifier
+hi link rubyGlobalVariable Identifier
+hi link rubyClassVariable Identifier
+hi link rubyConstant Type
+
+
+" Special for Java
+" hi link javaClassDecl Type
+hi link javaScopeDecl Identifier
+hi link javaCommentTitle javaDocSeeTag
+hi link javaDocTags javaDocSeeTag
+hi link javaDocParam javaDocSeeTag
+hi link javaDocSeeTagParam javaDocSeeTag
+
+hi javaDocSeeTag guifg=#CCCCCC guibg=NONE gui=NONE ctermfg=darkgray ctermbg=NONE cterm=NONE
+hi javaDocSeeTag guifg=#CCCCCC guibg=NONE gui=NONE ctermfg=darkgray ctermbg=NONE cterm=NONE
+"hi javaClassDecl guifg=#CCFFCC guibg=NONE gui=NONE ctermfg=white ctermbg=NONE cterm=NONE
+
+
+" Special for XML
+hi link xmlTag Keyword
+hi link xmlTagName Conditional
+hi link xmlEndTag Identifier
+
+
+" Special for HTML
+hi link htmlTag Keyword
+hi link htmlTagName Conditional
+hi link htmlEndTag Identifier
+
+
+" Special for Javascript
+hi link javaScriptNumber Number
+
+
+" Special for Python
+"hi link pythonEscape Keyword
+
+
+" Special for CSharp
+hi link csXmlTag Keyword
+
+
+" Special for PHP
212 vim/colors/molokai.vim
@@ -0,0 +1,212 @@
+" Vim color file
+"
+" Author: Tomas Restrepo <tomas@winterdom.com>
+"
+" Note: Based on the monokai theme for textmate
+" by Wimer Hazenberg and its darker variant
+" by Hamish Stuart Macpherson
+"
+
+hi clear
+
+set background=dark
+if version > 580
+ " no guarantees for version 5.8 and below, but this makes it stop
+ " complaining
+ hi clear
+ if exists("syntax_on")
+ syntax reset
+ endif
+endif
+let g:colors_name="molokai"
+
+if exists("g:molokai_original")
+ let s:molokai_original = g:molokai_original
+else
+ let s:molokai_original = 0
+endif
+
+
+hi Boolean guifg=#AE81FF
+hi Character guifg=#E6DB74
+hi Number guifg=#AE81FF
+hi String guifg=#E6DB74
+hi Conditional guifg=#F92672 gui=bold
+hi Constant guifg=#AE81FF gui=bold
+hi Cursor guifg=#000000 guibg=#F8F8F0
+hi Debug guifg=#BCA3A3 gui=bold
+hi Define guifg=#66D9EF
+hi Delimiter guifg=#8F8F8F
+hi DiffAdd guibg=#13354A
+hi DiffChange guifg=#89807D guibg=#4C4745
+hi DiffDelete guifg=#960050 guibg=#1E0010
+hi DiffText guibg=#4C4745 gui=italic,bold
+
+hi Directory guifg=#A6E22E gui=bold
+hi Error guifg=#960050 guibg=#1E0010
+hi ErrorMsg guifg=#F92672 guibg=#232526 gui=bold
+hi Exception guifg=#A6E22E gui=bold
+hi Float guifg=#AE81FF
+hi FoldColumn guifg=#465457 guibg=#000000
+hi Folded guifg=#465457 guibg=#000000
+hi Function guifg=#A6E22E
+hi Identifier guifg=#FD971F
+hi Ignore guifg=#808080 guibg=bg
+hi IncSearch guifg=#C4BE89 guibg=#000000
+
+hi Keyword guifg=#F92672 gui=bold
+hi Label guifg=#E6DB74 gui=none
+hi Macro guifg=#C4BE89 gui=italic
+hi SpecialKey guifg=#66D9EF gui=italic
+
+hi MatchParen guifg=#000000 guibg=#FD971F gui=bold
+hi ModeMsg guifg=#E6DB74
+hi MoreMsg guifg=#E6DB74
+hi Operator guifg=#F92672
+
+" complete menu
+hi Pmenu guifg=#66D9EF guibg=#000000
+hi PmenuSel guibg=#808080
+hi PmenuSbar guibg=#080808
+hi PmenuThumb guifg=#66D9EF
+
+hi PreCondit guifg=#A6E22E gui=bold
+hi PreProc guifg=#A6E22E
+hi Question guifg=#66D9EF
+hi Repeat guifg=#F92672 gui=bold
+hi Search guifg=#FFFFFF guibg=#455354
+" marks column
+hi SignColumn guifg=#A6E22E guibg=#232526
+hi SpecialChar guifg=#F92672 gui=bold
+hi SpecialComment guifg=#465457 gui=bold
+hi Special guifg=#66D9EF guibg=bg gui=italic
+hi SpecialKey guifg=#888A85 gui=italic
+if has("spell")
+ hi SpellBad guisp=#FF0000 gui=undercurl
+ hi SpellCap guisp=#7070F0 gui=undercurl
+ hi SpellLocal guisp=#70F0F0 gui=undercurl
+ hi SpellRare guisp=#FFFFFF gui=undercurl
+endif
+hi Statement guifg=#F92672 gui=bold
+hi StatusLine guifg=#455354 guibg=fg
+hi StatusLineNC guifg=#808080 guibg=#080808
+hi StorageClass guifg=#FD971F gui=italic
+hi Structure guifg=#66D9EF
+hi Tag guifg=#F92672 gui=italic
+hi Title guifg=#ef5939
+hi Todo guifg=#CCCCCC guibg=#000000 gui=bold
+
+hi Typedef guifg=#66D9EF
+hi Type guifg=#66D9EF gui=none
+hi Underlined guifg=#808080 gui=underline
+
+hi VertSplit guifg=#808080 guibg=#080808 gui=bold
+hi VisualNOS guibg=#403D3D
+hi Visual guibg=#403D3D
+hi WarningMsg guifg=#FFFFFF guibg=#333333 gui=bold
+hi WildMenu guifg=#66D9EF guibg=#000000
+
+if s:molokai_original == 1
+ hi Normal guifg=#F8F8F2 guibg=#272822
+ hi Comment guifg=#75715E
+ hi CursorLine guibg=#3E3D32
+ hi CursorColumn guibg=#3E3D32
+ hi LineNr guifg=#BCBCBC guibg=#3B3A32
+ hi NonText guifg=#BCBCBC guibg=#3B3A32
+else
+ hi Normal guifg=#F8F8F2 guibg=#1B1D1E
+ hi Comment guifg=#465457
+ hi CursorLine guibg=#293739
+ hi CursorColumn guibg=#293739
+ hi LineNr guifg=#BCBCBC guibg=#232526
+ hi NonText guifg=#BCBCBC guibg=#232526
+end
+
+"
+" Support for 256-color terminal
+"
+if &t_Co > 255
+ hi Boolean ctermfg=135
+ hi Character ctermfg=144
+ hi Number ctermfg=135
+ hi String ctermfg=144
+ hi Conditional ctermfg=161 cterm=bold
+ hi Constant ctermfg=135 cterm=bold
+ hi Cursor ctermfg=16 ctermbg=253
+ hi Debug ctermfg=225 cterm=bold
+ hi Define ctermfg=81
+ hi Delimiter ctermfg=241
+
+ hi DiffAdd ctermbg=24
+ hi DiffChange ctermfg=181 ctermbg=239
+ hi DiffDelete ctermfg=162 ctermbg=53
+ hi DiffText ctermbg=102 cterm=bold
+
+ hi Directory ctermfg=118 cterm=bold
+ hi Error ctermfg=219 ctermbg=89
+ hi ErrorMsg ctermfg=199 ctermbg=16 cterm=bold
+ hi Exception ctermfg=118 cterm=bold
+ hi Float ctermfg=135
+ hi FoldColumn ctermfg=67 ctermbg=16
+ hi Folded ctermfg=67 ctermbg=16
+ hi Function ctermfg=118
+ hi Identifier ctermfg=208
+ hi Ignore ctermfg=244 ctermbg=232
+ hi IncSearch ctermfg=193 ctermbg=16
+
+ hi Keyword ctermfg=161 cterm=bold
+ hi Label ctermfg=229 cterm=none
+ hi Macro ctermfg=193
+ hi SpecialKey ctermfg=81
+
+ hi MatchParen ctermfg=16 ctermbg=208 cterm=bold
+ hi ModeMsg ctermfg=229
+ hi MoreMsg ctermfg=229
+ hi Operator ctermfg=161
+
+ " complete menu
+ hi Pmenu ctermfg=81 ctermbg=16
+ hi PmenuSel ctermbg=244
+ hi PmenuSbar ctermbg=232
+ hi PmenuThumb ctermfg=81
+
+ hi PreCondit ctermfg=118 cterm=bold
+ hi PreProc ctermfg=118
+ hi Question ctermfg=81
+ hi Repeat ctermfg=161 cterm=bold
+ hi Search ctermfg=253 ctermbg=66
+
+ " marks column
+ hi SignColumn ctermfg=118 ctermbg=235
+ hi SpecialChar ctermfg=161 cterm=bold
+ hi SpecialComment ctermfg=245 cterm=bold
+ hi Special ctermfg=81 ctermbg=232
+ hi SpecialKey ctermfg=245
+
+ hi Statement ctermfg=161 cterm=bold
+ hi StatusLine ctermfg=238 ctermbg=253
+ hi StatusLineNC ctermfg=244 ctermbg=232
+ hi StorageClass ctermfg=208
+ hi Structure ctermfg=81
+ hi Tag ctermfg=161
+ hi Title ctermfg=166
+ hi Todo ctermfg=231 ctermbg=232 cterm=bold
+
+ hi Typedef ctermfg=81
+ hi Type ctermfg=81 cterm=none
+ hi Underlined ctermfg=244 cterm=underline
+
+ hi VertSplit ctermfg=244 ctermbg=232 cterm=bold
+ hi VisualNOS ctermbg=238
+ hi Visual ctermbg=235
+ hi WarningMsg ctermfg=231 ctermbg=238 cterm=bold
+ hi WildMenu ctermfg=81 ctermbg=16
+
+ hi Normal ctermfg=252 ctermbg=233
+ hi Comment ctermfg=59
+ hi CursorLine ctermbg=234 cterm=none
+ hi CursorColumn ctermbg=234
+ hi LineNr ctermfg=250 ctermbg=234
+ hi NonText ctermfg=250 ctermbg=234
+end
+
965 vim/colors/solarized.vim
@@ -0,0 +1,965 @@
+" Name: Solarized vim colorscheme
+" Author: Ethan Schoonover <es@ethanschoonover.com>
+" URL: http://ethanschoonover.com/solarized
+" (see this url for latest release & screenshots)
+" License: OSI approved MIT license (see end of this file)
+"
+" Usage "{{{
+"
+" ---------------------------------------------------------------------
+" ABOUT:
+" ---------------------------------------------------------------------
+" Solarized is a carefully designed selective contrast colorscheme with dual
+" light and dark modes that runs in both GUI, 256 and 16 color modes.
+"
+" See the homepage above for screenshots and details.
+"
+" ---------------------------------------------------------------------
+" INSTALLATION:
+" ---------------------------------------------------------------------
+"
+" Two options for installation: manual or pathogen
+"
+" MANUAL INSTALLATION OPTION:
+" ---------------------------------------------------------------------
+"
+" 1. Put the files in the right place!
+" 2. Move `solarized.vim` to your `.vim/colors` directory.
+"
+" RECOMMENDED PATHOGEN INSTALLATION OPTION:
+" ---------------------------------------------------------------------
+"
+" 1. Download and install Tim Pope's Pathogen from:
+" https://github.com/tpope/vim-pathogen
+"
+" 2. Next, move or clone the `vim-colors-solarized` directory so that it is
+" a subdirectory of the `.vim/bundle` directory.
+"
+" a. **clone with git:**
+"
+" $ cd ~/.vim/bundle
+" $ git clone git://github.com/altercation/vim-colors-solarized.git
+"
+" b. **or move manually into the pathogen bundle directory:**
+" In the parent directory of vim-colors-solarized:
+"
+" $ mv vim-colors-solarized ~/.vim/bundle/
+"
+" MODIFY VIMRC:
+"
+" After either Option 1 or Option 2 above, put the following two lines in your
+" .vimrc:
+"
+" set background=dark
+" colorscheme solarized
+"
+" or, for the light background mode of Solarized:
+"
+" set background=light
+" colorscheme solarized
+"
+" I like to have a different background in GUI and terminal modes, so I can use
+" the following if-then. However, I find vim's background autodetection to be
+" pretty good and, at least with MacVim, I can leave this background value
+" assignment out entirely and get the same results.
+"
+" if has('gui_running')
+" set background=light
+" else
+" set background=dark
+" endif
+"
+" See the Solarized homepage at http://ethanschoonover.com/solarized for
+" screenshots which will help you select either the light or dark background.
+"
+" Other options are detailed below.
+"
+" IMPORTANT NOTE FOR TERMINAL USERS:
+"
+" If you are going to use Solarized in Terminal mode (i.e. not in a GUI
+" version like gvim or macvim), **please please please** consider setting your
+" terminal emulator's colorscheme to used the Solarized palette. I've included
+" palettes for some popular terminal emulator as well as Xdefaults in the
+" official Solarized download available from:
+"
+" http://ethanschoonover.com/solarized
+"
+" If you use Solarized without these colors, Solarized will by default use an
+" approximate set of 256 colors. It isn't bad looking and has been extensively
+" tweaked, but it's still not quite the real thing.
+"
+" If you do use the custom terminal colors, simply add the following line
+" *before* the `colorschem solarized` line:
+"
+" let g:solarized_termcolors=16
+"
+" ---------------------------------------------------------------------
+" TOGGLE BACKGROUND FUNCTION
+" ---------------------------------------------------------------------
+" Here's a quick script that toggles the background color, using F5 in this
+" example. You can drop this into .vimrc:
+"
+" function! ToggleBackground()
+" if (g:solarized_style=="dark")
+" let g:solarized_style="light"
+" colorscheme solarized
+" else
+" let g:solarized_style="dark"
+" colorscheme solarized
+" endif
+" endfunction
+" command! Togbg call ToggleBackground()
+" nnoremap <F5> :call ToggleBackground()<CR>
+" inoremap <F5> <ESC>:call ToggleBackground()<CR>a
+" vnoremap <F5> <ESC>:call ToggleBackground()<CR>
+"
+" ---------------------------------------------------------------------
+" OPTIONS
+" ---------------------------------------------------------------------
+"
+" Set these in your vimrc file prior to calling the colorscheme.
+"
+" option name default optional
+" ------------------------------------------------
+" g:solarized_termcolors= 256 | 16
+" g:solarized_termtrans = 0 | 1
+" g:solarized_degrade = 0 | 1
+" g:solarized_bold = 1 | 0
+" g:solarized_underline = 1 | 0
+" g:solarized_italic = 1 | 0
+" g:solarized_style = "dark" | "light"
+" g:solarized_contrast = "normal"| "high" or "low"
+" ------------------------------------------------
+"
+" OPTION DETAILS
+"
+" ------------------------------------------------
+" g:solarized_termcolors= 256 | 16
+" ------------------------------------------------
+" The most important option if you are using vim in terminal (non gui) mode!
+" This tells Solarized to use the 256 degraded color mode if running in a 256
+" color capable terminal. Otherwise, if set to `16` it will use the terminal
+" emulators colorscheme (best option as long as you've set the emulators colors
+" to the Solarized palette).
+"
+" If you are going to use Solarized in Terminal mode (i.e. not in a GUI
+" version like gvim or macvim), **please please please** consider setting your
+" terminal emulator's colorscheme to used the Solarized palette. I've included
+" palettes for some popular terminal emulator as well as Xdefaults in the
+" official Solarized download available from:
+" http://ethanschoonover.com/solarized . If you use Solarized without these
+" colors, Solarized will by default use an approximate set of 256 colors. It
+" isn't bad looking and has been extensively tweaked, but it's still not quite
+" the real thing.
+"
+" ------------------------------------------------
+" g:solarized_termtrans = 0 | 1
+" ------------------------------------------------
+" If you use a terminal emulator with a transparent background and Solarized
+" isn't displaying the background color transparently, set this to 1 and
+" Solarized will use the default (transparent) background of the terminal
+" emulator. *urxvt* required this in my testing; Terminal.app/iTerm2 did not.
+"
+" ------------------------------------------------
+" g:solarized_degrade = 0 | 1
+" ------------------------------------------------
+" For test purposes only; forces Solarized to use the 256 degraded color mode
+" to test the approximate color values for accuracy.
+"
+" ------------------------------------------------
+" g:solarized_bold = 1 | 0
+" ------------------------------------------------
+" ------------------------------------------------
+" g:solarized_underline = 1 | 0
+" ------------------------------------------------
+" ------------------------------------------------
+" g:solarized_italic = 1 | 0
+" ------------------------------------------------
+" If you wish to stop Solarized from displaying bold, underlined or
+" italicized typefaces, simply assign a zero value to the appropriate
+" variable, for example: `let g:solarized_italic=0`
+"
+" ------------------------------------------------
+" g:solarized_style = "dark" | "light"
+" ------------------------------------------------
+" Simply another way to force Solarized to use a dark or light background.
+" It's better to use `set background=dark` or `set background=light` in your
+" .vimrc file. This option is mostly used in scripts (quick background color
+" change) or for testing. Note that, if set, g:solarized_style overrides the
+" setting for "background".
+"
+" ------------------------------------------------
+" g:solarized_contrast = "normal"| "high" or "low"
+" ------------------------------------------------
+" Stick with normal! It's been carefully tested. Setting this option to high
+" or low does use the same Solarized palette but simply shifts some values up
+" or down in order to expand or compress the tonal range displayed.
+"
+" ---------------------------------------------------------------------
+" COLOR VALUES
+" ---------------------------------------------------------------------
+" Download palettes and files from: http://ethanschoonover.com/solarized
+"
+" L\*a\*b values are canonical (White D65, Reference D50), other values are
+" matched in sRGB space.
+"
+" SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B sRGB HSB
+" --------- ------- ---- ------- ----------- ---------- ----------- -----------
+" base03 #002b36 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21
+" base02 #073642 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26
+" base01 #586e75 10/7 brgreen 240 #4e4e4e 45 -07 -07 88 110 117 194 25 46
+" base00 #657b83 11/7 bryellow 241 #585858 50 -07 -07 101 123 131 195 23 51
+" base0 #839496 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59
+" base1 #93a1a1 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63
+" base2 #eee8d5 7/7 white 254 #d7d7af 92 -00 10 238 232 213 44 11 93
+" base3 #fdf6e3 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99
+" yellow #b58900 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71
+" orange #cb4b16 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80
+" red #dc322f 1/1 red 160 #d70000 50 65 45 220 50 47 1 79 86
+" magenta #d33682 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83
+" violet #6c71c4 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77
+" blue #268bd2 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82
+" cyan #2aa198 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63
+" green #859900 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60
+"
+" ---------------------------------------------------------------------
+" COLORSCHEME HACKING
+" ---------------------------------------------------------------------
+"
+" Useful commands for testing colorschemes:
+" :source $VIMRUNTIME/syntax/hitest.vim
+" :help highlight-groups
+" :help cterm-colors
+" :help group-name
+"
+" Useful links for developing colorschemes:
+" http://www.vim.org/scripts/script.php?script_id=2937
+" http://vimcasts.org/episodes/creating-colorschemes-for-vim/
+" http://www.frexx.de/xterm-256-notes/"
+"
+"
+" }}}
+" Default option values"{{{
+" ---------------------------------------------------------------------
+if !exists("g:solarized_termtrans")
+ let g:solarized_termtrans = 0
+endif
+if !exists("g:solarized_degrade")
+ let g:solarized_degrade = 0
+endif
+if !exists("g:solarized_bold")
+ let g:solarized_bold = 1
+endif
+if !exists("g:solarized_underline")
+ let g:solarized_underline = 1
+endif
+if !exists("g:solarized_italic")
+ let g:solarized_italic = 1
+endif
+if !exists("g:solarized_termcolors")
+ let g:solarized_termcolors = 256
+endif
+if !exists("g:solarized_style") && !exists("g:solarized_style")
+ let g:solarized_style = &background
+endif
+if !exists("g:solarized_contrast")
+ let g:solarized_contrast = "normal"
+endif
+"}}}
+" Colorscheme basic settings"{{{
+" ---------------------------------------------------------------------
+if g:solarized_style == "dark"
+ set background=dark
+elseif g:solarized_style == "light"
+ set background=light
+else
+ let g:solarized_style = &background
+endif
+
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "solarized"
+"let colors_name = &background
+"if background == "light"
+" let colors_name = &background
+"else
+" let colors_name = &background
+"endif
+"}}}
+" GUI & CSApprox hexadecimal palettes"{{{
+" ---------------------------------------------------------------------
+"
+" Set both gui and terminal color values in separate conditional statements
+" Due to possibility that CSApprox is running (though I suppose we could just
+" leave the hex values out entirely in that case and include only cterm colors)
+" We also check to see if user has set solarized (force use of the
+" neutral gray monotone palette component)
+if has("gui_running") && g:solarized_degrade == 0
+ let s:g_back = "#002b36"
+ let s:g_base03 = "#002b36"
+ let s:g_base02 = "#073642"
+ let s:g_base01 = "#586e75"
+ let s:g_base00 = "#657b83"
+ let s:g_base0 = "#839496"
+ let s:g_base1 = "#93a1a1"
+ let s:g_base2 = "#eee8d5"
+ let s:g_base3 = "#fdf6e3"
+ let s:g_yellow = "#b58900"
+ let s:g_orange = "#cb4b16"
+ let s:g_red = "#dc322f"
+ let s:g_magenta = "#d33682"
+ let s:g_violet = "#6c71c4"
+ let s:g_blue = "#268bd2"
+ let s:g_cyan = "#2aa198"
+ let s:g_green = "#859900"
+else
+ " these colors are for non-gui vim when CSApprox is installed. CSApprox
+ " degrades the base colors poorly (bright blues instead of muted gray
+ " blues) so we set all hex values here to ones which CSApprox will not
+ " change and which we approve of. Perhaps I should just can the hex values
+ " and use just the color table values, leaving these blank. Not much
+ " difference either way and I'd rather be thorough about it.
+ " They can also be used by setting g:solarized_degrade to 1 in vimrc
+ let s:g_back = "#1c1c1c"
+ let s:g_base03 = "#1c1c1c"
+ let s:g_base02 = "#262626"
+ let s:g_base01 = "#4e4e4e"
+ let s:g_base00 = "#585858"
+ let s:g_base0 = "#808080"
+ let s:g_base1 = "#8a8a8a"
+ let s:g_base2 = "#d7d7af"
+ let s:g_base3 = "#ffffd7"
+ let s:g_yellow = "#af8700"
+ let s:g_orange = "#d75f00"
+ let s:g_red = "#af0000"
+ let s:g_magenta = "#af005f"
+ let s:g_violet = "#5f5faf"
+ let s:g_blue = "#0087ff"
+ let s:g_cyan = "#00afaf"
+ let s:g_green = "#5f8700"
+endif
+"}}}
+" 256 Terminal (no CSApprox) and 16 color fallback palettes"{{{
+" ---------------------------------------------------------------------
+" We also set this if gui is running as we use the optional formatting
+" values that get set here (ou==optional underline, ob==opt bold).
+if (has("gui_running") || &t_Co == 256) && g:solarized_termcolors != 16
+ let s:c_back = "234"
+ let s:c_base03 = "234"
+ let s:c_base02 = "235"
+ let s:c_base01 = "239"
+ let s:c_base00 = "240"
+ let s:c_base0 = "244"
+ let s:c_base1 = "245"
+ let s:c_base2 = "187"
+ let s:c_base3 = "230"
+ let s:c_yellow = "136"
+ let s:c_orange = "166"
+ let s:c_red = "124"
+ let s:c_magenta = "125"
+ let s:c_violet = "61"
+ let s:c_blue = "33"
+ let s:c_cyan = "37"
+ let s:c_green = "64"
+ let s:ou = ""
+ let s:ob = ""
+elseif &t_Co > 8 || g:solarized_termcolors == 16
+ " NOTE: this requires terminal colors to be set to solarized standard
+ " 16 colors (see top of this file for details)
+ let s:c_back = "NONE"
+ let s:c_base03 = "8"
+ let s:c_base02 = "0"
+ let s:c_base01 = "10"
+ let s:c_base00 = "11"
+ let s:c_base0 = "12"
+ let s:c_base1 = "14"
+ let s:c_base2 = "7"
+ let s:c_base3 = "15"
+ let s:c_green = "2"
+ let s:c_yellow = "3"
+ let s:c_orange = "9"
+ let s:c_red = "1"
+ let s:c_magenta = "5"
+ let s:c_violet = "13"
+ let s:c_blue = "4"
+ let s:c_cyan = "6"
+ let s:ou = ""
+ let s:ob = ""
+else " must be in an 8 color or less terminal
+ let s:c_back = "NONE"
+ let s:c_base03 = "4"
+ let s:c_base02 = "darkgrey"
+ let s:c_base01 = "grey"
+ let s:c_base00 = "darkgrey"
+ let s:c_base0 = "6"
+ let s:c_base1 = "4"
+ let s:c_base2 = "7"
+ let s:c_base3 = "7"
+ let s:c_green = "2"
+ let s:c_yellow = "3"
+ let s:c_orange = "3"
+ let s:c_red = "1"
+ let s:c_magenta = "5"
+ let s:c_violet = "5"
+ let s:c_blue = "4"
+ let s:c_cyan = "6"
+ let s:ou = ",underline"
+ let s:ob = ",bold"
+endif
+"}}}
+" Formatting options and null values for passthrough effect"{{{
+" ---------------------------------------------------------------------
+let s:g_none = "NONE"
+let s:c_none = "NONE"
+let s:t_none = "NONE"
+let s:n = "NONE"
+let s:c = ",undercurl"
+let s:r = ",reverse"
+let s:s = ",standout"
+"}}}
+" Alternate light scheme "{{{
+" ---------------------------------------------------------------------
+if g:solarized_style == "light"
+ let s:c_temp03 = s:c_base03
+ let s:c_temp02 = s:c_base02
+ let s:c_temp01 = s:c_base01
+ let s:c_temp00 = s:c_base00
+ let s:c_base03 = s:c_base3
+ let s:c_base02 = s:c_base2
+ let s:c_base01 = s:c_base1
+ let s:c_base00 = s:c_base0
+ let s:c_base0 = s:c_temp00
+ let s:c_base1 = s:c_temp01
+ let s:c_base2 = s:c_temp02
+ let s:c_base3 = s:c_temp03
+ let s:c_back = s:c_base03
+ let s:g_temp03 = s:g_base03
+ let s:g_temp02 = s:g_base02
+ let s:g_temp01 = s:g_base01
+ let s:g_temp00 = s:g_base00
+ let s:g_base03 = s:g_base3
+ let s:g_base02 = s:g_base2
+ let s:g_base01 = s:g_base1
+ let s:g_base00 = s:g_base0
+ let s:g_base0 = s:g_temp00
+ let s:g_base1 = s:g_temp01
+ let s:g_base2 = s:g_temp02
+ let s:g_base3 = s:g_temp03
+ let s:g_back = s:g_base03
+endif
+"}}}
+" Alternate inverted background scheme "{{{
+" ---------------------------------------------------------------------
+if g:solarized_style == "inverted"
+ let s:c_temp03 = s:c_base03
+ let s:c_temp02 = s:c_base02
+ let s:c_base03 = s:c_temp02
+ let s:c_base02 = s:c_temp03
+ let s:c_back = s:c_base03
+ let s:g_temp03 = s:g_base03
+ let s:g_temp02 = s:g_base02
+ let s:g_base03 = s:g_temp02
+ let s:g_base02 = s:g_temp03
+ let s:g_back = s:g_base03
+endif
+"}}}
+" Optional contrast schemes "{{{
+" ---------------------------------------------------------------------
+if g:solarized_contrast == "high"
+ let s:g_base03 = s:g_base03
+ let s:g_base02 = s:g_base02
+ let s:g_base01 = s:g_base00
+ let s:g_base00 = s:g_base0
+ let s:g_base0 = s:g_base1
+ let s:g_base1 = s:g_base2
+ let s:g_base2 = s:g_base3
+ let s:g_base3 = s:g_base3
+ let s:g_back = s:g_back
+endif
+if g:solarized_contrast == "low"
+ let s:g_back = s:g_base02
+ let s:ou = ",underline"
+endif
+"}}}
+" Overrides dependent on user specified values"{{{
+" ---------------------------------------------------------------------
+if g:solarized_termtrans == 1
+ let s:c_back = "NONE"
+endif
+
+if g:solarized_bold == 1
+ let s:b = ",bold"
+else
+ let s:b = ""
+endif
+
+if g:solarized_underline == 1
+ let s:u = ",underline"
+else
+ let s:u = ""
+endif
+
+if g:solarized_italic == 1
+ let s:i = ",italic"
+else
+ let s:i = ""
+endif
+"}}}
+" Highlighting primitives"{{{
+" ---------------------------------------------------------------------
+
+exe "let s:bg_none = ' ctermbg=".s:c_none ." guibg=".s:g_none ."'"
+exe "let s:bg_back = ' ctermbg=".s:c_back ." guibg=".s:g_back ."'"
+exe "let s:bg_base03 = ' ctermbg=".s:c_base03 ." guibg=".s:g_base03 ."'"
+exe "let s:bg_base02 = ' ctermbg=".s:c_base02 ." guibg=".s:g_base02 ."'"
+exe "let s:bg_base01 = ' ctermbg=".s:c_base01 ." guibg=".s:g_base01 ."'"
+exe "let s:bg_base00 = ' ctermbg=".s:c_base00 ." guibg=".s:g_base00 ."'"
+exe "let s:bg_base0 = ' ctermbg=".s:c_base0 ." guibg=".s:g_base0 ."'"
+exe "let s:bg_base1 = ' ctermbg=".s:c_base1 ." guibg=".s:g_base1 ."'"
+exe "let s:bg_base2 = ' ctermbg=".s:c_base2 ." guibg=".s:g_base2 ."'"
+exe "let s:bg_base3 = ' ctermbg=".s:c_base3 ." guibg=".s:g_base3 ."'"
+exe "let s:bg_green = ' ctermbg=".s:c_green ." guibg=".s:g_green ."'"
+exe "let s:bg_yellow = ' ctermbg=".s:c_yellow ." guibg=".s:g_yellow ."'"
+exe "let s:bg_orange = ' ctermbg=".s:c_orange ." guibg=".s:g_orange ."'"
+exe "let s:bg_red = ' ctermbg=".s:c_red ." guibg=".s:g_red ."'"
+exe "let s:bg_magenta = ' ctermbg=".s:c_magenta." guibg=".s:g_magenta."'"
+exe "let s:bg_violet = ' ctermbg=".s:c_violet ." guibg=".s:g_violet ."'"
+exe "let s:bg_blue = ' ctermbg=".s:c_blue ." guibg=".s:g_blue ."'"
+exe "let s:bg_cyan = ' ctermbg=".s:c_cyan ." guibg=".s:g_cyan ."'"
+
+exe "let s:fg_none = ' ctermfg=".s:c_none ." guifg=".s:g_none ."'"
+exe "let s:fg_back = ' ctermfg=".s:c_back ." guifg=".s:g_back ."'"
+exe "let s:fg_base03 = ' ctermfg=".s:c_base03 ." guifg=".s:g_base03 ."'"
+exe "let s:fg_base02 = ' ctermfg=".s:c_base02 ." guifg=".s:g_base02 ."'"
+exe "let s:fg_base01 = ' ctermfg=".s:c_base01 ." guifg=".s:g_base01 ."'"
+exe "let s:fg_base00 = ' ctermfg=".s:c_base00 ." guifg=".s:g_base00 ."'"
+exe "let s:fg_base0 = ' ctermfg=".s:c_base0 ." guifg=".s:g_base0 ."'"
+exe "let s:fg_base1 = ' ctermfg=".s:c_base1 ." guifg=".s:g_base1 ."'"
+exe "let s:fg_base2 = ' ctermfg=".s:c_base2 ." guifg=".s:g_base2 ."'"
+exe "let s:fg_base3 = ' ctermfg=".s:c_base3 ." guifg=".s:g_base3 ."'"
+exe "let s:fg_green = ' ctermfg=".s:c_green ." guifg=".s:g_green ."'"
+exe "let s:fg_yellow = ' ctermfg=".s:c_yellow ." guifg=".s:g_yellow ."'"
+exe "let s:fg_orange = ' ctermfg=".s:c_orange ." guifg=".s:g_orange ."'"
+exe "let s:fg_red = ' ctermfg=".s:c_red ." guifg=".s:g_red ."'"
+exe "let s:fg_magenta = ' ctermfg=".s:c_magenta." guifg=".s:g_magenta."'"
+exe "let s:fg_violet = ' ctermfg=".s:c_violet ." guifg=".s:g_violet ."'"
+exe "let s:fg_blue = ' ctermfg=".s:c_blue ." guifg=".s:g_blue ."'"
+exe "let s:fg_cyan = ' ctermfg=".s:c_cyan ." guifg=".s:g_cyan ."'"
+
+exe "let s:sp_none = ' guisp=".s:g_none ."'"
+exe "let s:sp_back = ' guisp=".s:g_back ."'"
+exe "let s:sp_base03 = ' guisp=".s:g_base03 ."'"
+exe "let s:sp_base02 = ' guisp=".s:g_base02 ."'"
+exe "let s:sp_base01 = ' guisp=".s:g_base01 ."'"
+exe "let s:sp_base00 = ' guisp=".s:g_base00 ."'"
+exe "let s:sp_base0 = ' guisp=".s:g_base0 ."'"
+exe "let s:sp_base1 = ' guisp=".s:g_base1 ."'"
+exe "let s:sp_base2 = ' guisp=".s:g_base2 ."'"
+exe "let s:sp_base3 = ' guisp=".s:g_base3 ."'"
+exe "let s:sp_green = ' guisp=".s:g_green ."'"
+exe "let s:sp_yellow = ' guisp=".s:g_yellow ."'"
+exe "let s:sp_orange = ' guisp=".s:g_orange ."'"
+exe "let s:sp_red = ' guisp=".s:g_red ."'"
+exe "let s:sp_magenta = ' guisp=".s:g_magenta."'"
+exe "let s:sp_violet = ' guisp=".s:g_violet ."'"
+exe "let s:sp_blue = ' guisp=".s:g_blue ."'"
+exe "let s:sp_cyan = ' guisp=".s:g_cyan ."'"
+
+exe "let s:fmt_none = ' cterm=NONE". " gui=NONE". " term=NONE". "'"
+exe "let s:fmt_bold = ' cterm=NONE".s:b." gui=NONE".s:b." term=NONE".s:b."'"
+exe "let s:fmt_bldi = ' cterm=NONE".s:b." gui=NONE".s:b.s:i." term=NONE".s:b."'"
+exe "let s:fmt_undr = ' cterm=NONE".s:u." gui=NONE".s:u." term=NONE".s:u."'"
+exe "let s:fmt_undb = ' cterm=NONE".s:u.s:b." gui=NONE".s:u.s:b.
+ \" term=NONE".s:u.s:b."'"
+exe "let s:fmt_undi = ' cterm=NONE".s:u." gui=NONE".s:u.s:i.
+ \" term=NONE".s:u."'"
+exe "let s:fmt_uopt = ' cterm=NONE".s:ou." gui=NONE".s:ou.
+ \" term=NONE".s:ou."'"
+exe "let s:fmt_bopt = ' cterm=NONE".s:ob." gui=NONE".s:ob.
+ \" term=NONE".s:ob."'"
+exe "let s:fmt_curl = ' cterm=NONE".s:c." gui=NONE".s:c." term=NONE".s:c."'"
+exe "let s:fmt_ital = ' cterm=NONE". " gui=NONE".s:i." term=NONE". "'"
+exe "let s:fmt_revr = ' cterm=NONE".s:r." gui=NONE".s:r." term=NONE".s:r."'"
+exe "let s:fmt_stnd = ' cterm=NONE".s:s." gui=NONE".s:s." term=NONE".s:s."'"
+"}}}
+" Basic highlighting"{{{
+" ---------------------------------------------------------------------
+" note that link syntax to avoid duplicate configuration doesn't work with the
+" exe compiled formats
+
+exe "hi Normal" . s:fg_base0 .s:bg_back .s:fmt_none
+
+exe "hi Comment" . s:fg_base01 .s:bg_none .s:fmt_ital
+" *Comment any comment
+
+exe "hi Constant" . s:fg_cyan .s:bg_none .s:fmt_none
+"exe "hi String" . s:fg_yellow .s:bg_none .s:fmt_none
+" *Constant any constant
+" String a string constant: "this is a string"
+" Character a character constant: 'c', '\n'
+" Number a number constant: 234, 0xff
+" Boolean a boolean constant: TRUE, false
+" Float a floating point constant: 2.3e10
+
+exe "hi Identifier" . s:fg_blue .s:bg_none .s:fmt_none
+" *Identifier any variable name
+" Function function name (also: methods for classes)
+"
+exe "hi Statement" . s:fg_green .s:bg_none .s:fmt_none
+" *Statement any statement
+" Conditional if, then, else, endif, switch, etc.
+" Repeat for, do, while, etc.
+" Label case, default, etc.
+" Operator "sizeof", "+", "*", etc.
+" Keyword any other keyword
+" Exception try, catch, throw
+
+exe "hi PreProc" . s:fg_orange .s:bg_none .s:fmt_none
+" *PreProc generic Preprocessor
+" Include preprocessor #include
+" Define preprocessor #define
+" Macro same as Define
+" PreCondit preprocessor #if, #else, #endif, etc.
+
+exe "hi Type" . s:fg_yellow .s:bg_none .s:fmt_none
+" *Type int, long, char, etc.
+" StorageClass static, register, volatile, etc.
+" Structure struct, union, enum, etc.
+" Typedef A typedef
+
+exe "hi Special" . s:fg_red .s:bg_none .s:fmt_none
+" *Special any special symbol
+" SpecialChar special character in a constant
+" Tag you can use CTRL-] on this
+" Delimiter character that needs attention
+" SpecialComment special things inside a comment
+" Debug debugging statements
+
+exe "hi Underlined" . s:fg_violet .s:bg_none .s:fmt_none
+" *Underlined text that stands out, HTML links
+
+exe "hi Ignore" . s:fg_none .s:bg_none .s:fmt_none
+" *Ignore left blank, hidden |hl-Ignore|
+
+exe "hi Error" . s:fg_red .s:bg_none .s:fmt_bold
+" *Error any erroneous construct
+
+exe "hi Todo" . s:fg_magenta.s:bg_none .s:fmt_bold
+" *Todo anything that needs extra attention; mostly the
+" keywords TODO FIXME and XXX
+"
+"Highlighting groups for various occasions
+"-----------------------------------------
+exe "hi SpecialKey" . s:fg_base02 .s:bg_none .s:fmt_none
+exe "hi NonText" . s:fg_base02 .s:bg_none .s:fmt_bold
+exe "hi Directory" . s:fg_blue .s:bg_none .s:fmt_none
+exe "hi ErrorMsg" . s:fg_red .s:bg_none .s:fmt_revr
+exe "hi IncSearch" . s:fg_yellow .s:bg_none .s:fmt_revr
+exe "hi Search" . s:fg_yellow .s:bg_none .s:fmt_stnd
+exe "hi MoreMsg" . s:fg_blue .s:bg_none .s:fmt_none
+exe "hi ModeMsg" . s:fg_blue .s:bg_none .s:fmt_none
+exe "hi LineNr" . s:fg_base01 .s:bg_base02 .s:fmt_none
+exe "hi Question" . s:fg_cyan .s:bg_none .s:fmt_bold
+exe "hi StatusLine" . s:fg_base0 .s:bg_base02 .s:fmt_none
+exe "hi StatusLineNC" . s:fg_base1 .s:bg_base02 .s:fmt_none
+exe "hi VertSplit" . s:fg_base0 .s:bg_base02 .s:fmt_none
+exe "hi Title" . s:fg_orange .s:bg_none .s:fmt_bold
+exe "hi Visual" . s:fg_none .s:bg_base02 .s:fmt_stnd
+exe "hi VisualNOS" . s:fg_none .s:bg_base02 .s:fmt_stnd
+exe "hi WarningMsg" . s:fg_red .s:bg_none .s:fmt_bold
+exe "hi WildMenu" . s:fg_base1 .s:bg_base02 .s:fmt_none
+exe "hi Folded" . s:fg_base0 .s:bg_base02 .s:fmt_undr .s:sp_base03
+exe "hi FoldColumn" . s:fg_base0 .s:bg_base02 .s:fmt_bold
+exe "hi DiffAdd" . s:fg_green .s:bg_none .s:fmt_revr
+exe "hi DiffChange" . s:fg_yellow .s:bg_none .s:fmt_revr
+exe "hi DiffDelete" . s:fg_red .s:bg_none .s:fmt_revr
+exe "hi DiffText" . s:fg_blue .s:bg_none .s:fmt_revr
+exe "hi SignColumn" . s:fg_base0 .s:bg_base02 .s:fmt_none
+exe "hi Conceal" . s:fg_blue .s:bg_none .s:fmt_none
+exe "hi SpellBad" . s:fg_none .s:bg_none .s:fmt_curl .s:sp_red
+exe "hi SpellCap" . s:fg_none .s:bg_none .s:fmt_curl .s:sp_violet
+exe "hi SpellRare" . s:fg_none .s:bg_none .s:fmt_curl .s:sp_cyan
+exe "hi SpellLocal" . s:fg_none .s:bg_none .s:fmt_curl .s:sp_yellow
+exe "hi Pmenu" . s:fg_base0 .s:bg_base02 .s:fmt_none
+exe "hi PmenuSel" . s:fg_base2 .s:bg_base01 .s:fmt_none
+exe "hi PmenuSbar" . s:fg_base0 .s:bg_base2 .s:fmt_none
+exe "hi PmenuThumb" . s:fg_base03 .s:bg_base0 .s:fmt_none
+exe "hi TabLine" . s:fg_base0 .s:bg_base02 .s:fmt_undr .s:sp_base0
+exe "hi TabLineSel" . s:fg_base2 .s:bg_base01 .s:fmt_undr .s:sp_base0
+exe "hi TabLineFill" . s:fg_base0 .s:bg_base02 .s:fmt_undr .s:sp_base0
+exe "hi CursorColumn" . s:fg_none .s:bg_base02 .s:fmt_none
+exe "hi CursorLine" . s:fg_none .s:bg_base02 .s:fmt_uopt .s:sp_base1
+exe "hi ColorColumn" . s:fg_none .s:bg_base02 .s:fmt_none
+exe "hi Cursor" . s:fg_none .s:bg_none .s:fmt_revr
+exe "hi lCursor" . s:fg_none .s:bg_none .s:fmt_stnd
+exe "hi MatchParen" . s:fg_red .s:bg_base01 .s:fmt_bold
+
+"}}}
+" Extended highlighting "{{{
+" ---------------------------------------------------------------------
+"}}}
+" vim syntax highlighting "{{{
+" ---------------------------------------------------------------------
+exe "hi vimLineComment" . s:fg_base01 .s:bg_none .s:fmt_ital
+exe "hi vimCommentString".s:fg_violet .s:bg_none .s:fmt_none
+hi link vimVar Identifier
+hi link vimFunc Function
+hi link vimUserFunc Function
+exe "hi vimCommand" . s:fg_yellow .s:bg_none .s:fmt_none
+exe "hi vimCmdSep" . s:fg_blue .s:bg_none .s:fmt_bold
+exe "hi helpExample" . s:fg_base1 .s:bg_none .s:fmt_none
+hi link helpSpecial Special
+"exe "hi helpSpecial" . s:fg_yellow .s:bg_none .s:fmt_none
+exe "hi helpOption" . s:fg_cyan .s:bg_none .s:fmt_none
+exe "hi helpNote" . s:fg_magenta.s:bg_none .s:fmt_none
+exe "hi helpVim" . s:fg_magenta.s:bg_none .s:fmt_none
+exe "hi helpHyperTextJump".s:fg_blue .s:bg_none .s:fmt_undr
+exe "hi helpHyperTextEntry".s:fg_green .s:bg_none .s:fmt_none
+exe "hi vimIsCommand" . s:fg_base00 .s:bg_none .s:fmt_none
+exe "hi vimSynMtchOpt". s:fg_yellow .s:bg_none .s:fmt_none
+exe "hi vimSynType" . s:fg_cyan .s:bg_none .s:fmt_none
+exe "hi vimHiLink" . s:fg_blue .s:bg_none .s:fmt_none
+exe "hi vimHiGroup" . s:fg_blue .s:bg_none .s:fmt_none
+exe "hi vimGroup" . s:fg_blue .s:bg_none .s:fmt_undb
+"}}}
+" html highlighting "{{{
+" ---------------------------------------------------------------------
+exe "hi htmlTag" . s:fg_base01 .s:bg_none .s:fmt_none
+exe "hi htmlEndTag" . s:fg_base01 .s:bg_none .s:fmt_none
+exe "hi htmlTagN" . s:fg_base1 .s:bg_none .s:fmt_bold
+exe "hi htmlTagName" . s:fg_blue .s:bg_none .s:fmt_bold
+exe "hi htmlSpecialTagName". s:fg_blue .s:bg_none .s:fmt_ital
+exe "hi htmlArg" . s:fg_base00 .s:bg_none .s:fmt_none
+exe "hi javaScript" . s:fg_yellow .s:bg_none .s:fmt_none
+"}}}
+" perl highlighting "{{{
+" ---------------------------------------------------------------------
+exe "hi perlHereDoc" . s:fg_base1 .s:bg_back .s:fmt_none
+exe "hi perlVarPlain" . s:fg_yellow .s:bg_back .s:fmt_none
+exe "hi perlStatementFileDesc" . s:fg_cyan .s:bg_back .s:fmt_none
+
+"}}}
+" tex highlighting "{{{
+" ---------------------------------------------------------------------
+exe "hi texStatement" . s:fg_cyan .s:bg_back .s:fmt_none
+exe "hi texMathZoneX" . s:fg_yellow .s:bg_back .s:fmt_none
+exe "hi texMathMatcher" . s:fg_yellow .s:bg_back .s:fmt_none
+exe "hi texMathMatcher" . s:fg_yellow .s:bg_back .s:fmt_none
+exe "hi texRefLabel" . s:fg_yellow .s:bg_back .s:fmt_none
+"}}}
+" ruby highlighting "{{{
+" ---------------------------------------------------------------------
+exe "hi rubyDefine" . s:fg_base1 .s:bg_back .s:fmt_bold
+"rubyInclude
+"rubySharpBang
+"rubyAccess
+"rubyPredefinedVariable
+"rubyBoolean
+"rubyClassVariable
+"rubyBeginEnd
+"rubyRepeatModifier
+"hi link rubyArrayDelimiter Special " [ , , ]
+"rubyCurlyBlock { , , }
+
+"hi link rubyClass Keyword
+"hi link rubyModule Keyword
+"hi link rubyKeyword Keyword
+"hi link rubyOperator Operator
+"hi link rubyIdentifier Identifier
+"hi link rubyInstanceVariable Identifier
+"hi link rubyGlobalVariable Identifier
+"hi link rubyClassVariable Identifier
+"hi link rubyConstant Type
+"}}}
+" haskell syntax highlighting"{{{
+" ---------------------------------------------------------------------
+" For use with syntax/haskell.vim : Haskell Syntax File
+" http://www.vim.org/scripts/script.php?script_id=3034
+" See also Steffen Siering's github repository:
+" http://github.com/urso/dotrc/blob/master/vim/syntax/haskell.vim
+" ---------------------------------------------------------------------
+"
+" Treat True and False specially, see the plugin referenced above
+let hs_highlight_boolean=1
+" highlight delims, see the plugin referenced above
+let hs_highlight_delimiters=1
+
+exe "hi cPreCondit". s:fg_orange.s:bg_none .s:fmt_none
+
+exe "hi VarId" . s:fg_blue .s:bg_none .s:fmt_none
+exe "hi ConId" . s:fg_yellow .s:bg_none .s:fmt_none
+exe "hi hsImport" . s:fg_magenta.s:bg_none .s:fmt_none
+exe "hi hsString" . s:fg_base00 .s:bg_none .s:fmt_none
+
+exe "hi hsStructure" . s:fg_cyan .s:bg_none .s:fmt_none
+exe "hi hs_hlFunctionName" . s:fg_blue .s:bg_none
+exe "hi hsStatement" . s:fg_cyan .s:bg_none .s:fmt_none
+exe "hi hsImportLabel" . s:fg_cyan .s:bg_none .s:fmt_none
+exe "hi hs_OpFunctionName" . s:fg_yellow .s:bg_none .s:fmt_none
+exe "hi hs_DeclareFunction" . s:fg_orange .s:bg_none .s:fmt_none
+exe "hi hsVarSym" . s:fg_cyan .s:bg_none .s:fmt_none
+exe "hi hsType" . s:fg_yellow .s:bg_none .s:fmt_none
+exe "hi hsTypedef" . s:fg_cyan .s:bg_none .s:fmt_none
+exe "hi hsModuleName" . s:fg_green .s:bg_none .s:fmt_undr
+exe "hi hsModuleStartLabel" . s:fg_magenta.s:bg_none .s:fmt_none
+hi link hsImportParams Delimiter
+hi link hsDelimTypeExport Delimiter
+hi link hsModuleStartLabel hsStructure
+hi link hsModuleWhereLabel hsModuleStartLabel
+
+" following is for the haskell-conceal plugin
+" the first two items don't have an impact, but better safe
+exe "hi hsNiceOperator" . s:fg_cyan .s:bg_none .s:fmt_none
+exe "hi hsniceoperator" . s:fg_cyan .s:bg_none .s:fmt_none
+
+"}}}
+" pandoc markdown syntax highlighting "{{{
+" ---------------------------------------------------------------------
+
+"PandocHiLink pandocNormalBlock
+exe "hi pandocTitleBlock" .s:fg_blue .s:bg_none .s:fmt_none
+exe "hi pandocTitleBlockTitle" .s:fg_blue .s:bg_none .s:fmt_bold
+exe "hi pandocTitleComment" .s:fg_blue .s:bg_none .s:fmt_bold
+exe "hi pandocComment" .s:fg_base01 .s:bg_none .s:fmt_ital
+exe "hi pandocVerbatimBlock" .s:fg_yellow .s:bg_none .s:fmt_none
+hi link pandocVerbatimBlockDeep pandocVerbatimBlock
+hi link pandocCodeBlock pandocVerbatimBlock
+hi link pandocCodeBlockDelim pandocVerbatimBlock
+exe "hi pandocBlockQuote" .s:fg_blue .s:bg_none .s:fmt_none
+exe "hi pandocBlockQuoteLeader1" .s:fg_blue .s:bg_none .s:fmt_none
+exe "hi pandocBlockQuoteLeader2" .s:fg_cyan .s:bg_none .s:fmt_none
+exe "hi pandocBlockQuoteLeader3" .s:fg_yellow .s:bg_none .s:fmt_none
+exe "hi pandocBlockQuoteLeader4" .s:fg_red .s:bg_none .s:fmt_none
+exe "hi pandocBlockQuoteLeader5" .s:fg_base0 .s:bg_none .s:fmt_none
+exe "hi pandocBlockQuoteLeader6" .s:fg_base01 .s:bg_none .s:fmt_none
+exe "hi pandocListMarker" .s:fg_magenta.s:bg_none .s:fmt_none
+exe "hi pandocListReference" .s:fg_magenta.s:bg_none .s:fmt_undr
+
+" Definitions
+" ---------------------------------------------------------------------
+let s:fg_pdef = s:fg_violet
+exe "hi pandocDefinitionBlock" .s:fg_pdef .s:bg_none .s:fmt_none
+exe "hi pandocDefinitionTerm" .s:fg_pdef .s:bg_none .s:fmt_stnd
+exe "hi pandocDefinitionIndctr" .s:fg_pdef .s:bg_none .s:fmt_bold
+exe "hi pandocEmphasisDefinition" .s:fg_pdef .s:bg_none .s:fmt_ital
+exe "hi pandocEmphasisNestedDefinition" .s:fg_pdef .s:bg_none .s:fmt_bldi
+exe "hi pandocStrongEmphasisDefinition" .s:fg_pdef .s:bg_none .s:fmt_bold
+exe "hi pandocStrongEmphasisNestedDefinition" .s:fg_pdef.s:bg_none.s:fmt_bldi
+exe "hi pandocStrongEmphasisEmphasisDefinition" .s:fg_pdef.s:bg_none.s:fmt_bldi
+exe "hi pandocStrikeoutDefinition" .s:fg_pdef .s:bg_none .s:fmt_revr
+exe "hi pandocVerbatimInlineDefinition" .s:fg_pdef .s:bg_none .s:fmt_none
+exe "hi pandocSuperscriptDefinition" .s:fg_pdef .s:bg_none .s:fmt_none
+exe "hi pandocSubscriptDefinition" .s:fg_pdef .s:bg_none .s:fmt_none
+
+" Tables
+" ---------------------------------------------------------------------
+le