Skip to content
Open
35 changes: 15 additions & 20 deletions autoload/rainbow_parentheses.vim
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,22 @@
" 2011-10-12: Use less code. Leave room for deeper levels.
"==============================================================================

let s:pairs = [
\ ['brown', 'RoyalBlue3'],
\ ['Darkblue', 'SeaGreen3'],
\ ['darkgray', 'DarkOrchid3'],
\ ['darkgreen', 'firebrick3'],
\ ['darkcyan', 'RoyalBlue3'],
\ ['darkred', 'SeaGreen3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['brown', 'firebrick3'],
\ ['gray', 'RoyalBlue3'],
\ ['black', 'SeaGreen3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['Darkblue', 'firebrick3'],
\ ['darkgreen', 'RoyalBlue3'],
\ ['darkcyan', 'SeaGreen3'],
\ ['darkred', 'DarkOrchid3'],
let s:rpairs= [
\ ['red', 'RoyalBlue3'],
\ ['brown', 'SeaGreen3'],
\ ['blue', 'DarkOrchid3'],
\ ['gray', 'firebrick3'],
\ ['green', 'RoyalBlue3'],
\ ['magenta', 'SeaGreen3'],
\ ['cyan', 'DarkOrchid3'],
\ ['darkred', 'firebrick3'],
\ ['red', 'firebrick3'],
\ ]
let s:pairs = exists('g:rbpt_colorpairs') ? g:rbpt_colorpairs : s:pairs
let s:max = exists('g:rbpt_max') ? g:rbpt_max : max([len(s:pairs), 16])
let s:pairs = exists('g:rbpt_colorpairs') ? reverse(g:rbpt_colorpairs) : reverse(s:rpairs)
let s:max = exists('g:rbpt_max') ? g:rbpt_max : max([len(s:pairs), 15])
let s:loadtgl = exists('g:rbpt_loadcmd_toggle') ? g:rbpt_loadcmd_toggle : 0
let s:types = [['(',')'],['\[','\]'],['{','}'],['<','>']]
let s:bold = exists('g:bold_parentheses') ? g:bold_parentheses : 1

func! s:extend()
if s:max > len(s:pairs)
Expand All @@ -39,8 +33,9 @@ cal s:extend()

func! rainbow_parentheses#activate()
let [id, s:active] = [1, 1]
let bold = s:bold ? ' cterm=bold gui=bold' : ''
for [ctermfg, guifg] in s:pairs
exe 'hi default level'.id.'c ctermfg='.ctermfg.' guifg='.guifg
exe 'hi default level'.id.'c ctermfg='.ctermfg.' guifg='.guifg.bold
let id += 1
endfor
endfunc
Expand Down Expand Up @@ -89,7 +84,7 @@ func! rainbow_parentheses#load(...)
for each in range(1, s:max)
let region = 'level'. each .(b:loaded[a:1] ? '' : 'none')
let grp = b:loaded[a:1] ? 'level'.each.'c' : 'Normal'
let cmd = 'sy region %s matchgroup=%s start=/%s/ end=/%s/ contains=TOP,%s,NoInParens'
let cmd = 'sy region %s matchgroup=%s start=/%s/ end=/%s/ contains=TOP,%s,NoInParens fold'
exe printf(cmd, region, grp, type[0], type[1], join(alllvls, ','))
cal remove(alllvls, 0)
endfor
Expand Down
40 changes: 26 additions & 14 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,48 @@
# Better Rainbow Parentheses

Forked from https://github.com/kien/rainbow_parentheses.vim since that now
appears to be unmaintained.

### Options:

The colours used; the outermost pair is coloured with the last colour in the
list, the next-outermost with the second-last colour, etc. The first element of
each entry is the terminal colour, the second element is the GUI (gvim) colour.
```vim
let g:rbpt_colorpairs = [
\ ['red', 'RoyalBlue3'],
\ ['brown', 'SeaGreen3'],
\ ['blue', 'DarkOrchid3'],
\ ['gray', 'firebrick3'],
\ ['green', 'RoyalBlue3'],
\ ['magenta', 'SeaGreen3'],
\ ['cyan', 'DarkOrchid3'],
\ ['darkred', 'firebrick3'],
\ ['brown', 'RoyalBlue3'],
\ ['Darkblue', 'SeaGreen3'],
\ ['darkgray', 'DarkOrchid3'],
\ ['darkgreen', 'firebrick3'],
\ ['darkcyan', 'RoyalBlue3'],
\ ['darkred', 'SeaGreen3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['brown', 'firebrick3'],
\ ['gray', 'RoyalBlue3'],
\ ['black', 'SeaGreen3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['Darkblue', 'firebrick3'],
\ ['darkblue', 'DarkOrchid3'],
\ ['gray', 'firebrick3'],
\ ['darkgreen', 'RoyalBlue3'],
\ ['darkcyan', 'SeaGreen3'],
\ ['darkred', 'DarkOrchid3'],
\ ['darkmagenta', 'SeaGreen3'],
\ ['darkcyan', 'DarkOrchid3'],
\ ['red', 'firebrick3'],
\ ]
```

How deep to colour (repeating the colour list if necessary) before giving up;
limited for performance reasons.
```vim
let g:rbpt_max = 16
let g:rbpt_max = 15
```

```vim
let g:rbpt_loadcmd_toggle = 0
```

Also bold parenthese to make the colours stand out more.
```vim
let g:bold_parentheses = 1 " Default on
```

### Commands:

```vim
Expand Down