Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

安装 indent-guides

  • Loading branch information...
commit e466d9acccc7a5ab6cab9a2a92386f70eb9276c3 1 parent cf07771
@lilydjwg authored
View
879 autoload/color_helper.vim
@@ -0,0 +1,879 @@
+" Author: Nate Kane <nathanaelkane AT gmail DOT com>
+" Homepage: http://github.com/nathanaelkane/vim-indent-guides
+
+"
+" Return hex string equivalent to given decimal string or number.
+"
+" Example: color_helper#dec_to_hex(255, 2)
+" Returns: 'FF'
+"
+" Example: color_helper#dec_to_hex(255, 5)
+" Returns: '000FF'
+"
+function! color_helper#dec_to_hex(arg, padding)
+ return toupper(printf('%0' . a:padding . 'x', a:arg + 0))
+endfunction
+
+"
+" Return number equivalent to given hex string ('0x' is optional).
+"
+" Example: color_helper#hex_to_dec('FF')
+" Returns: 255
+"
+" Example: color_helper#hex_to_dec('88')
+" Returns: 136
+"
+" Example: color_helper#hex_to_dec('00')
+" Returns: 0
+"
+function! color_helper#hex_to_dec(arg)
+ return (a:arg =~? '^0x') ? a:arg + 0 : ('0x'.a:arg) + 0
+endfunction
+
+"
+" Converts a given hex color string into an rgb list (eg. [red, green, blue]).
+"
+" Example: color_helper#hex_color_to_rgb('#0088FF')
+" Returns: [0, 136, 255]
+"
+function! color_helper#hex_color_to_rgb(hex_color)
+ let l:rgb = []
+
+ if a:hex_color =~ g:indent_guides_color_hex_pattern
+ let l:red = color_helper#hex_to_dec(strpart(a:hex_color, 1, 2))
+ let l:green = color_helper#hex_to_dec(strpart(a:hex_color, 3, 2))
+ let l:blue = color_helper#hex_to_dec(strpart(a:hex_color, 5, 2))
+ let l:rgb = [l:red, l:green, l:blue]
+ end
+
+ return l:rgb
+endfunction
+
+"
+" Converts a given rgb list (eg. [red, green, blue]) into a hex color string.
+"
+" Example: color_helper#rgb_color_to_hex([0, 136, 255])
+" Returns: '#0088FF'
+"
+function! color_helper#rgb_color_to_hex(rgb_color)
+ let l:hex_color = '#'
+ let l:hex_color .= color_helper#dec_to_hex(a:rgb_color[0], 2) " red
+ let l:hex_color .= color_helper#dec_to_hex(a:rgb_color[1], 2) " green
+ let l:hex_color .= color_helper#dec_to_hex(a:rgb_color[2], 2) " blue
+
+ return l:hex_color
+endfunction
+
+"
+" Returns a ligtened color using the given color and the percent to lighten it
+" by.
+"
+" Example: color_helper#hex_color_lighten('#000000', 0.10)
+" Returns: '#191919'
+"
+function! color_helper#hex_color_lighten(color, percent)
+ let l:rgb = color_helper#hex_color_to_rgb(a:color)
+ let l:rgb_lightened = []
+
+ for i in l:rgb
+ call add(l:rgb_lightened, float2nr(i + ((255 - i) * a:percent)))
+ endfor
+
+ return color_helper#rgb_color_to_hex(l:rgb_lightened)
+endfunction
+
+"
+" Returns a darkened color using the given color and the percent to darken it
+" by.
+"
+" Example: color_helper#hex_color_darken('#FFFFFF', 0.10)
+" Returns: '#E5E5E5'
+"
+function! color_helper#hex_color_darken(color, percent)
+ let l:rgb = color_helper#hex_color_to_rgb(a:color)
+ let l:rgb_darkened = []
+
+ for i in l:rgb
+ call add(l:rgb_darkened, float2nr(i * (1 - a:percent)))
+ endfor
+
+ return color_helper#rgb_color_to_hex(l:rgb_darkened)
+endfunction
+
+"
+" Returns a hex color code for the given color name.
+"
+" Example: color_helper#color_name_to_hex('darkslategray')
+" Returns: '#2F4F4F'
+"
+function! color_helper#color_name_to_hex(color_name)
+ let l:hex_code = ''
+ let l:color_name = tolower(a:color_name)
+
+ let l:color_list = {
+ \ 'alice blue' : '#F0F8FF',
+ \ 'aliceblue' : '#F0F8FF',
+ \ 'antique white' : '#FAEBD7',
+ \ 'antiquewhite' : '#FAEBD7',
+ \ 'antiquewhite1' : '#FFEFDB',
+ \ 'antiquewhite2' : '#EEDFCC',
+ \ 'antiquewhite3' : '#CDC0B0',
+ \ 'antiquewhite4' : '#8B8378',
+ \ 'aquamarine' : '#7FFFD4',
+ \ 'aquamarine1' : '#7FFFD4',
+ \ 'aquamarine2' : '#76EEC6',
+ \ 'aquamarine3' : '#66CDAA',
+ \ 'aquamarine4' : '#458B74',
+ \ 'azure' : '#F0FFFF',
+ \ 'azure1' : '#F0FFFF',
+ \ 'azure2' : '#E0EEEE',
+ \ 'azure3' : '#C1CDCD',
+ \ 'azure4' : '#838B8B',
+ \ 'beige' : '#F5F5DC',
+ \ 'bisque' : '#FFE4C4',
+ \ 'bisque1' : '#FFE4C4',
+ \ 'bisque2' : '#EED5B7',
+ \ 'bisque3' : '#CDB79E',
+ \ 'bisque4' : '#8B7D6B',
+ \ 'black' : '#000000',
+ \ 'blanched almond' : '#FFEBCD',
+ \ 'blanchedalmond' : '#FFEBCD',
+ \ 'blue violet' : '#8A2BE2',
+ \ 'blue' : '#0000FF',
+ \ 'blue1' : '#0000FF',
+ \ 'blue2' : '#0000EE',
+ \ 'blue3' : '#0000CD',
+ \ 'blue4' : '#00008B',
+ \ 'blueviolet' : '#8A2BE2',
+ \ 'brown' : '#A52A2A',
+ \ 'brown1' : '#FF4040',
+ \ 'brown2' : '#EE3B3B',
+ \ 'brown3' : '#CD3333',
+ \ 'brown4' : '#8B2323',
+ \ 'burlywood' : '#DEB887',
+ \ 'burlywood1' : '#FFD39B',
+ \ 'burlywood2' : '#EEC591',
+ \ 'burlywood3' : '#CDAA7D',
+ \ 'burlywood4' : '#8B7355',
+ \ 'cadet blue' : '#5F9EA0',
+ \ 'cadetblue' : '#5F9EA0',
+ \ 'cadetblue1' : '#98F5FF',
+ \ 'cadetblue2' : '#8EE5EE',
+ \ 'cadetblue3' : '#7AC5CD',
+ \ 'cadetblue4' : '#53868B',
+ \ 'chartreuse' : '#7FFF00',
+ \ 'chartreuse1' : '#7FFF00',
+ \ 'chartreuse2' : '#76EE00',
+ \ 'chartreuse3' : '#66CD00',
+ \ 'chartreuse4' : '#458B00',
+ \ 'chocolate' : '#D2691E',
+ \ 'chocolate1' : '#FF7F24',
+ \ 'chocolate2' : '#EE7621',
+ \ 'chocolate3' : '#CD661D',
+ \ 'chocolate4' : '#8B4513',
+ \ 'coral' : '#FF7F50',
+ \ 'coral1' : '#FF7256',
+ \ 'coral2' : '#EE6A50',
+ \ 'coral3' : '#CD5B45',
+ \ 'coral4' : '#8B3E2F',
+ \ 'cornflower blue' : '#6495ED',
+ \ 'cornflowerblue' : '#6495ED',
+ \ 'cornsilk' : '#FFF8DC',
+ \ 'cornsilk1' : '#FFF8DC',
+ \ 'cornsilk2' : '#EEE8CD',
+ \ 'cornsilk3' : '#CDC8B1',
+ \ 'cornsilk4' : '#8B8878',
+ \ 'cyan' : '#00FFFF',
+ \ 'cyan1' : '#00FFFF',
+ \ 'cyan2' : '#00EEEE',
+ \ 'cyan3' : '#00CDCD',
+ \ 'cyan4' : '#008B8B',
+ \ 'dark blue' : '#00008B',
+ \ 'dark cyan' : '#008B8B',
+ \ 'dark goldenrod' : '#B8860B',
+ \ 'dark gray' : '#A9A9A9',
+ \ 'dark green' : '#006400',
+ \ 'dark grey' : '#A9A9A9',
+ \ 'dark khaki' : '#BDB76B',
+ \ 'dark magenta' : '#8B008B',
+ \ 'dark olive green' : '#556B2F',
+ \ 'dark orange' : '#FF8C00',
+ \ 'dark orchid' : '#9932CC',
+ \ 'dark red' : '#8B0000',
+ \ 'dark salmon' : '#E9967A',
+ \ 'dark sea green' : '#8FBC8F',
+ \ 'dark slate blue' : '#483D8B',
+ \ 'dark slate gray' : '#2F4F4F',
+ \ 'dark slate grey' : '#2F4F4F',
+ \ 'dark turquoise' : '#00CED1',
+ \ 'dark violet' : '#9400D3',
+ \ 'dark yellow' : '#BBBB00',
+ \ 'darkblue' : '#00008B',
+ \ 'darkcyan' : '#008B8B',
+ \ 'darkgoldenrod' : '#B8860B',
+ \ 'darkgoldenrod1' : '#FFB90F',
+ \ 'darkgoldenrod2' : '#EEAD0E',
+ \ 'darkgoldenrod3' : '#CD950C',
+ \ 'darkgoldenrod4' : '#8B6508',
+ \ 'darkgray' : '#A9A9A9',
+ \ 'darkgreen' : '#006400',
+ \ 'darkgrey' : '#A9A9A9',
+ \ 'darkkhaki' : '#BDB76B',
+ \ 'darkmagenta' : '#8B008B',
+ \ 'darkolivegreen' : '#556B2F',
+ \ 'darkolivegreen1' : '#CAFF70',
+ \ 'darkolivegreen2' : '#BCEE68',
+ \ 'darkolivegreen3' : '#A2CD5A',
+ \ 'darkolivegreen4' : '#6E8B3D',
+ \ 'darkorange' : '#FF8C00',
+ \ 'darkorange1' : '#FF7F00',
+ \ 'darkorange2' : '#EE7600',
+ \ 'darkorange3' : '#CD6600',
+ \ 'darkorange4' : '#8B4500',
+ \ 'darkorchid' : '#9932CC',
+ \ 'darkorchid1' : '#BF3EFF',
+ \ 'darkorchid2' : '#B23AEE',
+ \ 'darkorchid3' : '#9A32CD',
+ \ 'darkorchid4' : '#68228B',
+ \ 'darkred' : '#8B0000',
+ \ 'darksalmon' : '#E9967A',
+ \ 'darkseagreen' : '#8FBC8F',
+ \ 'darkseagreen1' : '#C1FFC1',
+ \ 'darkseagreen2' : '#B4EEB4',
+ \ 'darkseagreen3' : '#9BCD9B',
+ \ 'darkseagreen4' : '#698B69',
+ \ 'darkslateblue' : '#483D8B',
+ \ 'darkslategray' : '#2F4F4F',
+ \ 'darkslategray1' : '#97FFFF',
+ \ 'darkslategray2' : '#8DEEEE',
+ \ 'darkslategray3' : '#79CDCD',
+ \ 'darkslategray4' : '#528B8B',
+ \ 'darkslategrey' : '#2F4F4F',
+ \ 'darkturquoise' : '#00CED1',
+ \ 'darkviolet' : '#9400D3',
+ \ 'darkyellow' : '#BBBB00',
+ \ 'deep pink' : '#FF1493',
+ \ 'deep sky blue' : '#00BFFF',
+ \ 'deeppink' : '#FF1493',
+ \ 'deeppink1' : '#FF1493',
+ \ 'deeppink2' : '#EE1289',
+ \ 'deeppink3' : '#CD1076',
+ \ 'deeppink4' : '#8B0A50',
+ \ 'deepskyblue' : '#00BFFF',
+ \ 'deepskyblue1' : '#00BFFF',
+ \ 'deepskyblue2' : '#00B2EE',
+ \ 'deepskyblue3' : '#009ACD',
+ \ 'deepskyblue4' : '#00688B',
+ \ 'dim gray' : '#696969',
+ \ 'dim grey' : '#696969',
+ \ 'dimgray' : '#696969',
+ \ 'dimgrey' : '#696969',
+ \ 'dodger blue' : '#1E90FF',
+ \ 'dodgerblue' : '#1E90FF',
+ \ 'dodgerblue1' : '#1E90FF',
+ \ 'dodgerblue2' : '#1C86EE',
+ \ 'dodgerblue3' : '#1874CD',
+ \ 'dodgerblue4' : '#104E8B',
+ \ 'firebrick' : '#B22222',
+ \ 'firebrick1' : '#FF3030',
+ \ 'firebrick2' : '#EE2C2C',
+ \ 'firebrick3' : '#CD2626',
+ \ 'firebrick4' : '#8B1A1A',
+ \ 'floral white' : '#FFFAF0',
+ \ 'floralwhite' : '#FFFAF0',
+ \ 'forest green' : '#228B22',
+ \ 'forestgreen' : '#228B22',
+ \ 'gainsboro' : '#DCDCDC',
+ \ 'ghost white' : '#F8F8FF',
+ \ 'ghostwhite' : '#F8F8FF',
+ \ 'gold' : '#FFD700',
+ \ 'gold1' : '#FFD700',
+ \ 'gold2' : '#EEC900',
+ \ 'gold3' : '#CDAD00',
+ \ 'gold4' : '#8B7500',
+ \ 'goldenrod' : '#DAA520',
+ \ 'goldenrod1' : '#FFC125',
+ \ 'goldenrod2' : '#EEB422',
+ \ 'goldenrod3' : '#CD9B1D',
+ \ 'goldenrod4' : '#8B6914',
+ \ 'gray' : '#BEBEBE',
+ \ 'gray0' : '#000000',
+ \ 'gray1' : '#030303',
+ \ 'gray10' : '#1A1A1A',
+ \ 'gray100' : '#FFFFFF',
+ \ 'gray11' : '#1C1C1C',
+ \ 'gray12' : '#1F1F1F',
+ \ 'gray13' : '#212121',
+ \ 'gray14' : '#242424',
+ \ 'gray15' : '#262626',
+ \ 'gray16' : '#292929',
+ \ 'gray17' : '#2B2B2B',
+ \ 'gray18' : '#2E2E2E',
+ \ 'gray19' : '#303030',
+ \ 'gray2' : '#050505',
+ \ 'gray20' : '#333333',
+ \ 'gray21' : '#363636',
+ \ 'gray22' : '#383838',
+ \ 'gray23' : '#3B3B3B',
+ \ 'gray24' : '#3D3D3D',
+ \ 'gray25' : '#404040',
+ \ 'gray26' : '#424242',
+ \ 'gray27' : '#454545',
+ \ 'gray28' : '#474747',
+ \ 'gray29' : '#4A4A4A',
+ \ 'gray3' : '#080808',
+ \ 'gray30' : '#4D4D4D',
+ \ 'gray31' : '#4F4F4F',
+ \ 'gray32' : '#525252',
+ \ 'gray33' : '#545454',
+ \ 'gray34' : '#575757',
+ \ 'gray35' : '#595959',
+ \ 'gray36' : '#5C5C5C',
+ \ 'gray37' : '#5E5E5E',
+ \ 'gray38' : '#616161',
+ \ 'gray39' : '#636363',
+ \ 'gray4' : '#0A0A0A',
+ \ 'gray40' : '#666666',
+ \ 'gray41' : '#696969',
+ \ 'gray42' : '#6B6B6B',
+ \ 'gray43' : '#6E6E6E',
+ \ 'gray44' : '#707070',
+ \ 'gray45' : '#737373',
+ \ 'gray46' : '#757575',
+ \ 'gray47' : '#787878',
+ \ 'gray48' : '#7A7A7A',
+ \ 'gray49' : '#7D7D7D',
+ \ 'gray5' : '#0D0D0D',
+ \ 'gray50' : '#7F7F7F',
+ \ 'gray51' : '#828282',
+ \ 'gray52' : '#858585',
+ \ 'gray53' : '#878787',
+ \ 'gray54' : '#8A8A8A',
+ \ 'gray55' : '#8C8C8C',
+ \ 'gray56' : '#8F8F8F',
+ \ 'gray57' : '#919191',
+ \ 'gray58' : '#949494',
+ \ 'gray59' : '#969696',
+ \ 'gray6' : '#0F0F0F',
+ \ 'gray60' : '#999999',
+ \ 'gray61' : '#9C9C9C',
+ \ 'gray62' : '#9E9E9E',
+ \ 'gray63' : '#A1A1A1',
+ \ 'gray64' : '#A3A3A3',
+ \ 'gray65' : '#A6A6A6',
+ \ 'gray66' : '#A8A8A8',
+ \ 'gray67' : '#ABABAB',
+ \ 'gray68' : '#ADADAD',
+ \ 'gray69' : '#B0B0B0',
+ \ 'gray7' : '#121212',
+ \ 'gray70' : '#B3B3B3',
+ \ 'gray71' : '#B5B5B5',
+ \ 'gray72' : '#B8B8B8',
+ \ 'gray73' : '#BABABA',
+ \ 'gray74' : '#BDBDBD',
+ \ 'gray75' : '#BFBFBF',
+ \ 'gray76' : '#C2C2C2',
+ \ 'gray77' : '#C4C4C4',
+ \ 'gray78' : '#C7C7C7',
+ \ 'gray79' : '#C9C9C9',
+ \ 'gray8' : '#141414',
+ \ 'gray80' : '#CCCCCC',
+ \ 'gray81' : '#CFCFCF',
+ \ 'gray82' : '#D1D1D1',
+ \ 'gray83' : '#D4D4D4',
+ \ 'gray84' : '#D6D6D6',
+ \ 'gray85' : '#D9D9D9',
+ \ 'gray86' : '#DBDBDB',
+ \ 'gray87' : '#DEDEDE',
+ \ 'gray88' : '#E0E0E0',
+ \ 'gray89' : '#E3E3E3',
+ \ 'gray9' : '#171717',
+ \ 'gray90' : '#E5E5E5',
+ \ 'gray91' : '#E8E8E8',
+ \ 'gray92' : '#EBEBEB',
+ \ 'gray93' : '#EDEDED',
+ \ 'gray94' : '#F0F0F0',
+ \ 'gray95' : '#F2F2F2',
+ \ 'gray96' : '#F5F5F5',
+ \ 'gray97' : '#F7F7F7',
+ \ 'gray98' : '#FAFAFA',
+ \ 'gray99' : '#FCFCFC',
+ \ 'green yellow' : '#ADFF2F',
+ \ 'green' : '#00FF00',
+ \ 'green1' : '#00FF00',
+ \ 'green2' : '#00EE00',
+ \ 'green3' : '#00CD00',
+ \ 'green4' : '#008B00',
+ \ 'greenyellow' : '#ADFF2F',
+ \ 'grey' : '#BEBEBE',
+ \ 'grey0' : '#000000',
+ \ 'grey1' : '#030303',
+ \ 'grey10' : '#1A1A1A',
+ \ 'grey100' : '#FFFFFF',
+ \ 'grey11' : '#1C1C1C',
+ \ 'grey12' : '#1F1F1F',
+ \ 'grey13' : '#212121',
+ \ 'grey14' : '#242424',
+ \ 'grey15' : '#262626',
+ \ 'grey16' : '#292929',
+ \ 'grey17' : '#2B2B2B',
+ \ 'grey18' : '#2E2E2E',
+ \ 'grey19' : '#303030',
+ \ 'grey2' : '#050505',
+ \ 'grey20' : '#333333',
+ \ 'grey21' : '#363636',
+ \ 'grey22' : '#383838',
+ \ 'grey23' : '#3B3B3B',
+ \ 'grey24' : '#3D3D3D',
+ \ 'grey25' : '#404040',
+ \ 'grey26' : '#424242',
+ \ 'grey27' : '#454545',
+ \ 'grey28' : '#474747',
+ \ 'grey29' : '#4A4A4A',
+ \ 'grey3' : '#080808',
+ \ 'grey30' : '#4D4D4D',
+ \ 'grey31' : '#4F4F4F',
+ \ 'grey32' : '#525252',
+ \ 'grey33' : '#545454',
+ \ 'grey34' : '#575757',
+ \ 'grey35' : '#595959',
+ \ 'grey36' : '#5C5C5C',
+ \ 'grey37' : '#5E5E5E',
+ \ 'grey38' : '#616161',
+ \ 'grey39' : '#636363',
+ \ 'grey4' : '#0A0A0A',
+ \ 'grey40' : '#666666',
+ \ 'grey41' : '#696969',
+ \ 'grey42' : '#6B6B6B',
+ \ 'grey43' : '#6E6E6E',
+ \ 'grey44' : '#707070',
+ \ 'grey45' : '#737373',
+ \ 'grey46' : '#757575',
+ \ 'grey47' : '#787878',
+ \ 'grey48' : '#7A7A7A',
+ \ 'grey49' : '#7D7D7D',
+ \ 'grey5' : '#0D0D0D',
+ \ 'grey50' : '#7F7F7F',
+ \ 'grey51' : '#828282',
+ \ 'grey52' : '#858585',
+ \ 'grey53' : '#878787',
+ \ 'grey54' : '#8A8A8A',
+ \ 'grey55' : '#8C8C8C',
+ \ 'grey56' : '#8F8F8F',
+ \ 'grey57' : '#919191',
+ \ 'grey58' : '#949494',
+ \ 'grey59' : '#969696',
+ \ 'grey6' : '#0F0F0F',
+ \ 'grey60' : '#999999',
+ \ 'grey61' : '#9C9C9C',
+ \ 'grey62' : '#9E9E9E',
+ \ 'grey63' : '#A1A1A1',
+ \ 'grey64' : '#A3A3A3',
+ \ 'grey65' : '#A6A6A6',
+ \ 'grey66' : '#A8A8A8',
+ \ 'grey67' : '#ABABAB',
+ \ 'grey68' : '#ADADAD',
+ \ 'grey69' : '#B0B0B0',
+ \ 'grey7' : '#121212',
+ \ 'grey70' : '#B3B3B3',
+ \ 'grey71' : '#B5B5B5',
+ \ 'grey72' : '#B8B8B8',
+ \ 'grey73' : '#BABABA',
+ \ 'grey74' : '#BDBDBD',
+ \ 'grey75' : '#BFBFBF',
+ \ 'grey76' : '#C2C2C2',
+ \ 'grey77' : '#C4C4C4',
+ \ 'grey78' : '#C7C7C7',
+ \ 'grey79' : '#C9C9C9',
+ \ 'grey8' : '#141414',
+ \ 'grey80' : '#CCCCCC',
+ \ 'grey81' : '#CFCFCF',
+ \ 'grey82' : '#D1D1D1',
+ \ 'grey83' : '#D4D4D4',
+ \ 'grey84' : '#D6D6D6',
+ \ 'grey85' : '#D9D9D9',
+ \ 'grey86' : '#DBDBDB',
+ \ 'grey87' : '#DEDEDE',
+ \ 'grey88' : '#E0E0E0',
+ \ 'grey89' : '#E3E3E3',
+ \ 'grey9' : '#171717',
+ \ 'grey90' : '#E5E5E5',
+ \ 'grey91' : '#E8E8E8',
+ \ 'grey92' : '#EBEBEB',
+ \ 'grey93' : '#EDEDED',
+ \ 'grey94' : '#F0F0F0',
+ \ 'grey95' : '#F2F2F2',
+ \ 'grey96' : '#F5F5F5',
+ \ 'grey97' : '#F7F7F7',
+ \ 'grey98' : '#FAFAFA',
+ \ 'grey99' : '#FCFCFC',
+ \ 'honeydew' : '#F0FFF0',
+ \ 'honeydew1' : '#F0FFF0',
+ \ 'honeydew2' : '#E0EEE0',
+ \ 'honeydew3' : '#C1CDC1',
+ \ 'honeydew4' : '#838B83',
+ \ 'hot pink' : '#FF69B4',
+ \ 'hotpink' : '#FF69B4',
+ \ 'hotpink1' : '#FF6EB4',
+ \ 'hotpink2' : '#EE6AA7',
+ \ 'hotpink3' : '#CD6090',
+ \ 'hotpink4' : '#8B3A62',
+ \ 'indian red' : '#CD5C5C',
+ \ 'indianred' : '#CD5C5C',
+ \ 'indianred1' : '#FF6A6A',
+ \ 'indianred2' : '#EE6363',
+ \ 'indianred3' : '#CD5555',
+ \ 'indianred4' : '#8B3A3A',
+ \ 'ivory' : '#FFFFF0',
+ \ 'ivory1' : '#FFFFF0',
+ \ 'ivory2' : '#EEEEE0',
+ \ 'ivory3' : '#CDCDC1',
+ \ 'ivory4' : '#8B8B83',
+ \ 'khaki' : '#F0E68C',
+ \ 'khaki1' : '#FFF68F',
+ \ 'khaki2' : '#EEE685',
+ \ 'khaki3' : '#CDC673',
+ \ 'khaki4' : '#8B864E',
+ \ 'lavender blush' : '#FFF0F5',
+ \ 'lavender' : '#E6E6FA',
+ \ 'lavenderblush' : '#FFF0F5',
+ \ 'lavenderblush1' : '#FFF0F5',
+ \ 'lavenderblush2' : '#EEE0E5',
+ \ 'lavenderblush3' : '#CDC1C5',
+ \ 'lavenderblush4' : '#8B8386',
+ \ 'lawn green' : '#7CFC00',
+ \ 'lawngreen' : '#7CFC00',
+ \ 'lemon chiffon' : '#FFFACD',
+ \ 'lemonchiffon' : '#FFFACD',
+ \ 'lemonchiffon1' : '#FFFACD',
+ \ 'lemonchiffon2' : '#EEE9BF',
+ \ 'lemonchiffon3' : '#CDC9A5',
+ \ 'lemonchiffon4' : '#8B8970',
+ \ 'light blue' : '#ADD8E6',
+ \ 'light coral' : '#F08080',
+ \ 'light cyan' : '#E0FFFF',
+ \ 'light goldenrod yellow' : '#FAFAD2',
+ \ 'light goldenrod' : '#EEDD82',
+ \ 'light gray' : '#D3D3D3',
+ \ 'light green' : '#90EE90',
+ \ 'light grey' : '#D3D3D3',
+ \ 'light magenta' : '#FFBBFF',
+ \ 'light pink' : '#FFB6C1',
+ \ 'light red' : '#FFBBBB',
+ \ 'light salmon' : '#FFA07A',
+ \ 'light sea green' : '#20B2AA',
+ \ 'light sky blue' : '#87CEFA',
+ \ 'light slate blue' : '#8470FF',
+ \ 'light slate gray' : '#778899',
+ \ 'light slate grey' : '#778899',
+ \ 'light steel blue' : '#B0C4DE',
+ \ 'light yellow' : '#FFFFE0',
+ \ 'lightblue' : '#ADD8E6',
+ \ 'lightblue1' : '#BFEFFF',
+ \ 'lightblue2' : '#B2DFEE',
+ \ 'lightblue3' : '#9AC0CD',
+ \ 'lightblue4' : '#68838B',
+ \ 'lightcoral' : '#F08080',
+ \ 'lightcyan' : '#E0FFFF',
+ \ 'lightcyan1' : '#E0FFFF',
+ \ 'lightcyan2' : '#D1EEEE',
+ \ 'lightcyan3' : '#B4CDCD',
+ \ 'lightcyan4' : '#7A8B8B',
+ \ 'lightgoldenrod' : '#EEDD82',
+ \ 'lightgoldenrod1' : '#FFEC8B',
+ \ 'lightgoldenrod2' : '#EEDC82',
+ \ 'lightgoldenrod3' : '#CDBE70',
+ \ 'lightgoldenrod4' : '#8B814C',
+ \ 'lightgoldenrodyellow' : '#FAFAD2',
+ \ 'lightgray' : '#D3D3D3',
+ \ 'lightgreen' : '#90EE90',
+ \ 'lightgrey' : '#D3D3D3',
+ \ 'lightmagenta' : '#FFBBFF',
+ \ 'lightpink' : '#FFB6C1',
+ \ 'lightpink1' : '#FFAEB9',
+ \ 'lightpink2' : '#EEA2AD',
+ \ 'lightpink3' : '#CD8C95',
+ \ 'lightpink4' : '#8B5F65',
+ \ 'lightred' : '#FFBBBB',
+ \ 'lightsalmon' : '#FFA07A',
+ \ 'lightsalmon1' : '#FFA07A',
+ \ 'lightsalmon2' : '#EE9572',
+ \ 'lightsalmon3' : '#CD8162',
+ \ 'lightsalmon4' : '#8B5742',
+ \ 'lightseagreen' : '#20B2AA',
+ \ 'lightskyblue' : '#87CEFA',
+ \ 'lightskyblue1' : '#B0E2FF',
+ \ 'lightskyblue2' : '#A4D3EE',
+ \ 'lightskyblue3' : '#8DB6CD',
+ \ 'lightskyblue4' : '#607B8B',
+ \ 'lightslateblue' : '#8470FF',
+ \ 'lightslategray' : '#778899',
+ \ 'lightslategrey' : '#778899',
+ \ 'lightsteelblue' : '#B0C4DE',
+ \ 'lightsteelblue1' : '#CAE1FF',
+ \ 'lightsteelblue2' : '#BCD2EE',
+ \ 'lightsteelblue3' : '#A2B5CD',
+ \ 'lightsteelblue4' : '#6E7B8B',
+ \ 'lightyellow' : '#FFFFE0',
+ \ 'lightyellow1' : '#FFFFE0',
+ \ 'lightyellow2' : '#EEEED1',
+ \ 'lightyellow3' : '#CDCDB4',
+ \ 'lightyellow4' : '#8B8B7A',
+ \ 'lime green' : '#32CD32',
+ \ 'limegreen' : '#32CD32',
+ \ 'linen' : '#FAF0E6',
+ \ 'magenta' : '#FF00FF',
+ \ 'magenta1' : '#FF00FF',
+ \ 'magenta2' : '#EE00EE',
+ \ 'magenta3' : '#CD00CD',
+ \ 'magenta4' : '#8B008B',
+ \ 'maroon' : '#B03060',
+ \ 'maroon1' : '#FF34B3',
+ \ 'maroon2' : '#EE30A7',
+ \ 'maroon3' : '#CD2990',
+ \ 'maroon4' : '#8B1C62',
+ \ 'medium aquamarine' : '#66CDAA',
+ \ 'medium blue' : '#0000CD',
+ \ 'medium orchid' : '#BA55D3',
+ \ 'medium purple' : '#9370DB',
+ \ 'medium sea green' : '#3CB371',
+ \ 'medium slate blue' : '#7B68EE',
+ \ 'medium spring green' : '#00FA9A',
+ \ 'medium turquoise' : '#48D1CC',
+ \ 'medium violet red' : '#C71585',
+ \ 'mediumaquamarine' : '#66CDAA',
+ \ 'mediumblue' : '#0000CD',
+ \ 'mediumorchid' : '#BA55D3',
+ \ 'mediumorchid1' : '#E066FF',
+ \ 'mediumorchid2' : '#D15FEE',
+ \ 'mediumorchid3' : '#B452CD',
+ \ 'mediumorchid4' : '#7A378B',
+ \ 'mediumpurple' : '#9370DB',
+ \ 'mediumpurple1' : '#AB82FF',
+ \ 'mediumpurple2' : '#9F79EE',
+ \ 'mediumpurple3' : '#8968CD',
+ \ 'mediumpurple4' : '#5D478B',
+ \ 'mediumseagreen' : '#3CB371',
+ \ 'mediumslateblue' : '#7B68EE',
+ \ 'mediumspringgreen' : '#00FA9A',
+ \ 'mediumturquoise' : '#48D1CC',
+ \ 'mediumvioletred' : '#C71585',
+ \ 'midnight blue' : '#191970',
+ \ 'midnightblue' : '#191970',
+ \ 'mint cream' : '#F5FFFA',
+ \ 'mintcream' : '#F5FFFA',
+ \ 'misty rose' : '#FFE4E1',
+ \ 'mistyrose' : '#FFE4E1',
+ \ 'mistyrose1' : '#FFE4E1',
+ \ 'mistyrose2' : '#EED5D2',
+ \ 'mistyrose3' : '#CDB7B5',
+ \ 'mistyrose4' : '#8B7D7B',
+ \ 'moccasin' : '#FFE4B5',
+ \ 'navajo white' : '#FFDEAD',
+ \ 'navajowhite' : '#FFDEAD',
+ \ 'navajowhite1' : '#FFDEAD',
+ \ 'navajowhite2' : '#EECFA1',
+ \ 'navajowhite3' : '#CDB38B',
+ \ 'navajowhite4' : '#8B795E',
+ \ 'navy blue' : '#000080',
+ \ 'navy' : '#000080',
+ \ 'navyblue' : '#000080',
+ \ 'old lace' : '#FDF5E6',
+ \ 'oldlace' : '#FDF5E6',
+ \ 'olive drab' : '#6B8E23',
+ \ 'olivedrab' : '#6B8E23',
+ \ 'olivedrab1' : '#C0FF3E',
+ \ 'olivedrab2' : '#B3EE3A',
+ \ 'olivedrab3' : '#9ACD32',
+ \ 'olivedrab4' : '#698B22',
+ \ 'orange red' : '#FF4500',
+ \ 'orange' : '#FFA500',
+ \ 'orange1' : '#FFA500',
+ \ 'orange2' : '#EE9A00',
+ \ 'orange3' : '#CD8500',
+ \ 'orange4' : '#8B5A00',
+ \ 'orangered' : '#FF4500',
+ \ 'orangered1' : '#FF4500',
+ \ 'orangered2' : '#EE4000',
+ \ 'orangered3' : '#CD3700',
+ \ 'orangered4' : '#8B2500',
+ \ 'orchid' : '#DA70D6',
+ \ 'orchid1' : '#FF83FA',
+ \ 'orchid2' : '#EE7AE9',
+ \ 'orchid3' : '#CD69C9',
+ \ 'orchid4' : '#8B4789',
+ \ 'pale goldenrod' : '#EEE8AA',
+ \ 'pale green' : '#98FB98',
+ \ 'pale turquoise' : '#AFEEEE',
+ \ 'pale violet red' : '#DB7093',
+ \ 'palegoldenrod' : '#EEE8AA',
+ \ 'palegreen' : '#98FB98',
+ \ 'palegreen1' : '#9AFF9A',
+ \ 'palegreen2' : '#90EE90',
+ \ 'palegreen3' : '#7CCD7C',
+ \ 'palegreen4' : '#548B54',
+ \ 'paleturquoise' : '#AFEEEE',
+ \ 'paleturquoise1' : '#BBFFFF',
+ \ 'paleturquoise2' : '#AEEEEE',
+ \ 'paleturquoise3' : '#96CDCD',
+ \ 'paleturquoise4' : '#668B8B',
+ \ 'palevioletred' : '#DB7093',
+ \ 'palevioletred1' : '#FF82AB',
+ \ 'palevioletred2' : '#EE799F',
+ \ 'palevioletred3' : '#CD6889',
+ \ 'palevioletred4' : '#8B475D',
+ \ 'papaya whip' : '#FFEFD5',
+ \ 'papayawhip' : '#FFEFD5',
+ \ 'peach puff' : '#FFDAB9',
+ \ 'peachpuff' : '#FFDAB9',
+ \ 'peachpuff1' : '#FFDAB9',
+ \ 'peachpuff2' : '#EECBAD',
+ \ 'peachpuff3' : '#CDAF95',
+ \ 'peachpuff4' : '#8B7765',
+ \ 'peru' : '#CD853F',
+ \ 'pink' : '#FFC0CB',
+ \ 'pink1' : '#FFB5C5',
+ \ 'pink2' : '#EEA9B8',
+ \ 'pink3' : '#CD919E',
+ \ 'pink4' : '#8B636C',
+ \ 'plum' : '#DDA0DD',
+ \ 'plum1' : '#FFBBFF',
+ \ 'plum2' : '#EEAEEE',
+ \ 'plum3' : '#CD96CD',
+ \ 'plum4' : '#8B668B',
+ \ 'powder blue' : '#B0E0E6',
+ \ 'powderblue' : '#B0E0E6',
+ \ 'purple' : '#A020F0',
+ \ 'purple1' : '#9B30FF',
+ \ 'purple2' : '#912CEE',
+ \ 'purple3' : '#7D26CD',
+ \ 'purple4' : '#551A8B',
+ \ 'red' : '#FF0000',
+ \ 'red1' : '#FF0000',
+ \ 'red2' : '#EE0000',
+ \ 'red3' : '#CD0000',
+ \ 'red4' : '#8B0000',
+ \ 'rosy brown' : '#BC8F8F',
+ \ 'rosybrown' : '#BC8F8F',
+ \ 'rosybrown1' : '#FFC1C1',
+ \ 'rosybrown2' : '#EEB4B4',
+ \ 'rosybrown3' : '#CD9B9B',
+ \ 'rosybrown4' : '#8B6969',
+ \ 'royal blue' : '#4169E1',
+ \ 'royalblue' : '#4169E1',
+ \ 'royalblue1' : '#4876FF',
+ \ 'royalblue2' : '#436EEE',
+ \ 'royalblue3' : '#3A5FCD',
+ \ 'royalblue4' : '#27408B',
+ \ 'saddle brown' : '#8B4513',
+ \ 'saddlebrown' : '#8B4513',
+ \ 'salmon' : '#FA8072',
+ \ 'salmon1' : '#FF8C69',
+ \ 'salmon2' : '#EE8262',
+ \ 'salmon3' : '#CD7054',
+ \ 'salmon4' : '#8B4C39',
+ \ 'sandy brown' : '#F4A460',
+ \ 'sandybrown' : '#F4A460',
+ \ 'sea green' : '#2E8B57',
+ \ 'seagreen' : '#2E8B57',
+ \ 'seagreen1' : '#54FF9F',
+ \ 'seagreen2' : '#4EEE94',
+ \ 'seagreen3' : '#43CD80',
+ \ 'seagreen4' : '#2E8B57',
+ \ 'seashell' : '#FFF5EE',
+ \ 'seashell1' : '#FFF5EE',
+ \ 'seashell2' : '#EEE5DE',
+ \ 'seashell3' : '#CDC5BF',
+ \ 'seashell4' : '#8B8682',
+ \ 'sienna' : '#A0522D',
+ \ 'sienna1' : '#FF8247',
+ \ 'sienna2' : '#EE7942',
+ \ 'sienna3' : '#CD6839',
+ \ 'sienna4' : '#8B4726',
+ \ 'sky blue' : '#87CEEB',
+ \ 'skyblue' : '#87CEEB',
+ \ 'skyblue1' : '#87CEFF',
+ \ 'skyblue2' : '#7EC0EE',
+ \ 'skyblue3' : '#6CA6CD',
+ \ 'skyblue4' : '#4A708B',
+ \ 'slate blue' : '#6A5ACD',
+ \ 'slate gray' : '#708090',
+ \ 'slate grey' : '#708090',
+ \ 'slateblue' : '#6A5ACD',
+ \ 'slateblue1' : '#836FFF',
+ \ 'slateblue2' : '#7A67EE',
+ \ 'slateblue3' : '#6959CD',
+ \ 'slateblue4' : '#473C8B',
+ \ 'slategray' : '#708090',
+ \ 'slategray1' : '#C6E2FF',
+ \ 'slategray2' : '#B9D3EE',
+ \ 'slategray3' : '#9FB6CD',
+ \ 'slategray4' : '#6C7B8B',
+ \ 'slategrey' : '#708090',
+ \ 'snow' : '#FFFAFA',
+ \ 'snow1' : '#FFFAFA',
+ \ 'snow2' : '#EEE9E9',
+ \ 'snow3' : '#CDC9C9',
+ \ 'snow4' : '#8B8989',
+ \ 'spring green' : '#00FF7F',
+ \ 'springgreen' : '#00FF7F',
+ \ 'springgreen1' : '#00FF7F',
+ \ 'springgreen2' : '#00EE76',
+ \ 'springgreen3' : '#00CD66',
+ \ 'springgreen4' : '#008B45',
+ \ 'steel blue' : '#4682B4',
+ \ 'steelblue' : '#4682B4',
+ \ 'steelblue1' : '#63B8FF',
+ \ 'steelblue2' : '#5CACEE',
+ \ 'steelblue3' : '#4F94CD',
+ \ 'steelblue4' : '#36648B',
+ \ 'tan' : '#D2B48C',
+ \ 'tan1' : '#FFA54F',
+ \ 'tan2' : '#EE9A49',
+ \ 'tan3' : '#CD853F',
+ \ 'tan4' : '#8B5A2B',
+ \ 'thistle' : '#D8BFD8',
+ \ 'thistle1' : '#FFE1FF',
+ \ 'thistle2' : '#EED2EE',
+ \ 'thistle3' : '#CDB5CD',
+ \ 'thistle4' : '#8B7B8B',
+ \ 'tomato' : '#FF6347',
+ \ 'tomato1' : '#FF6347',
+ \ 'tomato2' : '#EE5C42',
+ \ 'tomato3' : '#CD4F39',
+ \ 'tomato4' : '#8B3626',
+ \ 'turquoise' : '#40E0D0',
+ \ 'turquoise1' : '#00F5FF',
+ \ 'turquoise2' : '#00E5EE',
+ \ 'turquoise3' : '#00C5CD',
+ \ 'turquoise4' : '#00868B',
+ \ 'violet red' : '#D02090',
+ \ 'violet' : '#EE82EE',
+ \ 'violetred' : '#D02090',
+ \ 'violetred1' : '#FF3E96',
+ \ 'violetred2' : '#EE3A8C',
+ \ 'violetred3' : '#CD3278',
+ \ 'violetred4' : '#8B2252',
+ \ 'wheat' : '#F5DEB3',
+ \ 'wheat1' : '#FFE7BA',
+ \ 'wheat2' : '#EED8AE',
+ \ 'wheat3' : '#CDBA96',
+ \ 'wheat4' : '#8B7E66',
+ \ 'white smoke' : '#F5F5F5',
+ \ 'white' : '#FFFFFF',
+ \ 'whitesmoke' : '#F5F5F5',
+ \ 'yellow green' : '#9ACD32',
+ \ 'yellow' : '#FFFF00',
+ \ 'yellow1' : '#FFFF00',
+ \ 'yellow2' : '#EEEE00',
+ \ 'yellow3' : '#CDCD00',
+ \ 'yellow4' : '#8B8B00',
+ \ 'yellowgreen' : '#9ACD32',
+ \}
+
+ if has_key(l:color_list, l:color_name)
+ let l:hex_code = l:color_list[l:color_name]
+ endif
+
+ return l:hex_code
+endfunction
View
253 autoload/indent_guides.vim
@@ -0,0 +1,253 @@
+" Author: Nate Kane <nathanaelkane AT gmail DOT com>
+" Homepage: http://github.com/nathanaelkane/vim-indent-guides
+
+"
+" Toggles the indent guides on and off.
+"
+function! indent_guides#toggle()
+ call indent_guides#init_matches()
+
+ if empty(w:indent_guides_matches)
+ call indent_guides#enable()
+ else
+ call indent_guides#disable()
+ endif
+endfunction
+
+"
+" Called from autocmds, keeps indent guides enabled or disabled when entering
+" other buffers and windows.
+"
+function! indent_guides#process_autocmds()
+ if g:indent_guides_autocmds_enabled
+ call indent_guides#enable()
+ else
+ call indent_guides#disable()
+ end
+endfunction
+
+"
+" Enables the indent guides for the current buffer and any other buffer upon
+" entering it.
+"
+function! indent_guides#enable()
+ let g:indent_guides_autocmds_enabled = 1
+
+ call indent_guides#init_script_vars()
+ call indent_guides#highlight_colors()
+ call indent_guides#clear_matches()
+
+ " loop through each indent level and define a highlight pattern
+ " will automagically figure out whether to use tabs or spaces
+ for l:level in range(s:start_level, s:indent_levels)
+ let l:group = 'IndentGuides' . ((l:level % 2 == 0) ? 'Even' : 'Odd')
+ let l:column_start = (l:level - 1) * s:indent_size + 1
+ let l:soft_pattern = indent_guides#indent_highlight_pattern('\s', l:column_start, s:guide_size)
+ let l:hard_pattern = indent_guides#indent_highlight_pattern('\t', l:column_start, s:indent_size)
+
+ " define the higlight patterns and add to matches list
+ if g:indent_guides_space_guides
+ call add(w:indent_guides_matches, matchadd(l:group, l:soft_pattern))
+ end
+ call add(w:indent_guides_matches, matchadd(l:group, l:hard_pattern))
+ endfor
+endfunction
+
+"
+" Disables the indent guides for the current buffer and any other buffer upon
+" entering it.
+"
+function! indent_guides#disable()
+ let g:indent_guides_autocmds_enabled = 0
+ call indent_guides#clear_matches()
+endfunction
+
+"
+" Clear all highlight matches for the current window.
+"
+function! indent_guides#clear_matches()
+ call indent_guides#init_matches()
+ if !empty(w:indent_guides_matches)
+ let l:index = 0
+ for l:match_id in w:indent_guides_matches
+ call matchdelete(l:match_id)
+ call remove(w:indent_guides_matches, l:index)
+ let l:index += l:index
+ endfor
+ endif
+endfunction
+
+"
+" Automagically calculates and defines the indent highlight colors.
+"
+function! indent_guides#highlight_colors()
+ if s:auto_colors
+ if has('gui_running')
+ call indent_guides#gui_highlight_colors()
+ else
+ call indent_guides#basic_highlight_colors()
+ endif
+ endif
+endfunction
+
+"
+" Defines some basic indent highlight colors that work for Terminal Vim and
+" gVim when colors can't be automatically calculated.
+"
+function! indent_guides#basic_highlight_colors()
+ let l:cterm_colors = (&g:background == 'dark') ? ['darkgrey', 'black'] : ['lightgrey', 'white']
+ let l:gui_colors = (&g:background == 'dark') ? ['grey15', 'grey30'] : ['grey70', 'grey85']
+
+ exe 'hi IndentGuidesEven guibg=' . l:gui_colors[0] . ' ctermbg=' . l:cterm_colors[0]
+ exe 'hi IndentGuidesOdd guibg=' . l:gui_colors[1] . ' ctermbg=' . l:cterm_colors[1]
+endfunction
+
+"
+" Automagically calculates and defines the indent highlight colors for gui
+" vim.
+"
+function! indent_guides#gui_highlight_colors()
+ let l:hi_normal_guibg = ''
+
+ " capture the backgroud color from the normal highlight
+ if s:hi_normal =~ s:color_hex_bg_pat
+ " hex color code is being used, eg. '#FFFFFF'
+ let l:hi_normal_guibg = matchstr(s:hi_normal, s:color_hex_bg_pat)
+
+ elseif s:hi_normal =~ s:color_name_bg_pat
+ " color name is being used, eg. 'white'
+ let l:color_name = matchstr(s:hi_normal, s:color_name_bg_pat)
+ let l:hi_normal_guibg = color_helper#color_name_to_hex(l:color_name)
+
+ else
+ " background color could not be detected, default to basic colors
+ call indent_guides#basic_highlight_colors()
+ endif
+
+ if l:hi_normal_guibg =~ s:color_hex_pat
+ " calculate the highlight background colors
+ let l:hi_odd_bg = indent_guides#lighten_or_darken_color(l:hi_normal_guibg)
+ let l:hi_even_bg = indent_guides#lighten_or_darken_color(l:hi_odd_bg)
+
+ " define the new highlights
+ exe 'hi IndentGuidesOdd guibg=' . l:hi_odd_bg
+ exe 'hi IndentGuidesEven guibg=' . l:hi_even_bg
+ end
+endfunction
+
+"
+" Takes a color and darkens or lightens it depending on whether a dark or light
+" colorscheme is being used.
+"
+function! indent_guides#lighten_or_darken_color(color)
+ let l:new_color = ''
+
+ if (&g:background == 'dark')
+ let l:new_color = color_helper#hex_color_lighten(a:color, s:change_percent)
+ else
+ let l:new_color = color_helper#hex_color_darken (a:color, s:change_percent)
+ endif
+
+ return l:new_color
+endfunction
+
+"
+" Define default highlights.
+"
+function! indent_guides#define_default_highlights()
+ hi default clear IndentGuidesOdd
+ hi default clear IndentGuidesEven
+endfunction
+
+"
+" Init the w:indent_guides_matches variable.
+"
+function! indent_guides#init_matches()
+ let w:indent_guides_matches = exists('w:indent_guides_matches') ? w:indent_guides_matches : []
+endfunction
+
+"
+" We need to initialize these vars every time a buffer is entered while the
+" plugin is enabled.
+"
+function! indent_guides#init_script_vars()
+ let s:indent_size = &l:shiftwidth
+ let s:guide_size = indent_guides#calculate_guide_size()
+ let s:hi_normal = indent_guides#capture_highlight('Normal')
+
+ " remove 'font=<value>' from the s:hi_normal string (only seems to happen on Vim startup in Windows)
+ let s:hi_normal = substitute(s:hi_normal, ' font=[A-Za-z0-9:]\+', "", "")
+
+ " shortcuts to the global variables - this makes the code easier to read
+ let s:debug = g:indent_guides_debug
+ let s:indent_levels = g:indent_guides_indent_levels
+ let s:auto_colors = g:indent_guides_auto_colors
+ let s:change_percent = g:indent_guides_color_change_percent / str2float("100.0")
+ let s:color_hex_pat = g:indent_guides_color_hex_pattern
+ let s:color_hex_bg_pat = g:indent_guides_color_hex_guibg_pattern
+ let s:color_name_bg_pat = g:indent_guides_color_name_guibg_pattern
+ let s:start_level = g:indent_guides_start_level
+
+ if s:debug
+ echo 's:indent_size = ' . s:indent_size
+ echo 's:guide_size = ' . s:guide_size
+ echo 's:hi_normal = ' . s:hi_normal
+ echo 's:indent_levels = ' . s:indent_levels
+ echo 's:auto_colors = ' . s:auto_colors
+ echo 's:change_percent = ' . string(s:change_percent)
+ echo 's:color_hex_pat = ' . s:color_hex_pat
+ echo 's:color_hex_bg_pat = ' . s:color_hex_bg_pat
+ echo 's:color_name_bg_pat = ' . s:color_name_bg_pat
+ echo 's:start_level = ' . s:start_level
+ endif
+endfunction
+
+"
+" Calculate the indent guide size. Ensures the guide size is less than or
+" equal to the actual indent size, otherwise some weird things can occur.
+"
+" NOTE: Currently, this only works when soft-tabs are being used.
+"
+function! indent_guides#calculate_guide_size()
+ let l:guide_size = g:indent_guides_guide_size
+
+ if l:guide_size == 0 || l:guide_size > s:indent_size
+ let l:guide_size = s:indent_size
+ endif
+
+ return l:guide_size
+endfunction
+
+"
+" Captures and returns the output of highlight group definitions.
+"
+" Example: indent_guides#capture_highlight('normal')
+" Returns: 'Normal xxx guifg=#323232 guibg=#ffffff
+"
+function! indent_guides#capture_highlight(group_name)
+ redir => l:output
+ exe "silent hi " . a:group_name
+ redir END
+
+ let l:output = substitute(l:output, "\n", "", "")
+ return l:output
+endfunction
+
+"
+" Returns a regex pattern for highlighting an indent level.
+"
+" Example: indent_guides#indent_highlight_pattern(' ', 1, 4)
+" Returns: /^ *\%1v\zs *\%5v\ze/
+"
+" Example: indent_guides#indent_highlight_pattern('\s', 5, 2)
+" Returns: /^\s*\%5v\zs\s*\%7v\ze/
+"
+" Example: indent_guides#indent_highlight_pattern('\t', 9, 2)
+" Returns: /^\t*\%9v\zs\t*\%11v\ze/
+"
+function! indent_guides#indent_highlight_pattern(indent_pattern, column_start, indent_size)
+ let l:pattern = '^' . a:indent_pattern . '*\%' . a:column_start . 'v\zs'
+ let l:pattern .= a:indent_pattern . '*\%' . (a:column_start + a:indent_size) . 'v'
+ let l:pattern .= '\ze'
+ return l:pattern
+endfunction
View
289 doc/indent_guides.txt
@@ -0,0 +1,289 @@
+*indent_guides.txt* A plugin for visually displaying indent levels in Vim.
+
+ *indent-guides*
+ ____ __ __ ______ _ __
+ / _/____ ____/ /___ ____ / /_ / ____/__ __(_)____/ /___ _____
+ / / / __ \/ __ // _ \/ __ \/ __/ / / __ / / / / // __ // _ \/ ___/
+ _/ / / / / / /_/ // __/ / / / /_ / /_/ // /_/ / // /_/ // __(__ )
+ /___//_/ /_/\__,_/ \___/_/ /_/\__/ \____/ \__,_/_/ \__,_/ \___/____/
+
+
+Author: Nate Kane <nathanaelkane AT gmail DOT com>
+Version: 1.5
+Last Change: 13 Mar 2011
+
+==============================================================================
+CONTENTS *indent-guides-contents*
+
+ 1. Introduction.......................... |indent-guides-introduction|
+ 2. Commands.............................. |indent-guides-commands|
+ 3. Options............................... |indent-guides-options|
+ 4. Mappings.............................. |indent-guides-mappings|
+ 5. Terminal Vim.......................... |indent-guides-terminal-vim|
+ 6. About................................. |indent-guides-about|
+ 7. Changelog............................. |indent-guides-changelog|
+ 8. License............................... |indent-guides-license|
+
+==============================================================================
+1. INTRODUCTION *indent-guides-introduction*
+
+Indent Guides is a plugin for visually displaying indent levels in Vim.
+
+This plugin should work with gVim out of the box, no configuration needed.
+
+Features:~
+ * Can detect both tab and space indent styles.
+ * Automatically inspects your colorscheme and picks appropriate colors (gVim
+ only).
+ * Will highlight indent levels with alternating colors.
+ * Full support for gVim and basic support for Terminal Vim.
+ * Seems to work on Windows gVim 7.3 (haven't done any extensive tests
+ though).
+ * Customizable size for indent guides, eg. skinny guides (soft-tabs only).
+ * Customizable start indent level.
+ * Highlight support for files with a mixture of tab and space indent styles.
+
+==============================================================================
+2. COMMANDS *indent-guides-commands*
+
+------------------------------------------------------------------------------
+:IndentGuidesToggle *:IndentGuidesToggle*
+ Toggles the indent guides on and off.
+
+------------------------------------------------------------------------------
+:IndentGuidesEnable *:IndentGuidesEnable*
+ Enables the indent guides for the current buffer and any other buffer upon
+ entering it.
+
+------------------------------------------------------------------------------
+:IndentGuidesDisable *:IndentGuidesDisable*
+ Disables the indent guides for the current buffer and any other buffer upon
+ entering it.
+
+==============================================================================
+3. OPTIONS *indent-guides-options*
+
+------------------------------------------------------------------------------
+ *'indent_guides_indent_levels'*
+Use this option to control how many indent levels to display guides for.
+
+Default: 30. Values: integer.
+>
+ let g:indent_guides_indent_levels = 30
+<
+
+------------------------------------------------------------------------------
+ *'indent_guides_auto_colors'*
+Use this option to control whether or not the plugin automatically calculates
+the highlight colors. Will use the current colorscheme's background color as a
+base color.
+
+Default: 1. Values: 0 or 1.
+>
+ let g:indent_guides_auto_colors = 1
+<
+
+If you set this option to 0, be sure to manually define some highlight colors
+in an autocmd.
+>
+ let g:indent_guides_auto_colors = 0
+ autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd guibg=red ctermbg=3
+ autocmd VimEnter,Colorscheme * :hi IndentGuidesEven guibg=green ctermbg=4
+<
+
+Alternatively you can add the following lines to your colorscheme file.
+>
+ hi IndentGuidesOdd guibg=red ctermbg=3
+ hi IndentGuidesEven guibg=green ctermbg=4
+<
+
+------------------------------------------------------------------------------
+ *'indent_guides_color_change_percent'*
+Use this option to control the percent at which the highlight colors will be
+lightened or darkened.
+
+Default: 10 (10%). Values: between 0 and 100.
+>
+ let g:indent_guides_color_change_percent = 10
+<
+
+------------------------------------------------------------------------------
+ *'indent_guides_guide_size'*
+Use this option to customize the size of the indent guide. By default the
+value is set to 0, which will set the guide size to be the same as the
+|shiftwidth|. Setting this value to be larger than the |shiftwidth| is essentially
+the same as setting it to 0.
+
+A common use of this setting is to create skinny indent guides, which look
+great with a |shiftwidth| of 4 or more.
+
+NOTE: This option only works for soft-tabs (spaces) and not hard-tabs.
+
+Default: 0. Values: between 0 and |shiftwidth|.
+>
+ let g:indent_guides_guide_size = 1
+<
+
+------------------------------------------------------------------------------
+ *'indent_guides_start_level'*
+Use this option to control which indent level to start showing guides from.
+
+Default: 1. Values: between 1 and g:|indent_guides_indent_levels|.
+>
+ let g:indent_guides_start_level = 2
+<
+
+------------------------------------------------------------------------------
+ *'indent_guides_space_guides'*
+Use this option to control whether the plugin considers spaces as indention.
+
+Default: 1. Values: 0 or 1.
+>
+ let g:indent_guides_space_guides = 0
+<
+------------------------------------------------------------------------------
+ *'indent_guides_enable_on_vim_startup'*
+Use this option to control whether the plugin is enabled on Vim startup.
+
+Default: 0. Values: 0 or 1.
+>
+ let g:indent_guides_enable_on_vim_startup = 0
+<
+
+==============================================================================
+4. MAPPINGS *indent-guides-mappings*
+
+The default mapping for toggling indent guides is <Leader>ig. You can easily
+map it to other keys. For example:
+>
+ :nmap <Leader>ig :IndentGuidesToggle<CR>
+<
+
+You can also map some other commands that are not mapped by default. For
+example:
+>
+ :nmap <Leader>ie :IndentGuidesEnable<CR>
+ :nmap <Leader>id :IndentGuidesDisable<CR>
+<
+
+==============================================================================
+5. TERMINAL VIM *indent-guides-terminal-vim*
+
+At the moment Terminal Vim only has basic support. This means is that colors
+won't be automatically calculated based on your colorscheme. Instead, some
+preset colors are used depending on whether `background` is set to `dark` or
+`light`.
+
+When `set background=dark` is used, the following highlight colors will be
+defined:
+>
+ hi IndentGuidesOdd ctermbg=black
+ hi IndentGuidesEven ctermbg=darkgrey
+<
+
+Alternatively, when `set background=light` is used, the following highlight
+colors will be defined:
+>
+ hi IndentGuidesOdd ctermbg=white
+ hi IndentGuidesEven ctermbg=lightgrey
+<
+
+If for some reason it's incorrectly defining light highlight colors instead of
+dark ones or vice versa, the first thing you should check is that the
+`background` value is being set correctly for your colorscheme. Sometimes it's
+best to manually set the `background` value in your `.vimrc`, for example:
+>
+ colorscheme desert256
+ set background=dark
+<
+
+Alternatively you can manually setup the highlight colors yourself, see
+|indent_guides_auto_colors| for an example.
+
+==============================================================================
+6. ABOUT *indent-guides-about*
+
+Why did I build this plugin?~
+ * I believe indent guides make nested code easier to read and understand.
+ * Other editors have them and it's high time Vim did.
+ * None of the existing indent guide plugins on the market suited my needs.
+ * I wanted to learn me some VimL.
+
+Links:~
+ * Github: https://github.com/nathanaelkane/vim-indent-guides
+ * Bugs & Issues: https://github.com/nathanaelkane/vim-indent-guides/issues
+
+Credits:~
+ * Matt Wozniski (godlygeek) for letting me use the list of color names and
+ hex codes from his CSApprox plugin.
+
+Contact:~
+ * Twitter: @nathanaelkane
+ * Email: <nathanaelkane AT gmail DOT com>
+ * IRC: nate- on Freenode (I usually idle in the #vim channel)
+
+Bug reports, feedback, suggestions etc are welcomed.
+
+==============================================================================
+7. CHANGELOG *indent-guides-changelog*
+
+1.5~
+ * Added highlight support for files with a mixture of tab and space indent
+ styles (thanks graywh).
+ * Added -bar to all the :commands so they can chain with other :commands
+ (thanks to graywh).
+ * No longer overriding pre-defined custom highlight colors (thanks graywh).
+ * Using str2float to work around a float bug in some versions of Vim 7.2
+ (thanks voidus).
+
+1.4~
+ * Added the new plugin option g:|indent_guides_enable_on_vim_startup|.
+ * Improved Windows support.
+
+1.3~
+ * Changed the default value of g:|indent_guides_color_change_percent| to 10.
+ * Added support for gVim themes that don't specify a `hi Normal guibg`
+ color.
+
+1.2~
+ * Customizable size for indent guides, eg. skinny guides (soft-tabs only).
+ * Customizable start indent level.
+ * Refactored some internal logic.
+
+1.1~
+ * Added basic support for Terminal Vim. See |indent-guides-terminal-vim| for
+ more information.
+ * Cut down on rgb to hex color conversions by adding a big dictionary of
+ color names and hex codes.
+ * Various bug fixes.
+
+1.0~
+ * First public version.
+
+==============================================================================
+8. LICENSE *indent-guides-license*
+
+The MIT Licence
+http://www.opensource.org/licenses/mit-license.php
+
+Copyright (c) 2010-2011 Nate Kane
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+vim:tw=78:ts=2:ft=help:norl:
View
21 doc/tags
@@ -42,6 +42,13 @@
'Tlist_Use_SingleClick' taglist.txt /*'Tlist_Use_SingleClick'*
'Tlist_WinHeight' taglist.txt /*'Tlist_WinHeight'*
'Tlist_WinWidth' taglist.txt /*'Tlist_WinWidth'*
+'indent_guides_auto_colors' indent_guides.txt /*'indent_guides_auto_colors'*
+'indent_guides_color_change_percent' indent_guides.txt /*'indent_guides_color_change_percent'*
+'indent_guides_enable_on_vim_startup' indent_guides.txt /*'indent_guides_enable_on_vim_startup'*
+'indent_guides_guide_size' indent_guides.txt /*'indent_guides_guide_size'*
+'indent_guides_indent_levels' indent_guides.txt /*'indent_guides_indent_levels'*
+'indent_guides_space_guides' indent_guides.txt /*'indent_guides_space_guides'*
+'indent_guides_start_level' indent_guides.txt /*'indent_guides_start_level'*
'loaded_nerd_tree' NERD_tree.txt /*'loaded_nerd_tree'*
'snippets' snipMate.txt /*'snippets'*
.snippet snipMate.txt /*.snippet*
@@ -62,6 +69,9 @@
:IPOW visincr.txt /*:IPOW*
:IR visincr.txt /*:IR*
:IX visincr.txt /*:IX*
+:IndentGuidesDisable indent_guides.txt /*:IndentGuidesDisable*
+:IndentGuidesEnable indent_guides.txt /*:IndentGuidesEnable*
+:IndentGuidesToggle indent_guides.txt /*:IndentGuidesToggle*
:Mark mark.txt /*:Mark*
:MatchDebug matchit.txt /*:MatchDebug*
:NERDTree NERD_tree.txt /*:NERDTree*
@@ -699,6 +709,17 @@ http pi_netrw.txt /*http*
i_CTRL-G_S surround.txt /*i_CTRL-G_S*
i_CTRL-G_s surround.txt /*i_CTRL-G_s*
i_CTRL-R_<Tab> snipMate.txt /*i_CTRL-R_<Tab>*
+indent-guides indent_guides.txt /*indent-guides*
+indent-guides-about indent_guides.txt /*indent-guides-about*
+indent-guides-changelog indent_guides.txt /*indent-guides-changelog*
+indent-guides-commands indent_guides.txt /*indent-guides-commands*
+indent-guides-contents indent_guides.txt /*indent-guides-contents*
+indent-guides-introduction indent_guides.txt /*indent-guides-introduction*
+indent-guides-license indent_guides.txt /*indent-guides-license*
+indent-guides-mappings indent_guides.txt /*indent-guides-mappings*
+indent-guides-options indent_guides.txt /*indent-guides-options*
+indent-guides-terminal-vim indent_guides.txt /*indent-guides-terminal-vim*
+indent_guides.txt indent_guides.txt /*indent_guides.txt*
java-parser-history javacomplete.txt /*java-parser-history*
javacomplete-ast javacomplete.txt /*javacomplete-ast*
javacomplete-commands javacomplete.txt /*javacomplete-commands*
View
69 plugin/indent_guides.vim
@@ -0,0 +1,69 @@
+" Author: Nate Kane <nathanaelkane AT gmail DOT com>
+" Homepage: http://github.com/nathanaelkane/vim-indent-guides
+
+if exists('g:loaded_indent_guides') || &cp
+ finish
+endif
+let g:loaded_indent_guides = 1
+call indent_guides#define_default_highlights()
+
+function! s:IndentGuidesToggle()
+ call indent_guides#toggle()
+endfunction
+
+function! s:IndentGuidesEnable()
+ call indent_guides#enable()
+endfunction
+
+function! s:IndentGuidesDisable()
+ call indent_guides#disable()
+endfunction
+
+" Commands
+command! -bar IndentGuidesToggle call s:IndentGuidesToggle()
+command! -bar IndentGuidesEnable call s:IndentGuidesEnable()
+command! -bar IndentGuidesDisable call s:IndentGuidesDisable()
+
+"
+" Initializes a given variable to a given value. The variable is only
+" initialized if it does not exist prior.
+"
+function s:InitVariable(var, value)
+ if !exists(a:var)
+ if type(a:value) == type("")
+ exec 'let ' . a:var . ' = ' . "'" . a:value . "'"
+ else
+ exec 'let ' . a:var . ' = ' . a:value
+ endif
+ endif
+endfunction
+
+" Fixed global variables
+let g:indent_guides_autocmds_enabled = 0
+let g:indent_guides_color_hex_pattern = '#[0-9A-Fa-f]\{6\}'
+let g:indent_guides_color_hex_guibg_pattern = 'guibg=\zs' . g:indent_guides_color_hex_pattern . '\ze'
+let g:indent_guides_color_name_guibg_pattern = "guibg='\\?\\zs[0-9A-Za-z ]\\+\\ze'\\?"
+
+" Configurable global variables
+call s:InitVariable('g:indent_guides_indent_levels', 30)
+call s:InitVariable('g:indent_guides_auto_colors', 1 )
+call s:InitVariable('g:indent_guides_color_change_percent', 10) " ie. 10%
+call s:InitVariable('g:indent_guides_guide_size', 0 )
+call s:InitVariable('g:indent_guides_start_level', 1 )
+call s:InitVariable('g:indent_guides_enable_on_vim_startup', 0 )
+call s:InitVariable('g:indent_guides_debug', 0 )
+call s:InitVariable('g:indent_guides_space_guides', 1 )
+
+" Default mapping
+nmap <Leader>ig :IndentGuidesToggle<CR>
+
+" Auto commands
+augroup indent_guides
+ autocmd!
+
+ if g:indent_guides_enable_on_vim_startup
+ autocmd VimEnter * :IndentGuidesEnable
+ endif
+
+ autocmd BufEnter,WinEnter * call indent_guides#process_autocmds()
+augroup END
View
1  vimrc
@@ -592,6 +592,7 @@ nmap cd :silent lcd %:p:h<CR>:echo expand('%:p:h')<CR>
nmap gb :setl fenc=gb18030<CR>
nmap d<CR> :%s/\r//eg<CR>``
nmap cac :call Lilydjwg_changeColor()<CR>
+nmap gl :IndentGuidesToggle<CR>
" imap [[[2
inoremap <S-CR> <CR>
inoremap <M-c> <C-R>=Lilydjwg_colorpicker()<CR>
Please sign in to comment.
Something went wrong with that request. Please try again.