diff options
author | Jesse Luehrs <doy@tozt.net> | 2017-11-04 23:03:50 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2017-11-04 23:44:20 -0400 |
commit | 3fcb921077ae6aee0e25afef5d23c368c90ec3d3 (patch) | |
tree | 6c913475ec13c9888c0dc2abd94c20332ba7fa31 /vim | |
parent | 7214071e57b7dd332ae4653af1fa292ac9676eb8 (diff) | |
download | conf-3fcb921077ae6aee0e25afef5d23c368c90ec3d3.tar.gz conf-3fcb921077ae6aee0e25afef5d23c368c90ec3d3.zip |
restore the old rainbow paren plugin
the new one is too complicated and breaks too many things
Diffstat (limited to 'vim')
m--------- | vim/pack/plugins/start/rainbow | 0 | ||||
-rw-r--r-- | vim/plugin/rainbow_paren.vim | 100 |
2 files changed, 100 insertions, 0 deletions
diff --git a/vim/pack/plugins/start/rainbow b/vim/pack/plugins/start/rainbow deleted file mode 160000 -Subproject 1c45e0f81324641b23d4c21edda4eabeacba031 diff --git a/vim/plugin/rainbow_paren.vim b/vim/plugin/rainbow_paren.vim new file mode 100644 index 0000000..9889983 --- /dev/null +++ b/vim/plugin/rainbow_paren.vim @@ -0,0 +1,100 @@ +" this script by Shawn M Moore aka Sartak <sartak at gmail.com> +" also by Michael R Geddes aka frogonwheels <vimmer at frog.wheelycreek.net> +" originally by anonymous + +" this in the public domain +" last updated 25 Mar 07 + +" this does nothing unless you, +" let g:rainbow = 1 + +" and set which kinds of character pairs you want to rainbow +" let g:rainbow_paren = 1 " () +" let g:rainbow_brace = 1 " {} +" let g:rainbow_bracket = 1 " [] +" let g:rainbow_angle = 1 " <> + +" if you want the different types to nest, such that the braces in ({}) are +" colored the same as the internal parens of (()), then +" let g:rainbow_nested = 1 + +" you probably also want to use something like +" autocmd BufWinEnter * runtime plugin/rainbow_parens.vim + +if exists("g:rainbow") && g:rainbow != 0 + if &ft == 'perl' + " wow, this is a huge huge hack, but indentation is broken without it + " see $VIMRUNTIME/indent/perl.vim:125-162 + let s:basename = 'perlSubFoldRainbowLevel' + else + let s:basename = 'level' + endif + exe 'hi '.s:basename.'1c ctermfg=darkcyan guifg=cyan' + exe 'hi '.s:basename.'2c ctermfg=darkgreen guifg=green' + exe 'hi '.s:basename.'3c ctermfg=darkyellow guifg=yellow' + exe 'hi '.s:basename.'4c ctermfg=darkblue guifg=blue' + exe 'hi '.s:basename.'5c ctermfg=darkmagenta guifg=magenta' + " this color is never nested, it only appears on the outermost layer + exe 'hi '.s:basename.'6c ctermfg=darkred guifg=red' + + " helper function + func s:DoSyn(cur, top, left, right, uniq) + let uniq = a:uniq + if exists("g:rainbow_nested") && g:rainbow_nested != 0 + let uniq = "" + endif + + let cmd = 'syn region '.s:basename.uniq.a:cur.' transparent fold matchgroup='.s:basename.a:cur.'c start=/'.a:left.'/ end=/'.a:right.'/ contains=TOP' + + let i = a:cur + + if i == 1 + let i = a:top + endif + + while i <= a:top + let cmd = cmd . ',' . s:basename . uniq . i + let i = i + 1 + endwhile + exe cmd + endfunc + + func s:DoSyntaxes(count) + let i = 1 + + while i <= a:count + " if you define new pairs, make sure to take into account that the + " delimiter is currently / and that it uses regex, so you need to escape + " regex metachars (like what is done for brackets) + + if exists("g:rainbow_paren") && g:rainbow_paren != 0 + " ocaml uses (* *) for comments; these shouldn't be highlighted + if &filetype == "ocaml" + call s:DoSyn(i, a:count, "(\\*\\@!", "\\*\\@<!)", "a") + else + call s:DoSyn(i, a:count, "(", ")", "a") + endif + endif + + if exists("g:rainbow_brace") && g:rainbow_brace != 0 + call s:DoSyn(i, a:count, "{", "}", "b") + endif + + if exists("g:rainbow_bracket") && g:rainbow_bracket != 0 + call s:DoSyn(i, a:count, "\\[", "\\]", "c") + endif + + if exists("g:rainbow_angle") && g:rainbow_angle != 0 + call s:DoSyn(i, a:count, "<", ">", "d") + endif + + let i = i + 1 + endwhile + endfun + + call s:DoSyntaxes(6) " 6 is the number of colors we have + + delfun s:DoSyn + delfun s:DoSyntaxes +endif + |