rainbow_levels.vim
A different approach to code highlighting.
git clone https://github.com/thiagoalessio/rainbow_levels.vim.gitthiagoalessio/rainbow_levels.vimRainbow Levels
A different approach to code highlighting.
This plugin highlights code by indentation level instead of language syntax.
It is specially useful when dealing with deeply nested code or callback hells.
Screenshot
Usage
This plugin exposes three self-explanatory commands:
:RainbowLevelsOn:RainbowLevelsOff:RainbowLevelsToggle
And you can use them in a variety of ways, for example:
" Creating a mapping to turn it on and off: map <leader>l :RainbowLevelsToggle<cr> " Or automatically turning it on for certain file types: autocmd Filetype * if index(['javascript', 'python', 'php', 'xml', 'yaml'], &ft) | call rainbow_levels#on() | else | call rainbow_levels#off() | endif
Customization
To customize the levels you just need to define highlight groups whith the
name RainbowLevelsN, where N is the number of the level.
By default this plugin defines 7 highlight groups, simply linking to common
existing highlight groups, in order to respect your colorscheme.
But you are free to define as many levels you wish. Check the examples below and also the User-Contributed Themes page for inspiration.
Examples
Jellybeans Rainbow
Using groups defined by Jellybeans colorscheme in a "rainbow" sequence.
hi! link RainbowLevel0 Constant hi! link RainbowLevel1 Type hi! link RainbowLevel2 Function hi! link RainbowLevel3 String hi! link RainbowLevel4 PreProc hi! link RainbowLevel5 Statement hi! link RainbowLevel6 Identifier hi! link RainbowLevel7 Normal hi! link RainbowLevel8 Comment
Background Only
Want to keep syntax highlight? No problem! You can change only the background colors instead.
hi! RainbowLevel0 ctermbg=240 guibg=#585858 hi! RainbowLevel1 ctermbg=239 guibg=#4e4e4e hi! RainbowLevel2 ctermbg=238 guibg=#444444 hi! RainbowLevel3 ctermbg=237 guibg=#3a3a3a hi! RainbowLevel4 ctermbg=236 guibg=#303030 hi! RainbowLevel5 ctermbg=235 guibg=#262626 hi! RainbowLevel6 ctermbg=234 guibg=#1c1c1c hi! RainbowLevel7 ctermbg=233 guibg=#121212 hi! RainbowLevel8 ctermbg=232 guibg=#080808
Cycle colors
Using a loop to automate the tedious work of defining all highlight groups.
for level in range(0, 10, 2) exe 'hi! RainbowLevel'.level.' guifg=magenta' exe 'hi! RainbowLevel'.(level+1).' guifg=cyan' endfor
Level Alert
Nothing shows up until a certain threshold, warning you that the code is going too deep.
hi! RainbowLevel0 guibg=none guifg=none hi! RainbowLevel2 guibg=none guifg=none hi! RainbowLevel3 guibg=none guifg=none hi! RainbowLevel4 guibg=none guifg=none hi! link RainbowLevel5 WarningMsg for level in range(6, 10) exe 'hi! link RainbowLevel'.level.' ErrorMsg' endfor
Special Thanks
-
Campbell Vertesi and Victor Schroder for the idea to fade the levels in shades of a single color.
-
David De Sousa and Lucas Caton for the idea of highlighting only the background color, to keep syntax highlight.
-
Derek Shoemaker for creating the very first User-Contributed Theme, with a different "rainbow" order, making a beautiful contrast between levels.
-
Ingo Karkat for identifying and fixing several issues present on the initial implementation.
Bugs
Please report any bugs you may find on the GitHub issue tracker: http://github.com/thiagoalessio/rainbow_levels.vim/issues
License
rainbow_levels.vim is released under the MIT License.
more like this





