summaryrefslogtreecommitdiffstats
path: root/vim
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2017-11-04 23:03:50 -0400
committerJesse Luehrs <doy@tozt.net>2017-11-04 23:44:20 -0400
commit3fcb921077ae6aee0e25afef5d23c368c90ec3d3 (patch)
tree6c913475ec13c9888c0dc2abd94c20332ba7fa31 /vim
parent7214071e57b7dd332ae4653af1fa292ac9676eb8 (diff)
downloadconf-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/rainbow0
-rw-r--r--vim/plugin/rainbow_paren.vim100
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
+