Skip to content

Instantly share code, notes, and snippets.

@ryancdotorg
Created August 24, 2025 23:24
Show Gist options
  • Save ryancdotorg/3a5159bac6a43fa237346975e721f140 to your computer and use it in GitHub Desktop.
Save ryancdotorg/3a5159bac6a43fa237346975e721f140 to your computer and use it in GitHub Desktop.
let s:colornames = {'aliceblue':'f0f8ff','antiquewhite':'faebd7','aqua':'00ffff','aquamarine':
\'7fffd4','azure':'f0ffff','beige':'f5f5dc','bisque':'ffe4c4','black':'000000','blanchedalmond':
\'ffebcd','blue':'0000ff','blueviolet':'8a2be2','brown':'a52a2a','burlywood':'deb887','cadetblue':
\'5f9ea0','chartreuse':'7fff00','chocolate':'d2691e','coral':'ff7f50','cornflowerblue':'6495ed',
\'cornsilk':'fff8dc','crimson':'dc143c','cyan':'00ffff','darkblue':'00008b','darkcyan':'008b8b',
\'darkgoldenrod':'b8860b','darkgray':'a9a9a9','darkgreen':'006400','darkgrey':'a9a9a9','darkkhaki':
\'bdb76b','darkmagenta':'8b008b','darkolivegreen':'556b2f','darkorange':'ff8c00','darkorchid':
\'9932cc','darkred':'8b0000','darksalmon':'e9967a','darkseagreen':'8fbc8f','darkslateblue':'483d8b'
\,'darkslategray':'2f4f4f','darkslategrey':'2f4f4f','darkturquoise':'00ced1','darkviolet':'9400d3',
\'deeppink':'ff1493','deepskyblue':'00bfff','dimgray':'696969','dimgrey':'696969','dodgerblue':
\'1e90ff','firebrick':'b22222','floralwhite':'fffaf0','forestgreen':'228b22','fuchsia':'ff00ff',
\'gainsboro':'dcdcdc','ghostwhite':'f8f8ff','gold':'ffd700','goldenrod':'daa520','gray':'808080',
\'green':'008000','greenyellow':'adff2f','grey':'808080','honeydew':'f0fff0','hotpink':'ff69b4',
\'indianred':'cd5c5c','indigo':'4b0082','ivory':'fffff0','khaki':'f0e68c','lavender':'e6e6fa',
\'lavenderblush':'fff0f5','lawngreen':'7cfc00','lemonchiffon':'fffacd','lightblue':'add8e6',
\'lightcoral':'f08080','lightcyan':'e0ffff','lightgoldenrodyellow':'fafad2','lightgray':'d3d3d3',
\'lightgreen':'90ee90','lightgrey':'d3d3d3','lightpink':'ffb6c1','lightsalmon':'ffa07a',
\'lightseagreen':'20b2aa','lightskyblue':'87cefa','lightslategray':'778899','lightslategrey':
\'778899','lightsteelblue':'b0c4de','lightyellow':'ffffe0','lime':'00ff00','limegreen':'32cd32',
\'linen':'faf0e6','magenta':'ff00ff','maroon':'800000','mediumaquamarine':'66cdaa','mediumblue':
\'0000cd','mediumorchid':'ba55d3','mediumpurple':'9370db','mediumseagreen':'3cb371',
\'mediumslateblue':'7b68ee','mediumspringgreen':'00fa9a','mediumturquoise':'48d1cc',
\'mediumvioletred':'c71585','midnightblue':'191970','mintcream':'f5fffa','mistyrose':'ffe4e1',
\'moccasin':'ffe4b5','navajowhite':'ffdead','navy':'000080','oldlace':'fdf5e6','olive':'808000',
\'olivedrab':'6b8e23','orange':'ffa500','orangered':'ff4500','orchid':'da70d6','palegoldenrod':
\'eee8aa','palegreen':'98fb98','paleturquoise':'afeeee','palevioletred':'db7093','papayawhip':
\'ffefd5','peachpuff':'ffdab9','peru':'cd853f','pink':'ffc0cb','plum':'dda0dd','powderblue':
\'b0e0e6','purple':'800080','red':'ff0000','rosybrown':'bc8f8f','royalblue':'4169e1','saddlebrown':
\'8b4513','salmon':'fa8072','sandybrown':'f4a460','seagreen':'2e8b57','seashell':'fff5ee','sienna':
\'a0522d','silver':'c0c0c0','skyblue':'87ceeb','slateblue':'6a5acd','slategray':'708090',
\'slategrey':'708090','snow':'fffafa','springgreen':'00ff7f','steelblue':'4682b4','tan':'d2b48c',
\'teal':'008080','thistle':'d8bfd8','tomato':'ff6347','turquoise':'40e0d0','violet':'ee82ee',
\'wheat':'f5deb3','white':'ffffff','whitesmoke':'f5f5f5','yellow':'ffff00','yellowgreen':'9acd32',
\'navyblue':'000080','lightslateblue':'8470ff','lightgoldenrod':'eedd82','violetred':'d02090',
\'snow1':'fffafa','snow2':'eee9e9','snow3':'cdc9c9','snow4':'8b8989','seashell1':'fff5ee',
\'seashell2':'eee5de','seashell3':'cdc5bf','seashell4':'8b8682','antiquewhite1':'ffefdb',
\'antiquewhite2':'eedfcc','antiquewhite3':'cdc0b0','antiquewhite4':'8b8378','bisque1':'ffe4c4',
\'bisque2':'eed5b7','bisque3':'cdb79e','bisque4':'8b7d6b','peachpuff1':'ffdab9','peachpuff2':
\'eecbad','peachpuff3':'cdaf95','peachpuff4':'8b7765','navajowhite1':'ffdead','navajowhite2':
\'eecfa1','navajowhite3':'cdb38b','navajowhite4':'8b795e','lemonchiffon1':'fffacd','lemonchiffon2':
\'eee9bf','lemonchiffon3':'cdc9a5','lemonchiffon4':'8b8970','cornsilk1':'fff8dc','cornsilk2':
\'eee8cd','cornsilk3':'cdc8b1','cornsilk4':'8b8878','ivory1':'fffff0','ivory2':'eeeee0','ivory3':
\'cdcdc1','ivory4':'8b8b83','honeydew1':'f0fff0','honeydew2':'e0eee0','honeydew3':'c1cdc1',
\'honeydew4':'838b83','lavenderblush1':'fff0f5','lavenderblush2':'eee0e5','lavenderblush3':'cdc1c5'
\,'lavenderblush4':'8b8386','mistyrose1':'ffe4e1','mistyrose2':'eed5d2','mistyrose3':'cdb7b5',
\'mistyrose4':'8b7d7b','azure1':'f0ffff','azure2':'e0eeee','azure3':'c1cdcd','azure4':'838b8b',
\'slateblue1':'836fff','slateblue2':'7a67ee','slateblue3':'6959cd','slateblue4':'473c8b',
\'royalblue1':'4876ff','royalblue2':'436eee','royalblue3':'3a5fcd','royalblue4':'27408b','blue1':
\'0000ff','blue2':'0000ee','blue3':'0000cd','blue4':'00008b','dodgerblue1':'1e90ff','dodgerblue2':
\'1c86ee','dodgerblue3':'1874cd','dodgerblue4':'104e8b','steelblue1':'63b8ff','steelblue2':'5cacee'
\,'steelblue3':'4f94cd','steelblue4':'36648b','deepskyblue1':'00bfff','deepskyblue2':'00b2ee',
\'deepskyblue3':'009acd','deepskyblue4':'00688b','skyblue1':'87ceff','skyblue2':'7ec0ee','skyblue3'
\:'6ca6cd','skyblue4':'4a708b','lightskyblue1':'b0e2ff','lightskyblue2':'a4d3ee','lightskyblue3':
\'8db6cd','lightskyblue4':'607b8b','slategray1':'c6e2ff','slategray2':'b9d3ee','slategray3':
\'9fb6cd','slategray4':'6c7b8b','lightsteelblue1':'cae1ff','lightsteelblue2':'bcd2ee',
\'lightsteelblue3':'a2b5cd','lightsteelblue4':'6e7b8b','lightblue1':'bfefff','lightblue2':'b2dfee',
\'lightblue3':'9ac0cd','lightblue4':'68838b','lightcyan1':'e0ffff','lightcyan2':'d1eeee',
\'lightcyan3':'b4cdcd','lightcyan4':'7a8b8b','paleturquoise1':'bbffff','paleturquoise2':'aeeeee',
\'paleturquoise3':'96cdcd','paleturquoise4':'668b8b','cadetblue1':'98f5ff','cadetblue2':'8ee5ee',
\'cadetblue3':'7ac5cd','cadetblue4':'53868b','turquoise1':'00f5ff','turquoise2':'00e5ee',
\'turquoise3':'00c5cd','turquoise4':'00868b','cyan1':'00ffff','cyan2':'00eeee','cyan3':'00cdcd',
\'cyan4':'008b8b','darkslategray1':'97ffff','darkslategray2':'8deeee','darkslategray3':'79cdcd',
\'darkslategray4':'528b8b','aquamarine1':'7fffd4','aquamarine2':'76eec6','aquamarine3':'66cdaa',
\'aquamarine4':'458b74','darkseagreen1':'c1ffc1','darkseagreen2':'b4eeb4','darkseagreen3':'9bcd9b',
\'darkseagreen4':'698b69','seagreen1':'54ff9f','seagreen2':'4eee94','seagreen3':'43cd80',
\'seagreen4':'2e8b57','palegreen1':'9aff9a','palegreen2':'90ee90','palegreen3':'7ccd7c',
\'palegreen4':'548b54','springgreen1':'00ff7f','springgreen2':'00ee76','springgreen3':'00cd66',
\'springgreen4':'008b45','green1':'00ff00','green2':'00ee00','green3':'00cd00','green4':'008b00',
\'chartreuse1':'7fff00','chartreuse2':'76ee00','chartreuse3':'66cd00','chartreuse4':'458b00',
\'olivedrab1':'c0ff3e','olivedrab2':'b3ee3a','olivedrab3':'9acd32','olivedrab4':'698b22',
\'darkolivegreen1':'caff70','darkolivegreen2':'bcee68','darkolivegreen3':'a2cd5a','darkolivegreen4'
\:'6e8b3d','khaki1':'fff68f','khaki2':'eee685','khaki3':'cdc673','khaki4':'8b864e',
\'lightgoldenrod1':'ffec8b','lightgoldenrod2':'eedc82','lightgoldenrod3':'cdbe70','lightgoldenrod4'
\:'8b814c','lightyellow1':'ffffe0','lightyellow2':'eeeed1','lightyellow3':'cdcdb4','lightyellow4':
\'8b8b7a','yellow1':'ffff00','yellow2':'eeee00','yellow3':'cdcd00','yellow4':'8b8b00','gold1':
\'ffd700','gold2':'eec900','gold3':'cdad00','gold4':'8b7500','goldenrod1':'ffc125','goldenrod2':
\'eeb422','goldenrod3':'cd9b1d','goldenrod4':'8b6914','darkgoldenrod1':'ffb90f','darkgoldenrod2':
\'eead0e','darkgoldenrod3':'cd950c','darkgoldenrod4':'8b6508','rosybrown1':'ffc1c1','rosybrown2':
\'eeb4b4','rosybrown3':'cd9b9b','rosybrown4':'8b6969','indianred1':'ff6a6a','indianred2':'ee6363',
\'indianred3':'cd5555','indianred4':'8b3a3a','sienna1':'ff8247','sienna2':'ee7942','sienna3':
\'cd6839','sienna4':'8b4726','burlywood1':'ffd39b','burlywood2':'eec591','burlywood3':'cdaa7d',
\'burlywood4':'8b7355','wheat1':'ffe7ba','wheat2':'eed8ae','wheat3':'cdba96','wheat4':'8b7e66',
\'tan1':'ffa54f','tan2':'ee9a49','tan3':'cd853f','tan4':'8b5a2b','chocolate1':'ff7f24','chocolate2'
\:'ee7621','chocolate3':'cd661d','chocolate4':'8b4513','firebrick1':'ff3030','firebrick2':'ee2c2c',
\'firebrick3':'cd2626','firebrick4':'8b1a1a','brown1':'ff4040','brown2':'ee3b3b','brown3':'cd3333',
\'brown4':'8b2323','salmon1':'ff8c69','salmon2':'ee8262','salmon3':'cd7054','salmon4':'8b4c39',
\'lightsalmon1':'ffa07a','lightsalmon2':'ee9572','lightsalmon3':'cd8162','lightsalmon4':'8b5742',
\'orange1':'ffa500','orange2':'ee9a00','orange3':'cd8500','orange4':'8b5a00','darkorange1':'ff7f00'
\,'darkorange2':'ee7600','darkorange3':'cd6600','darkorange4':'8b4500','coral1':'ff7256','coral2':
\'ee6a50','coral3':'cd5b45','coral4':'8b3e2f','tomato1':'ff6347','tomato2':'ee5c42','tomato3':
\'cd4f39','tomato4':'8b3626','orangered1':'ff4500','orangered2':'ee4000','orangered3':'cd3700',
\'orangered4':'8b2500','red1':'ff0000','red2':'ee0000','red3':'cd0000','red4':'8b0000','debianred':
\'d70751','deeppink1':'ff1493','deeppink2':'ee1289','deeppink3':'cd1076','deeppink4':'8b0a50',
\'hotpink1':'ff6eb4','hotpink2':'ee6aa7','hotpink3':'cd6090','hotpink4':'8b3a62','pink1':'ffb5c5',
\'pink2':'eea9b8','pink3':'cd919e','pink4':'8b636c','lightpink1':'ffaeb9','lightpink2':'eea2ad',
\'lightpink3':'cd8c95','lightpink4':'8b5f65','palevioletred1':'ff82ab','palevioletred2':'ee799f',
\'palevioletred3':'cd6889','palevioletred4':'8b475d','maroon1':'ff34b3','maroon2':'ee30a7',
\'maroon3':'cd2990','maroon4':'8b1c62','violetred1':'ff3e96','violetred2':'ee3a8c','violetred3':
\'cd3278','violetred4':'8b2252','magenta1':'ff00ff','magenta2':'ee00ee','magenta3':'cd00cd',
\'magenta4':'8b008b','orchid1':'ff83fa','orchid2':'ee7ae9','orchid3':'cd69c9','orchid4':'8b4789',
\'plum1':'ffbbff','plum2':'eeaeee','plum3':'cd96cd','plum4':'8b668b','mediumorchid1':'e066ff',
\'mediumorchid2':'d15fee','mediumorchid3':'b452cd','mediumorchid4':'7a378b','darkorchid1':'bf3eff',
\'darkorchid2':'b23aee','darkorchid3':'9a32cd','darkorchid4':'68228b','purple1':'9b30ff','purple2':
\'912cee','purple3':'7d26cd','purple4':'551a8b','mediumpurple1':'ab82ff','mediumpurple2':'9f79ee',
\'mediumpurple3':'8968cd','mediumpurple4':'5d478b','thistle1':'ffe1ff','thistle2':'eed2ee',
\'thistle3':'cdb5cd','thistle4':'8b7b8b','gray0':'000000','grey0':'000000','gray1':'030303','grey1'
\:'030303','gray2':'050505','grey2':'050505','gray3':'080808','grey3':'080808','gray4':'0a0a0a',
\'grey4':'0a0a0a','gray5':'0d0d0d','grey5':'0d0d0d','gray6':'0f0f0f','grey6':'0f0f0f','gray7':
\'121212','grey7':'121212','gray8':'141414','grey8':'141414','gray9':'171717','grey9':'171717',
\'gray10':'1a1a1a','grey10':'1a1a1a','gray11':'1c1c1c','grey11':'1c1c1c','gray12':'1f1f1f','grey12'
\:'1f1f1f','gray13':'212121','grey13':'212121','gray14':'242424','grey14':'242424','gray15':
\'262626','grey15':'262626','gray16':'292929','grey16':'292929','gray17':'2b2b2b','grey17':'2b2b2b'
\,'gray18':'2e2e2e','grey18':'2e2e2e','gray19':'303030','grey19':'303030','gray20':'333333',
\'grey20':'333333','gray21':'363636','grey21':'363636','gray22':'383838','grey22':'383838','gray23'
\:'3b3b3b','grey23':'3b3b3b','gray24':'3d3d3d','grey24':'3d3d3d','gray25':'404040','grey25':
\'404040','gray26':'424242','grey26':'424242','gray27':'454545','grey27':'454545','gray28':'474747'
\,'grey28':'474747','gray29':'4a4a4a','grey29':'4a4a4a','gray30':'4d4d4d','grey30':'4d4d4d',
\'gray31':'4f4f4f','grey31':'4f4f4f','gray32':'525252','grey32':'525252','gray33':'545454','grey33'
\:'545454','gray34':'575757','grey34':'575757','gray35':'595959','grey35':'595959','gray36':
\'5c5c5c','grey36':'5c5c5c','gray37':'5e5e5e','grey37':'5e5e5e','gray38':'616161','grey38':'616161'
\,'gray39':'636363','grey39':'636363','gray40':'666666','grey40':'666666','gray41':'696969',
\'grey41':'696969','gray42':'6b6b6b','grey42':'6b6b6b','gray43':'6e6e6e','grey43':'6e6e6e','gray44'
\:'707070','grey44':'707070','gray45':'737373','grey45':'737373','gray46':'757575','grey46':
\'757575','gray47':'787878','grey47':'787878','gray48':'7a7a7a','grey48':'7a7a7a','gray49':'7d7d7d'
\,'grey49':'7d7d7d','gray50':'7f7f7f','grey50':'7f7f7f','gray51':'828282','grey51':'828282',
\'gray52':'858585','grey52':'858585','gray53':'878787','grey53':'878787','gray54':'8a8a8a','grey54'
\:'8a8a8a','gray55':'8c8c8c','grey55':'8c8c8c','gray56':'8f8f8f','grey56':'8f8f8f','gray57':
\'919191','grey57':'919191','gray58':'949494','grey58':'949494','gray59':'969696','grey59':'969696'
\,'gray60':'999999','grey60':'999999','gray61':'9c9c9c','grey61':'9c9c9c','gray62':'9e9e9e',
\'grey62':'9e9e9e','gray63':'a1a1a1','grey63':'a1a1a1','gray64':'a3a3a3','grey64':'a3a3a3','gray65'
\:'a6a6a6','grey65':'a6a6a6','gray66':'a8a8a8','grey66':'a8a8a8','gray67':'ababab','grey67':
\'ababab','gray68':'adadad','grey68':'adadad','gray69':'b0b0b0','grey69':'b0b0b0','gray70':'b3b3b3'
\,'grey70':'b3b3b3','gray71':'b5b5b5','grey71':'b5b5b5','gray72':'b8b8b8','grey72':'b8b8b8',
\'gray73':'bababa','grey73':'bababa','gray74':'bdbdbd','grey74':'bdbdbd','gray75':'bfbfbf','grey75'
\:'bfbfbf','gray76':'c2c2c2','grey76':'c2c2c2','gray77':'c4c4c4','grey77':'c4c4c4','gray78':
\'c7c7c7','grey78':'c7c7c7','gray79':'c9c9c9','grey79':'c9c9c9','gray80':'cccccc','grey80':'cccccc'
\,'gray81':'cfcfcf','grey81':'cfcfcf','gray82':'d1d1d1','grey82':'d1d1d1','gray83':'d4d4d4',
\'grey83':'d4d4d4','gray84':'d6d6d6','grey84':'d6d6d6','gray85':'d9d9d9','grey85':'d9d9d9','gray86'
\:'dbdbdb','grey86':'dbdbdb','gray87':'dedede','grey87':'dedede','gray88':'e0e0e0','grey88':
\'e0e0e0','gray89':'e3e3e3','grey89':'e3e3e3','gray90':'e5e5e5','grey90':'e5e5e5','gray91':'e8e8e8'
\,'grey91':'e8e8e8','gray92':'ebebeb','grey92':'ebebeb','gray93':'ededed','grey93':'ededed',
\'gray94':'f0f0f0','grey94':'f0f0f0','gray95':'f2f2f2','grey95':'f2f2f2','gray96':'f5f5f5','grey96'
\:'f5f5f5','gray97':'f7f7f7','grey97':'f7f7f7','gray98':'fafafa','grey98':'fafafa','gray99':
\'fcfcfc','grey99':'fcfcfc','gray100':'ffffff','grey100':'ffffff'}
" The functions in this script that convert hex color codes to the nearest
" xterm-256 color number are adapted from the theme desert2 (desert256),
" developed by Henry So, Jr.
" functions {{{
" returns an approximate grey index for the given grey level
fun <SID>grey_number(x)
if &t_Co == 88
if a:x < 23
return 0
elseif a:x < 69
return 1
elseif a:x < 103
return 2
elseif a:x < 127
return 3
elseif a:x < 150
return 4
elseif a:x < 173
return 5
elseif a:x < 196
return 6
elseif a:x < 219
return 7
elseif a:x < 243
return 8
else
return 9
endif
else
if a:x < 14
return 0
elseif a:x > 233
return 23
else
return (a:x - 4) / 10
"let l:n = (a:x - 8) / 10
"let l:m = (a:x - 8) % 10
"if l:m < 5
" return l:n
"else
" return l:n + 1
"endif
endif
endif
endfun
" returns the actual grey level represented by the grey index
fun <SID>grey_level(n)
if &t_Co == 88
if a:n == 0
return 0
elseif a:n == 1
return 46
elseif a:n == 2
return 92
elseif a:n == 3
return 115
elseif a:n == 4
return 139
elseif a:n == 5
return 162
elseif a:n == 6
return 185
elseif a:n == 7
return 208
elseif a:n == 8
return 231
else
return 255
endif
else
if a:n == 0
return 0
else
return 8 + (a:n * 10)
endif
endif
endfun
" returns the palette index for the given grey index
fun <SID>grey_color(n)
if &t_Co == 88
if a:n == 0
return 16
elseif a:n == 9
return 79
else
return 79 + a:n
endif
else
if a:n == 0
return 16
elseif a:n == 25
return 231
else
return 231 + a:n
endif
endif
endfun
" returns an approximate color index for the given color level
fun <SID>rgb_number(x)
if &t_Co == 88
if a:x < 69
return 0
elseif a:x < 172
return 1
elseif a:x < 230
return 2
else
return 3
endif
else
" original cutoff was 75, levels are (0, 95, 135, 175, 215, 255)
if a:x < 53
return 0
else
return (a:x - 35) / 40
endif
endif
endfun
" returns the actual color level for the given color index
fun <SID>rgb_level(n)
if &t_Co == 88
if a:n == 0
return 0
elseif a:n == 1
return 139
elseif a:n == 2
return 205
else
return 255
endif
else
if a:n == 0
return 0
else
return 55 + (a:n * 40)
endif
endif
endfun
" returns the palette index for the given R/G/B color indices
fun <SID>rgb_color(x, y, z)
if &t_Co == 88
return 16 + (a:x * 16) + (a:y * 4) + a:z
else
return 16 + (a:x * 36) + (a:y * 6) + a:z
endif
endfun
" returns the palette index to approximate the given R/G/B color levels
fun <SID>color(r, g, b)
" get the closest grey
let l:gx = <SID>grey_number(a:r)
let l:gy = <SID>grey_number(a:g)
let l:gz = <SID>grey_number(a:b)
" get the closest color
let l:x = <SID>rgb_number(a:r)
let l:y = <SID>rgb_number(a:g)
let l:z = <SID>rgb_number(a:b)
if l:gx == l:gy && l:gy == l:gz
" there are two possibilities
let l:dgr = <SID>grey_level(l:gx) - a:r
let l:dgg = <SID>grey_level(l:gy) - a:g
let l:dgb = <SID>grey_level(l:gz) - a:b
let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)
let l:dr = <SID>rgb_level(l:gx) - a:r
let l:dg = <SID>rgb_level(l:gy) - a:g
let l:db = <SID>rgb_level(l:gz) - a:b
let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)
if l:dgrey < l:drgb
" use the grey
return <SID>grey_color(l:gx)
else
" use the color
return <SID>rgb_color(l:x, l:y, l:z)
endif
else
" only one possibility
return <SID>rgb_color(l:x, l:y, l:z)
endif
endfun
" returns the palette index to approximate the 'rrggbb' hex string
fun <SID>rgb(rgb)
let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0
let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0
let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0
return <SID>color(l:r, l:g, l:b)
endfun
" }}}
fun GetColorHex(c)
if a:c =~? '^#\x\{6}$'
return strpart(a:c, 1, 6)
elseif a:c =~? '^#\x\{3}$'
return a:c[1].a:c[1].a:c[2].a:c[2].a:c[3].a:c[3]
elseif has_key(s:colornames, a:c)
return s:colornames[a:c]
else
return "invalid"
endif
endfun
fun HiCo(argstr)
if has("gui_running") || &termguicolors || &t_Co == 256 || &t_Co == 88
let l:args = split(a:argstr)
let l:cmd = "highlight " . l:args[0]
for l:arg in l:args[1:]
if l:arg ==# "clear"
exec "highlight clear " . l:args[0]
continue
endif
let l:parts = split(l:arg, "=")
if len(l:parts) == 2
if l:parts[0] ==# "fg"
let l:hex = GetColorHex(l:parts[1])
let l:cmd = l:cmd . " ctermfg=" . <SID>rgb(l:hex)
let l:cmd = l:cmd . " guifg=#" . l:hex
elseif l:parts[0] ==# "bg"
let l:hex = GetColorHex(l:parts[1])
let l:cmd = l:cmd . " ctermbg=" . <SID>rgb(l:hex)
let l:cmd = l:cmd . " guibg=#" . l:hex
elseif l:parts[0] ==# "ul"
let l:hex = GetColorHex(l:parts[1])
if v:version >= 802
let l:cmd = l:cmd . " ctermul=" . <SID>rgb(l:hex)
let l:cmd = l:cmd . " guisp=#" . l:hex
else
let l:cmd = l:cmd . " cterm=underline gui=underline"
let l:cmd = l:cmd . " guisp=#" . l:hex
endif
elseif l:parts[0] ==# "attr"
let l:cmd = l:cmd . " cterm=" . l:parts[1]
let l:cmd = l:cmd . " gui=" . l:parts[1]
else
let l:cmd = l:cmd . " " . l:arg
endif
else
let l:cmd = l:cmd . " " . l:parts[0]
endif
endfor
exec l:cmd
endif
endfun
" vim: ts=2:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment