Advertisement
FocusedWolf

Vim: Scrolling through colorschemes with Alt + MouseWheel

Jan 30th, 2025 (edited)
5,691
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VIM 44.46 KB | None | 0 0
  1. " For completeness, Ctrl + MouseWheel font zooming from this other code: https://pastebin.com/yLqkSd6p
  2.  
  3. " Bind Alt + MouseWheel to cycle through color schemes {{{
  4.  
  5. " Online post: https://pastebin.com/8uxUNfKL
  6.  
  7. " Turn your mouse wheel into a fidget spinner with this one simple trick.
  8. " WARNING: If you scroll too fast you will get a seizure.
  9.  
  10. let g:colornames = {}
  11.  
  12. function! s:AddColors(cnames) abort
  13.     let lower_cnames = {}
  14.     for [key, value] in items(a:cnames)
  15.         let lower_cnames[tolower(key)] = value
  16.     endfor
  17.      " If v:colornames doesn't exist (i.e. nvim) then use g:colornames dictionary.
  18.     let l:color_names = get(v:, 'colornames', g:colornames)
  19.     call extend(l:color_names, lower_cnames, 'keep')
  20. endfunction
  21.  
  22. " If your vim has v:colornames variable then lets extend it with the nvim colors.
  23. if exists('v:colornames')
  24.     " SOURCE: https://github.com/nshern/neovim-default-colorscheme-extras
  25.     " SOURCE: https://github.com/neovim/neovim/blob/master/src/nvim/highlight_group.c
  26.     let s:nvim_cnames = {
  27.         \ 'NvimDarkBlue': '#004c63',
  28.         \ 'NvimDarkCyan': '#007373',
  29.         \ 'NvimDarkGreen': '#005523',
  30.         \ 'NvimDarkGrey1': '#07080D',
  31.         \ 'NvimDarkGrey2': '#14161B',
  32.         \ 'NvimDarkGrey3': '#2c2e33',
  33.         \ 'NvimDarkGrey4': '#4f5258',
  34.         \ 'NvimDarkMagenta': '#470045',
  35.         \ 'NvimDarkRed': '#590008',
  36.         \ 'NvimDarkYellow': '#6b5300',
  37.         \ 'NvimLightBlue': '#A6DBFF',
  38.         \ 'NvimLightCyan': '#8cf8f7',
  39.         \ 'NvimLightGreen': '#b4f6c0',
  40.         \ 'NvimLightGrey1': '#EEF1F8',
  41.         \ 'NvimLightGrey2': '#E0E2EA',
  42.         \ 'NvimLightGrey3': '#C4C6CD',
  43.         \ 'NvimLightGrey4': '#9b9ea4',
  44.         \ 'NvimLightMagenta': '#FFCAFF',
  45.         \ 'NvimLightRed': '#FFC0B9',
  46.         \ 'NvimLightYellow': '#FCE094',
  47.         \ }
  48.     call s:AddColors(s:nvim_cnames)
  49. " Else your likely running nvim which means it doesn't know any named colors except the default ones.
  50. else
  51.     " SOURCE: "C:\Program Files\Vim\vim91\colors\lists\csscolors.vim"
  52.     let s:csscolors = {
  53.         \ 'css_black': '#000000',
  54.         \ 'css_silver': '#c0c0c0',
  55.         \ 'css_gray': '#808080',
  56.         \ 'css_white': '#FFFFFF',
  57.         \ 'css_maroon': '#800000',
  58.         \ 'css_red': '#FF0000',
  59.         \ 'css_purple': '#800080',
  60.         \ 'css_fuchsia': '#FF00FF',
  61.         \ 'css_green': '#008000',
  62.         \ 'css_lime': '#00FF00',
  63.         \ 'css_olive': '#808000',
  64.         \ 'css_yellow': '#FFFF00',
  65.         \ 'css_navy': '#000080',
  66.         \ 'css_blue': '#0000FF',
  67.         \ 'css_teal': '#008080',
  68.         \ 'css_aqua': '#00FFFF',
  69.         \ 'css_aliceblue': '#f0f8ff',
  70.         \ 'css_antiquewhite': '#faebd7',
  71.         \ 'css_aquamarine': '#7fffd4',
  72.         \ 'css_azure': '#f0ffff',
  73.         \ 'css_beige': '#f5f5dc',
  74.         \ 'css_bisque': '#ffe4c4',
  75.         \ 'css_blanchedalmond': '#ffebcd',
  76.         \ 'css_blueviolet': '#8a2be2',
  77.         \ 'css_brown': '#a52a2a',
  78.         \ 'css_burlywood': '#deb887',
  79.         \ 'css_cadetblue': '#5f9ea0',
  80.         \ 'css_chartreuse': '#7fff00',
  81.         \ 'css_chocolate': '#d2691e',
  82.         \ 'css_coral': '#ff7f50',
  83.         \ 'css_cornflowerblue': '#6495ed',
  84.         \ 'css_cornsilk': '#fff8dc',
  85.         \ 'css_crimson': '#dc143c',
  86.         \ 'css_cyan': '#00ffff',
  87.         \ 'css_darkblue': '#00008b',
  88.         \ 'css_darkcyan': '#008b8b',
  89.         \ 'css_darkgoldenrod': '#b8860b',
  90.         \ 'css_darkgray': '#a9a9a9',
  91.         \ 'css_darkgreen': '#006400',
  92.         \ 'css_darkgrey': '#a9a9a9',
  93.         \ 'css_darkkhaki': '#bdb76b',
  94.         \ 'css_darkmagenta': '#8b008b',
  95.         \ 'css_darkolivegreen': '#556b2f',
  96.         \ 'css_darkorange': '#ff8c00',
  97.         \ 'css_darkorchid': '#9932cc',
  98.         \ 'css_darkred': '#8b0000',
  99.         \ 'css_darksalmon': '#e9967a',
  100.         \ 'css_darkseagreen': '#8fbc8f',
  101.         \ 'css_darkslateblue': '#483d8b',
  102.         \ 'css_darkslategray': '#2f4f4f',
  103.         \ 'css_darkslategrey': '#2f4f4f',
  104.         \ 'css_darkturquoise': '#00ced1',
  105.         \ 'css_darkviolet': '#9400d3',
  106.         \ 'css_deeppink': '#ff1493',
  107.         \ 'css_deepskyblue': '#00bfff',
  108.         \ 'css_dimgray': '#696969',
  109.         \ 'css_dimgrey': '#696969',
  110.         \ 'css_dodgerblue': '#1e90ff',
  111.         \ 'css_firebrick': '#b22222',
  112.         \ 'css_floralwhite': '#fffaf0',
  113.         \ 'css_forestgreen': '#228b22',
  114.         \ 'css_gainsboro': '#dcdcdc',
  115.         \ 'css_ghostwhite': '#f8f8ff',
  116.         \ 'css_gold': '#ffd700',
  117.         \ 'css_goldenrod': '#daa520',
  118.         \ 'css_greenyellow': '#adff2f',
  119.         \ 'css_grey': '#808080',
  120.         \ 'css_honeydew': '#f0fff0',
  121.         \ 'css_hotpink': '#ff69b4',
  122.         \ 'css_indianred': '#cd5c5c',
  123.         \ 'css_indigo': '#4b0082',
  124.         \ 'css_ivory': '#fffff0',
  125.         \ 'css_khaki': '#f0e68c',
  126.         \ 'css_lavender': '#e6e6fa',
  127.         \ 'css_lavenderblush': '#fff0f5',
  128.         \ 'css_lawngreen': '#7cfc00',
  129.         \ 'css_lemonchiffon': '#fffacd',
  130.         \ 'css_lightblue': '#add8e6',
  131.         \ 'css_lightcoral': '#f08080',
  132.         \ 'css_lightcyan': '#e0ffff',
  133.         \ 'css_lightgoldenrodyellow': '#fafad2',
  134.         \ 'css_lightgray': '#d3d3d3',
  135.         \ 'css_lightgreen': '#90ee90',
  136.         \ 'css_lightgrey': '#d3d3d3',
  137.         \ 'css_lightpink': '#ffb6c1',
  138.         \ 'css_lightsalmon': '#ffa07a',
  139.         \ 'css_lightseagreen': '#20b2aa',
  140.         \ 'css_lightskyblue': '#87cefa',
  141.         \ 'css_lightslategray': '#778899',
  142.         \ 'css_lightslategrey': '#778899',
  143.         \ 'css_lightsteelblue': '#b0c4de',
  144.         \ 'css_lightyellow': '#ffffe0',
  145.         \ 'css_limegreen': '#32cd32',
  146.         \ 'css_linen': '#faf0e6',
  147.         \ 'css_magenta': '#ff00ff',
  148.         \ 'css_mediumaquamarine': '#66cdaa',
  149.         \ 'css_mediumblue': '#0000cd',
  150.         \ 'css_mediumorchid': '#ba55d3',
  151.         \ 'css_mediumpurple': '#9370db',
  152.         \ 'css_mediumseagreen': '#3cb371',
  153.         \ 'css_mediumslateblue': '#7b68ee',
  154.         \ 'css_mediumspringgreen': '#00fa9a',
  155.         \ 'css_mediumturquoise': '#48d1cc',
  156.         \ 'css_mediumvioletred': '#c71585',
  157.         \ 'css_midnightblue': '#191970',
  158.         \ 'css_mintcream': '#f5fffa',
  159.         \ 'css_mistyrose': '#ffe4e1',
  160.         \ 'css_moccasin': '#ffe4b5',
  161.         \ 'css_navajowhite': '#ffdead',
  162.         \ 'css_oldlace': '#fdf5e6',
  163.         \ 'css_olivedrab': '#6b8e23',
  164.         \ 'css_orange': '#ffa500',
  165.         \ 'css_orangered': '#ff4500',
  166.         \ 'css_orchid': '#da70d6',
  167.         \ 'css_palegoldenrod': '#eee8aa',
  168.         \ 'css_palegreen': '#98fb98',
  169.         \ 'css_paleturquoise': '#afeeee',
  170.         \ 'css_palevioletred': '#db7093',
  171.         \ 'css_papayawhip': '#ffefd5',
  172.         \ 'css_peachpuff': '#ffdab9',
  173.         \ 'css_peru': '#cd853f',
  174.         \ 'css_pink': '#ffc0cb',
  175.         \ 'css_plum': '#dda0dd',
  176.         \ 'css_powderblue': '#b0e0e6',
  177.         \ 'css_rosybrown': '#bc8f8f',
  178.         \ 'css_royalblue': '#4169e1',
  179.         \ 'css_saddlebrown': '#8b4513',
  180.         \ 'css_salmon': '#fa8072',
  181.         \ 'css_sandybrown': '#f4a460',
  182.         \ 'css_seagreen': '#2e8b57',
  183.         \ 'css_seashell': '#fff5ee',
  184.         \ 'css_sienna': '#a0522d',
  185.         \ 'css_skyblue': '#87ceeb',
  186.         \ 'css_slateblue': '#6a5acd',
  187.         \ 'css_slategray': '#708090',
  188.         \ 'css_slategrey': '#708090',
  189.         \ 'css_snow': '#fffafa',
  190.         \ 'css_springgreen': '#00ff7f',
  191.         \ 'css_steelblue': '#4682b4',
  192.         \ 'css_tan': '#d2b48c',
  193.         \ 'css_thistle': '#d8bfd8',
  194.         \ 'css_tomato': '#ff6347',
  195.         \ 'css_turquoise': '#40e0d0',
  196.         \ 'css_violet': '#ee82ee',
  197.         \ 'css_wheat': '#f5deb3',
  198.         \ 'css_whitesmoke': '#f5f5f5',
  199.         \ 'css_yellowgreen': '#9acd32',
  200.         \ }
  201.     " call s:AddColors(s:csscolors) " Very likely no color scheme uses these colors.
  202.     " Also gvim doesn't load "C:\Program Files\Vim\vim91\colors\lists\csscolors.vim" by default.
  203.     " ChatGPT says you would need to do [:source $VIMRUNTIME/colors/lists/csscolors.vim] to have those colors in gvim's v:colornames, so no reason to load them here by default for neovim to use.
  204.  
  205.     " SOURCE: "C:\Program Files\Vim\vim91\colors\lists\default.vim"
  206.     let s:default_cnames = {
  207.         \ 'snow': '#fffafa',
  208.         \ 'ghost white': '#f8f8ff',
  209.         \ 'ghostwhite': '#f8f8ff',
  210.         \ 'white smoke': '#f5f5f5',
  211.         \ 'whitesmoke': '#f5f5f5',
  212.         \ 'gainsboro': '#dcdcdc',
  213.         \ 'floral white': '#fffaf0',
  214.         \ 'floralwhite': '#fffaf0',
  215.         \ 'old lace': '#fdf5e6',
  216.         \ 'oldlace': '#fdf5e6',
  217.         \ 'linen': '#faf0e6',
  218.         \ 'antique white': '#faebd7',
  219.         \ 'antiquewhite': '#faebd7',
  220.         \ 'papaya whip': '#ffefd5',
  221.         \ 'papayawhip': '#ffefd5',
  222.         \ 'blanched almond': '#ffebcd',
  223.         \ 'blanchedalmond': '#ffebcd',
  224.         \ 'bisque': '#ffe4c4',
  225.         \ 'peach puff': '#ffdab9',
  226.         \ 'peachpuff': '#ffdab9',
  227.         \ 'navajo white': '#ffdead',
  228.         \ 'navajowhite': '#ffdead',
  229.         \ 'moccasin': '#ffe4b5',
  230.         \ 'cornsilk': '#fff8dc',
  231.         \ 'ivory': '#fffff0',
  232.         \ 'lemon chiffon': '#fffacd',
  233.         \ 'lemonchiffon': '#fffacd',
  234.         \ 'seashell': '#fff5ee',
  235.         \ 'honeydew': '#f0fff0',
  236.         \ 'mint cream': '#f5fffa',
  237.         \ 'mintcream': '#f5fffa',
  238.         \ 'azure': '#f0ffff',
  239.         \ 'alice blue': '#f0f8ff',
  240.         \ 'aliceblue': '#f0f8ff',
  241.         \ 'lavender': '#e6e6fa',
  242.         \ 'lavender blush': '#fff0f5',
  243.         \ 'lavenderblush': '#fff0f5',
  244.         \ 'misty rose': '#ffe4e1',
  245.         \ 'mistyrose': '#ffe4e1',
  246.         \ 'white': '#ffffff',
  247.         \ 'black': '#000000',
  248.         \ 'dark slate gray': '#2f4f4f',
  249.         \ 'darkslategray': '#2f4f4f',
  250.         \ 'dark slate grey': '#2f4f4f',
  251.         \ 'darkslategrey': '#2f4f4f',
  252.         \ 'dim gray': '#696969',
  253.         \ 'dimgray': '#696969',
  254.         \ 'dim grey': '#696969',
  255.         \ 'dimgrey': '#696969',
  256.         \ 'slate gray': '#708090',
  257.         \ 'slategray': '#708090',
  258.         \ 'slate grey': '#708090',
  259.         \ 'slategrey': '#708090',
  260.         \ 'light slate gray': '#778899',
  261.         \ 'lightslategray': '#778899',
  262.         \ 'light slate grey': '#778899',
  263.         \ 'lightslategrey': '#778899',
  264.         \ 'gray': '#bebebe',
  265.         \ 'grey': '#bebebe',
  266.         \ 'x11 gray': '#bebebe',
  267.         \ 'x11gray': '#bebebe',
  268.         \ 'x11 grey': '#bebebe',
  269.         \ 'x11grey': '#bebebe',
  270.         \ 'web gray': '#808080',
  271.         \ 'webgray': '#808080',
  272.         \ 'web grey': '#808080',
  273.         \ 'webgrey': '#808080',
  274.         \ 'light grey': '#d3d3d3',
  275.         \ 'lightgrey': '#d3d3d3',
  276.         \ 'light gray': '#d3d3d3',
  277.         \ 'lightgray': '#d3d3d3',
  278.         \ 'midnight blue': '#191970',
  279.         \ 'midnightblue': '#191970',
  280.         \ 'navy': '#000080',
  281.         \ 'navy blue': '#000080',
  282.         \ 'navyblue': '#000080',
  283.         \ 'cornflower blue': '#6495ed',
  284.         \ 'cornflowerblue': '#6495ed',
  285.         \ 'dark slate blue': '#483d8b',
  286.         \ 'darkslateblue': '#483d8b',
  287.         \ 'slate blue': '#6a5acd',
  288.         \ 'slateblue': '#6a5acd',
  289.         \ 'medium slate blue': '#7b68ee',
  290.         \ 'mediumslateblue': '#7b68ee',
  291.         \ 'light slate blue': '#8470ff',
  292.         \ 'lightslateblue': '#8470ff',
  293.         \ 'medium blue': '#0000cd',
  294.         \ 'mediumblue': '#0000cd',
  295.         \ 'royal blue': '#4169e1',
  296.         \ 'royalblue': '#4169e1',
  297.         \ 'blue': '#0000ff',
  298.         \ 'dodger blue': '#1e90ff',
  299.         \ 'dodgerblue': '#1e90ff',
  300.         \ 'deep sky blue': '#00bfff',
  301.         \ 'deepskyblue': '#00bfff',
  302.         \ 'sky blue': '#87ceeb',
  303.         \ 'skyblue': '#87ceeb',
  304.         \ 'light sky blue': '#87cefa',
  305.         \ 'lightskyblue': '#87cefa',
  306.         \ 'steel blue': '#4682b4',
  307.         \ 'steelblue': '#4682b4',
  308.         \ 'light steel blue': '#b0c4de',
  309.         \ 'lightsteelblue': '#b0c4de',
  310.         \ 'light blue': '#add8e6',
  311.         \ 'lightblue': '#add8e6',
  312.         \ 'powder blue': '#b0e0e6',
  313.         \ 'powderblue': '#b0e0e6',
  314.         \ 'pale turquoise': '#afeeee',
  315.         \ 'paleturquoise': '#afeeee',
  316.         \ 'dark turquoise': '#00ced1',
  317.         \ 'darkturquoise': '#00ced1',
  318.         \ 'medium turquoise': '#48d1cc',
  319.         \ 'mediumturquoise': '#48d1cc',
  320.         \ 'turquoise': '#40e0d0',
  321.         \ 'cyan': '#00ffff',
  322.         \ 'aqua': '#00ffff',
  323.         \ 'light cyan': '#e0ffff',
  324.         \ 'lightcyan': '#e0ffff',
  325.         \ 'cadet blue': '#5f9ea0',
  326.         \ 'cadetblue': '#5f9ea0',
  327.         \ 'medium aquamarine': '#66cdaa',
  328.         \ 'mediumaquamarine': '#66cdaa',
  329.         \ 'aquamarine': '#7fffd4',
  330.         \ 'dark green': '#006400',
  331.         \ 'darkgreen': '#006400',
  332.         \ 'dark olive green': '#556b2f',
  333.         \ 'darkolivegreen': '#556b2f',
  334.         \ 'dark sea green': '#8fbc8f',
  335.         \ 'darkseagreen': '#8fbc8f',
  336.         \ 'sea green': '#2e8b57',
  337.         \ 'seagreen': '#2e8b57',
  338.         \ 'medium sea green': '#3cb371',
  339.         \ 'mediumseagreen': '#3cb371',
  340.         \ 'light sea green': '#20b2aa',
  341.         \ 'lightseagreen': '#20b2aa',
  342.         \ 'pale green': '#98fb98',
  343.         \ 'palegreen': '#98fb98',
  344.         \ 'spring green': '#00ff7f',
  345.         \ 'springgreen': '#00ff7f',
  346.         \ 'lawn green': '#7cfc00',
  347.         \ 'lawngreen': '#7cfc00',
  348.         \ 'green': '#00ff00',
  349.         \ 'lime': '#00ff00',
  350.         \ 'x11 green': '#00ff00',
  351.         \ 'x11green': '#00ff00',
  352.         \ 'web green': '#008000',
  353.         \ 'webgreen': '#008000',
  354.         \ 'chartreuse': '#7fff00',
  355.         \ 'medium spring green': '#00fa9a',
  356.         \ 'mediumspringgreen': '#00fa9a',
  357.         \ 'green yellow': '#adff2f',
  358.         \ 'greenyellow': '#adff2f',
  359.         \ 'lime green': '#32cd32',
  360.         \ 'limegreen': '#32cd32',
  361.         \ 'yellow green': '#9acd32',
  362.         \ 'yellowgreen': '#9acd32',
  363.         \ 'forest green': '#228b22',
  364.         \ 'forestgreen': '#228b22',
  365.         \ 'olive drab': '#6b8e23',
  366.         \ 'olivedrab': '#6b8e23',
  367.         \ 'dark khaki': '#bdb76b',
  368.         \ 'darkkhaki': '#bdb76b',
  369.         \ 'khaki': '#f0e68c',
  370.         \ 'pale goldenrod': '#eee8aa',
  371.         \ 'palegoldenrod': '#eee8aa',
  372.         \ 'light goldenrod yellow': '#fafad2',
  373.         \ 'lightgoldenrodyellow': '#fafad2',
  374.         \ 'light yellow': '#ffffe0',
  375.         \ 'lightyellow': '#ffffe0',
  376.         \ 'yellow': '#ffff00',
  377.         \ 'gold': '#ffd700',
  378.         \ 'light goldenrod': '#eedd82',
  379.         \ 'lightgoldenrod': '#eedd82',
  380.         \ 'goldenrod': '#daa520',
  381.         \ 'dark goldenrod': '#b8860b',
  382.         \ 'darkgoldenrod': '#b8860b',
  383.         \ 'rosy brown': '#bc8f8f',
  384.         \ 'rosybrown': '#bc8f8f',
  385.         \ 'indian red': '#cd5c5c',
  386.         \ 'indianred': '#cd5c5c',
  387.         \ 'saddle brown': '#8b4513',
  388.         \ 'saddlebrown': '#8b4513',
  389.         \ 'sienna': '#a0522d',
  390.         \ 'peru': '#cd853f',
  391.         \ 'burlywood': '#deb887',
  392.         \ 'beige': '#f5f5dc',
  393.         \ 'wheat': '#f5deb3',
  394.         \ 'sandy brown': '#f4a460',
  395.         \ 'sandybrown': '#f4a460',
  396.         \ 'tan': '#d2b48c',
  397.         \ 'chocolate': '#d2691e',
  398.         \ 'firebrick': '#b22222',
  399.         \ 'brown': '#a52a2a',
  400.         \ 'dark salmon': '#e9967a',
  401.         \ 'darksalmon': '#e9967a',
  402.         \ 'salmon': '#fa8072',
  403.         \ 'light salmon': '#ffa07a',
  404.         \ 'lightsalmon': '#ffa07a',
  405.         \ 'orange': '#ffa500',
  406.         \ 'dark orange': '#ff8c00',
  407.         \ 'darkorange': '#ff8c00',
  408.         \ 'coral': '#ff7f50',
  409.         \ 'light coral': '#f08080',
  410.         \ 'lightcoral': '#f08080',
  411.         \ 'tomato': '#ff6347',
  412.         \ 'orange red': '#ff4500',
  413.         \ 'orangered': '#ff4500',
  414.         \ 'red': '#ff0000',
  415.         \ 'hot pink': '#ff69b4',
  416.         \ 'hotpink': '#ff69b4',
  417.         \ 'deep pink': '#ff1493',
  418.         \ 'deeppink': '#ff1493',
  419.         \ 'pink': '#ffc0cb',
  420.         \ 'light pink': '#ffb6c1',
  421.         \ 'lightpink': '#ffb6c1',
  422.         \ 'pale violet red': '#db7093',
  423.         \ 'palevioletred': '#db7093',
  424.         \ 'maroon': '#b03060',
  425.         \ 'x11 maroon': '#b03060',
  426.         \ 'x11maroon': '#b03060',
  427.         \ 'web maroon': '#800000',
  428.         \ 'webmaroon': '#800000',
  429.         \ 'medium violet red': '#c71585',
  430.         \ 'mediumvioletred': '#c71585',
  431.         \ 'violet red': '#d02090',
  432.         \ 'violetred': '#d02090',
  433.         \ 'magenta': '#ff00ff',
  434.         \ 'fuchsia': '#ff00ff',
  435.         \ 'violet': '#ee82ee',
  436.         \ 'plum': '#dda0dd',
  437.         \ 'orchid': '#da70d6',
  438.         \ 'medium orchid': '#ba55d3',
  439.         \ 'mediumorchid': '#ba55d3',
  440.         \ 'dark orchid': '#9932cc',
  441.         \ 'darkorchid': '#9932cc',
  442.         \ 'dark violet': '#9400d3',
  443.         \ 'darkviolet': '#9400d3',
  444.         \ 'blue violet': '#8a2be2',
  445.         \ 'blueviolet': '#8a2be2',
  446.         \ 'purple': '#a020f0',
  447.         \ 'x11 purple': '#a020f0',
  448.         \ 'x11purple': '#a020f0',
  449.         \ 'web purple': '#800080',
  450.         \ 'webpurple': '#800080',
  451.         \ 'medium purple': '#9370db',
  452.         \ 'mediumpurple': '#9370db',
  453.         \ 'thistle': '#d8bfd8',
  454.         \ 'snow1': '#fffafa',
  455.         \ 'snow2': '#eee9e9',
  456.         \ 'snow3': '#cdc9c9',
  457.         \ 'snow4': '#8b8989',
  458.         \ 'seashell1': '#fff5ee',
  459.         \ 'seashell2': '#eee5de',
  460.         \ 'seashell3': '#cdc5bf',
  461.         \ 'seashell4': '#8b8682',
  462.         \ 'antiquewhite1': '#ffefdb',
  463.         \ 'antiquewhite2': '#eedfcc',
  464.         \ 'antiquewhite3': '#cdc0b0',
  465.         \ 'antiquewhite4': '#8b8378',
  466.         \ 'bisque1': '#ffe4c4',
  467.         \ 'bisque2': '#eed5b7',
  468.         \ 'bisque3': '#cdb79e',
  469.         \ 'bisque4': '#8b7d6b',
  470.         \ 'peachpuff1': '#ffdab9',
  471.         \ 'peachpuff2': '#eecbad',
  472.         \ 'peachpuff3': '#cdaf95',
  473.         \ 'peachpuff4': '#8b7765',
  474.         \ 'navajowhite1': '#ffdead',
  475.         \ 'navajowhite2': '#eecfa1',
  476.         \ 'navajowhite3': '#cdb38b',
  477.         \ 'navajowhite4': '#8b795e',
  478.         \ 'lemonchiffon1': '#fffacd',
  479.         \ 'lemonchiffon2': '#eee9bf',
  480.         \ 'lemonchiffon3': '#cdc9a5',
  481.         \ 'lemonchiffon4': '#8b8970',
  482.         \ 'cornsilk1': '#fff8dc',
  483.         \ 'cornsilk2': '#eee8cd',
  484.         \ 'cornsilk3': '#cdc8b1',
  485.         \ 'cornsilk4': '#8b8878',
  486.         \ 'ivory1': '#fffff0',
  487.         \ 'ivory2': '#eeeee0',
  488.         \ 'ivory3': '#cdcdc1',
  489.         \ 'ivory4': '#8b8b83',
  490.         \ 'honeydew1': '#f0fff0',
  491.         \ 'honeydew2': '#e0eee0',
  492.         \ 'honeydew3': '#c1cdc1',
  493.         \ 'honeydew4': '#838b83',
  494.         \ 'lavenderblush1': '#fff0f5',
  495.         \ 'lavenderblush2': '#eee0e5',
  496.         \ 'lavenderblush3': '#cdc1c5',
  497.         \ 'lavenderblush4': '#8b8386',
  498.         \ 'mistyrose1': '#ffe4e1',
  499.         \ 'mistyrose2': '#eed5d2',
  500.         \ 'mistyrose3': '#cdb7b5',
  501.         \ 'mistyrose4': '#8b7d7b',
  502.         \ 'azure1': '#f0ffff',
  503.         \ 'azure2': '#e0eeee',
  504.         \ 'azure3': '#c1cdcd',
  505.         \ 'azure4': '#838b8b',
  506.         \ 'slateblue1': '#836fff',
  507.         \ 'slateblue2': '#7a67ee',
  508.         \ 'slateblue3': '#6959cd',
  509.         \ 'slateblue4': '#473c8b',
  510.         \ 'royalblue1': '#4876ff',
  511.         \ 'royalblue2': '#436eee',
  512.         \ 'royalblue3': '#3a5fcd',
  513.         \ 'royalblue4': '#27408b',
  514.         \ 'blue1': '#0000ff',
  515.         \ 'blue2': '#0000ee',
  516.         \ 'blue3': '#0000cd',
  517.         \ 'blue4': '#00008b',
  518.         \ 'dodgerblue1': '#1e90ff',
  519.         \ 'dodgerblue2': '#1c86ee',
  520.         \ 'dodgerblue3': '#1874cd',
  521.         \ 'dodgerblue4': '#104e8b',
  522.         \ 'steelblue1': '#63b8ff',
  523.         \ 'steelblue2': '#5cacee',
  524.         \ 'steelblue3': '#4f94cd',
  525.         \ 'steelblue4': '#36648b',
  526.         \ 'deepskyblue1': '#00bfff',
  527.         \ 'deepskyblue2': '#00b2ee',
  528.         \ 'deepskyblue3': '#009acd',
  529.         \ 'deepskyblue4': '#00688b',
  530.         \ 'skyblue1': '#87ceff',
  531.         \ 'skyblue2': '#7ec0ee',
  532.         \ 'skyblue3': '#6ca6cd',
  533.         \ 'skyblue4': '#4a708b',
  534.         \ 'lightskyblue1': '#b0e2ff',
  535.         \ 'lightskyblue2': '#a4d3ee',
  536.         \ 'lightskyblue3': '#8db6cd',
  537.         \ 'lightskyblue4': '#607b8b',
  538.         \ 'slategray1': '#c6e2ff',
  539.         \ 'slategray2': '#b9d3ee',
  540.         \ 'slategray3': '#9fb6cd',
  541.         \ 'slategray4': '#6c7b8b',
  542.         \ 'lightsteelblue1': '#cae1ff',
  543.         \ 'lightsteelblue2': '#bcd2ee',
  544.         \ 'lightsteelblue3': '#a2b5cd',
  545.         \ 'lightsteelblue4': '#6e7b8b',
  546.         \ 'lightblue1': '#bfefff',
  547.         \ 'lightblue2': '#b2dfee',
  548.         \ 'lightblue3': '#9ac0cd',
  549.         \ 'lightblue4': '#68838b',
  550.         \ 'lightcyan1': '#e0ffff',
  551.         \ 'lightcyan2': '#d1eeee',
  552.         \ 'lightcyan3': '#b4cdcd',
  553.         \ 'lightcyan4': '#7a8b8b',
  554.         \ 'paleturquoise1': '#bbffff',
  555.         \ 'paleturquoise2': '#aeeeee',
  556.         \ 'paleturquoise3': '#96cdcd',
  557.         \ 'paleturquoise4': '#668b8b',
  558.         \ 'cadetblue1': '#98f5ff',
  559.         \ 'cadetblue2': '#8ee5ee',
  560.         \ 'cadetblue3': '#7ac5cd',
  561.         \ 'cadetblue4': '#53868b',
  562.         \ 'turquoise1': '#00f5ff',
  563.         \ 'turquoise2': '#00e5ee',
  564.         \ 'turquoise3': '#00c5cd',
  565.         \ 'turquoise4': '#00868b',
  566.         \ 'cyan1': '#00ffff',
  567.         \ 'cyan2': '#00eeee',
  568.         \ 'cyan3': '#00cdcd',
  569.         \ 'cyan4': '#008b8b',
  570.         \ 'darkslategray1': '#97ffff',
  571.         \ 'darkslategray2': '#8deeee',
  572.         \ 'darkslategray3': '#79cdcd',
  573.         \ 'darkslategray4': '#528b8b',
  574.         \ 'aquamarine1': '#7fffd4',
  575.         \ 'aquamarine2': '#76eec6',
  576.         \ 'aquamarine3': '#66cdaa',
  577.         \ 'aquamarine4': '#458b74',
  578.         \ 'darkseagreen1': '#c1ffc1',
  579.         \ 'darkseagreen2': '#b4eeb4',
  580.         \ 'darkseagreen3': '#9bcd9b',
  581.         \ 'darkseagreen4': '#698b69',
  582.         \ 'seagreen1': '#54ff9f',
  583.         \ 'seagreen2': '#4eee94',
  584.         \ 'seagreen3': '#43cd80',
  585.         \ 'seagreen4': '#2e8b57',
  586.         \ 'palegreen1': '#9aff9a',
  587.         \ 'palegreen2': '#90ee90',
  588.         \ 'palegreen3': '#7ccd7c',
  589.         \ 'palegreen4': '#548b54',
  590.         \ 'springgreen1': '#00ff7f',
  591.         \ 'springgreen2': '#00ee76',
  592.         \ 'springgreen3': '#00cd66',
  593.         \ 'springgreen4': '#008b45',
  594.         \ 'green1': '#00ff00',
  595.         \ 'green2': '#00ee00',
  596.         \ 'green3': '#00cd00',
  597.         \ 'green4': '#008b00',
  598.         \ 'chartreuse1': '#7fff00',
  599.         \ 'chartreuse2': '#76ee00',
  600.         \ 'chartreuse3': '#66cd00',
  601.         \ 'chartreuse4': '#458b00',
  602.         \ 'olivedrab1': '#c0ff3e',
  603.         \ 'olivedrab2': '#b3ee3a',
  604.         \ 'olivedrab3': '#9acd32',
  605.         \ 'olivedrab4': '#698b22',
  606.         \ 'darkolivegreen1': '#caff70',
  607.         \ 'darkolivegreen2': '#bcee68',
  608.         \ 'darkolivegreen3': '#a2cd5a',
  609.         \ 'darkolivegreen4': '#6e8b3d',
  610.         \ 'khaki1': '#fff68f',
  611.         \ 'khaki2': '#eee685',
  612.         \ 'khaki3': '#cdc673',
  613.         \ 'khaki4': '#8b864e',
  614.         \ 'lightgoldenrod1': '#ffec8b',
  615.         \ 'lightgoldenrod2': '#eedc82',
  616.         \ 'lightgoldenrod3': '#cdbe70',
  617.         \ 'lightgoldenrod4': '#8b814c',
  618.         \ 'lightyellow1': '#ffffe0',
  619.         \ 'lightyellow2': '#eeeed1',
  620.         \ 'lightyellow3': '#cdcdb4',
  621.         \ 'lightyellow4': '#8b8b7a',
  622.         \ 'yellow1': '#ffff00',
  623.         \ 'yellow2': '#eeee00',
  624.         \ 'yellow3': '#cdcd00',
  625.         \ 'yellow4': '#8b8b00',
  626.         \ 'dark yellow': '#8b8b00',
  627.         \ 'darkyellow': '#8b8b00',
  628.         \ 'gold1': '#ffd700',
  629.         \ 'gold2': '#eec900',
  630.         \ 'gold3': '#cdad00',
  631.         \ 'gold4': '#8b7500',
  632.         \ 'goldenrod1': '#ffc125',
  633.         \ 'goldenrod2': '#eeb422',
  634.         \ 'goldenrod3': '#cd9b1d',
  635.         \ 'goldenrod4': '#8b6914',
  636.         \ 'darkgoldenrod1': '#ffb90f',
  637.         \ 'darkgoldenrod2': '#eead0e',
  638.         \ 'darkgoldenrod3': '#cd950c',
  639.         \ 'darkgoldenrod4': '#8b6508',
  640.         \ 'rosybrown1': '#ffc1c1',
  641.         \ 'rosybrown2': '#eeb4b4',
  642.         \ 'rosybrown3': '#cd9b9b',
  643.         \ 'rosybrown4': '#8b6969',
  644.         \ 'indianred1': '#ff6a6a',
  645.         \ 'indianred2': '#ee6363',
  646.         \ 'indianred3': '#cd5555',
  647.         \ 'indianred4': '#8b3a3a',
  648.         \ 'sienna1': '#ff8247',
  649.         \ 'sienna2': '#ee7942',
  650.         \ 'sienna3': '#cd6839',
  651.         \ 'sienna4': '#8b4726',
  652.         \ 'burlywood1': '#ffd39b',
  653.         \ 'burlywood2': '#eec591',
  654.         \ 'burlywood3': '#cdaa7d',
  655.         \ 'burlywood4': '#8b7355',
  656.         \ 'wheat1': '#ffe7ba',
  657.         \ 'wheat2': '#eed8ae',
  658.         \ 'wheat3': '#cdba96',
  659.         \ 'wheat4': '#8b7e66',
  660.         \ 'tan1': '#ffa54f',
  661.         \ 'tan2': '#ee9a49',
  662.         \ 'tan3': '#cd853f',
  663.         \ 'tan4': '#8b5a2b',
  664.         \ 'chocolate1': '#ff7f24',
  665.         \ 'chocolate2': '#ee7621',
  666.         \ 'chocolate3': '#cd661d',
  667.         \ 'chocolate4': '#8b4513',
  668.         \ 'firebrick1': '#ff3030',
  669.         \ 'firebrick2': '#ee2c2c',
  670.         \ 'firebrick3': '#cd2626',
  671.         \ 'firebrick4': '#8b1a1a',
  672.         \ 'brown1': '#ff4040',
  673.         \ 'brown2': '#ee3b3b',
  674.         \ 'brown3': '#cd3333',
  675.         \ 'brown4': '#8b2323',
  676.         \ 'salmon1': '#ff8c69',
  677.         \ 'salmon2': '#ee8262',
  678.         \ 'salmon3': '#cd7054',
  679.         \ 'salmon4': '#8b4c39',
  680.         \ 'lightsalmon1': '#ffa07a',
  681.         \ 'lightsalmon2': '#ee9572',
  682.         \ 'lightsalmon3': '#cd8162',
  683.         \ 'lightsalmon4': '#8b5742',
  684.         \ 'orange1': '#ffa500',
  685.         \ 'orange2': '#ee9a00',
  686.         \ 'orange3': '#cd8500',
  687.         \ 'orange4': '#8b5a00',
  688.         \ 'darkorange1': '#ff7f00',
  689.         \ 'darkorange2': '#ee7600',
  690.         \ 'darkorange3': '#cd6600',
  691.         \ 'darkorange4': '#8b4500',
  692.         \ 'coral1': '#ff7256',
  693.         \ 'coral2': '#ee6a50',
  694.         \ 'coral3': '#cd5b45',
  695.         \ 'coral4': '#8b3e2f',
  696.         \ 'tomato1': '#ff6347',
  697.         \ 'tomato2': '#ee5c42',
  698.         \ 'tomato3': '#cd4f39',
  699.         \ 'tomato4': '#8b3626',
  700.         \ 'orangered1': '#ff4500',
  701.         \ 'orangered2': '#ee4000',
  702.         \ 'orangered3': '#cd3700',
  703.         \ 'orangered4': '#8b2500',
  704.         \ 'light red': '#ff8b8b',
  705.         \ 'lightred': '#ff8b8b',
  706.         \ 'red1': '#ff0000',
  707.         \ 'red2': '#ee0000',
  708.         \ 'red3': '#cd0000',
  709.         \ 'red4': '#8b0000',
  710.         \ 'deeppink1': '#ff1493',
  711.         \ 'deeppink2': '#ee1289',
  712.         \ 'deeppink3': '#cd1076',
  713.         \ 'deeppink4': '#8b0a50',
  714.         \ 'hotpink1': '#ff6eb4',
  715.         \ 'hotpink2': '#ee6aa7',
  716.         \ 'hotpink3': '#cd6090',
  717.         \ 'hotpink4': '#8b3a62',
  718.         \ 'pink1': '#ffb5c5',
  719.         \ 'pink2': '#eea9b8',
  720.         \ 'pink3': '#cd919e',
  721.         \ 'pink4': '#8b636c',
  722.         \ 'lightpink1': '#ffaeb9',
  723.         \ 'lightpink2': '#eea2ad',
  724.         \ 'lightpink3': '#cd8c95',
  725.         \ 'lightpink4': '#8b5f65',
  726.         \ 'palevioletred1': '#ff82ab',
  727.         \ 'palevioletred2': '#ee799f',
  728.         \ 'palevioletred3': '#cd6889',
  729.         \ 'palevioletred4': '#8b475d',
  730.         \ 'maroon1': '#ff34b3',
  731.         \ 'maroon2': '#ee30a7',
  732.         \ 'maroon3': '#cd2990',
  733.         \ 'maroon4': '#8b1c62',
  734.         \ 'violetred1': '#ff3e96',
  735.         \ 'violetred2': '#ee3a8c',
  736.         \ 'violetred3': '#cd3278',
  737.         \ 'violetred4': '#8b2252',
  738.         \ 'light magenta': '#ff8bff',
  739.         \ 'lightmagenta': '#ff8bff',
  740.         \ 'magenta1': '#ff00ff',
  741.         \ 'magenta2': '#ee00ee',
  742.         \ 'magenta3': '#cd00cd',
  743.         \ 'magenta4': '#8b008b',
  744.         \ 'orchid1': '#ff83fa',
  745.         \ 'orchid2': '#ee7ae9',
  746.         \ 'orchid3': '#cd69c9',
  747.         \ 'orchid4': '#8b4789',
  748.         \ 'plum1': '#ffbbff',
  749.         \ 'plum2': '#eeaeee',
  750.         \ 'plum3': '#cd96cd',
  751.         \ 'plum4': '#8b668b',
  752.         \ 'mediumorchid1': '#e066ff',
  753.         \ 'mediumorchid2': '#d15fee',
  754.         \ 'mediumorchid3': '#b452cd',
  755.         \ 'mediumorchid4': '#7a378b',
  756.         \ 'darkorchid1': '#bf3eff',
  757.         \ 'darkorchid2': '#b23aee',
  758.         \ 'darkorchid3': '#9a32cd',
  759.         \ 'darkorchid4': '#68228b',
  760.         \ 'purple1': '#9b30ff',
  761.         \ 'purple2': '#912cee',
  762.         \ 'purple3': '#7d26cd',
  763.         \ 'purple4': '#551a8b',
  764.         \ 'mediumpurple1': '#ab82ff',
  765.         \ 'mediumpurple2': '#9f79ee',
  766.         \ 'mediumpurple3': '#8968cd',
  767.         \ 'mediumpurple4': '#5d478b',
  768.         \ 'thistle1': '#ffe1ff',
  769.         \ 'thistle2': '#eed2ee',
  770.         \ 'thistle3': '#cdb5cd',
  771.         \ 'thistle4': '#8b7b8b',
  772.         \ 'gray0': '#000000',
  773.         \ 'grey0': '#000000',
  774.         \ 'gray1': '#030303',
  775.         \ 'grey1': '#030303',
  776.         \ 'gray2': '#050505',
  777.         \ 'grey2': '#050505',
  778.         \ 'gray3': '#080808',
  779.         \ 'grey3': '#080808',
  780.         \ 'gray4': '#0a0a0a',
  781.         \ 'grey4': '#0a0a0a',
  782.         \ 'gray5': '#0d0d0d',
  783.         \ 'grey5': '#0d0d0d',
  784.         \ 'gray6': '#0f0f0f',
  785.         \ 'grey6': '#0f0f0f',
  786.         \ 'gray7': '#121212',
  787.         \ 'grey7': '#121212',
  788.         \ 'gray8': '#141414',
  789.         \ 'grey8': '#141414',
  790.         \ 'gray9': '#171717',
  791.         \ 'grey9': '#171717',
  792.         \ 'gray10': '#1a1a1a',
  793.         \ 'grey10': '#1a1a1a',
  794.         \ 'gray11': '#1c1c1c',
  795.         \ 'grey11': '#1c1c1c',
  796.         \ 'gray12': '#1f1f1f',
  797.         \ 'grey12': '#1f1f1f',
  798.         \ 'gray13': '#212121',
  799.         \ 'grey13': '#212121',
  800.         \ 'gray14': '#242424',
  801.         \ 'grey14': '#242424',
  802.         \ 'gray15': '#262626',
  803.         \ 'grey15': '#262626',
  804.         \ 'gray16': '#292929',
  805.         \ 'grey16': '#292929',
  806.         \ 'gray17': '#2b2b2b',
  807.         \ 'grey17': '#2b2b2b',
  808.         \ 'gray18': '#2e2e2e',
  809.         \ 'grey18': '#2e2e2e',
  810.         \ 'gray19': '#303030',
  811.         \ 'grey19': '#303030',
  812.         \ 'gray20': '#333333',
  813.         \ 'grey20': '#333333',
  814.         \ 'gray21': '#363636',
  815.         \ 'grey21': '#363636',
  816.         \ 'gray22': '#383838',
  817.         \ 'grey22': '#383838',
  818.         \ 'gray23': '#3b3b3b',
  819.         \ 'grey23': '#3b3b3b',
  820.         \ 'gray24': '#3d3d3d',
  821.         \ 'grey24': '#3d3d3d',
  822.         \ 'gray25': '#404040',
  823.         \ 'grey25': '#404040',
  824.         \ 'gray26': '#424242',
  825.         \ 'grey26': '#424242',
  826.         \ 'gray27': '#454545',
  827.         \ 'grey27': '#454545',
  828.         \ 'gray28': '#474747',
  829.         \ 'grey28': '#474747',
  830.         \ 'gray29': '#4a4a4a',
  831.         \ 'grey29': '#4a4a4a',
  832.         \ 'gray30': '#4d4d4d',
  833.         \ 'grey30': '#4d4d4d',
  834.         \ 'gray31': '#4f4f4f',
  835.         \ 'grey31': '#4f4f4f',
  836.         \ 'gray32': '#525252',
  837.         \ 'grey32': '#525252',
  838.         \ 'gray33': '#545454',
  839.         \ 'grey33': '#545454',
  840.         \ 'gray34': '#575757',
  841.         \ 'grey34': '#575757',
  842.         \ 'gray35': '#595959',
  843.         \ 'grey35': '#595959',
  844.         \ 'gray36': '#5c5c5c',
  845.         \ 'grey36': '#5c5c5c',
  846.         \ 'gray37': '#5e5e5e',
  847.         \ 'grey37': '#5e5e5e',
  848.         \ 'gray38': '#616161',
  849.         \ 'grey38': '#616161',
  850.         \ 'gray39': '#636363',
  851.         \ 'grey39': '#636363',
  852.         \ 'gray40': '#666666',
  853.         \ 'grey40': '#666666',
  854.         \ 'gray41': '#696969',
  855.         \ 'grey41': '#696969',
  856.         \ 'gray42': '#6b6b6b',
  857.         \ 'grey42': '#6b6b6b',
  858.         \ 'gray43': '#6e6e6e',
  859.         \ 'grey43': '#6e6e6e',
  860.         \ 'gray44': '#707070',
  861.         \ 'grey44': '#707070',
  862.         \ 'gray45': '#737373',
  863.         \ 'grey45': '#737373',
  864.         \ 'gray46': '#757575',
  865.         \ 'grey46': '#757575',
  866.         \ 'gray47': '#787878',
  867.         \ 'grey47': '#787878',
  868.         \ 'gray48': '#7a7a7a',
  869.         \ 'grey48': '#7a7a7a',
  870.         \ 'gray49': '#7d7d7d',
  871.         \ 'grey49': '#7d7d7d',
  872.         \ 'gray50': '#7f7f7f',
  873.         \ 'grey50': '#7f7f7f',
  874.         \ 'gray51': '#828282',
  875.         \ 'grey51': '#828282',
  876.         \ 'gray52': '#858585',
  877.         \ 'grey52': '#858585',
  878.         \ 'gray53': '#878787',
  879.         \ 'grey53': '#878787',
  880.         \ 'gray54': '#8a8a8a',
  881.         \ 'grey54': '#8a8a8a',
  882.         \ 'gray55': '#8c8c8c',
  883.         \ 'grey55': '#8c8c8c',
  884.         \ 'gray56': '#8f8f8f',
  885.         \ 'grey56': '#8f8f8f',
  886.         \ 'gray57': '#919191',
  887.         \ 'grey57': '#919191',
  888.         \ 'gray58': '#949494',
  889.         \ 'grey58': '#949494',
  890.         \ 'gray59': '#969696',
  891.         \ 'grey59': '#969696',
  892.         \ 'gray60': '#999999',
  893.         \ 'grey60': '#999999',
  894.         \ 'gray61': '#9c9c9c',
  895.         \ 'grey61': '#9c9c9c',
  896.         \ 'gray62': '#9e9e9e',
  897.         \ 'grey62': '#9e9e9e',
  898.         \ 'gray63': '#a1a1a1',
  899.         \ 'grey63': '#a1a1a1',
  900.         \ 'gray64': '#a3a3a3',
  901.         \ 'grey64': '#a3a3a3',
  902.         \ 'gray65': '#a6a6a6',
  903.         \ 'grey65': '#a6a6a6',
  904.         \ 'gray66': '#a8a8a8',
  905.         \ 'grey66': '#a8a8a8',
  906.         \ 'gray67': '#ababab',
  907.         \ 'grey67': '#ababab',
  908.         \ 'gray68': '#adadad',
  909.         \ 'grey68': '#adadad',
  910.         \ 'gray69': '#b0b0b0',
  911.         \ 'grey69': '#b0b0b0',
  912.         \ 'gray70': '#b3b3b3',
  913.         \ 'grey70': '#b3b3b3',
  914.         \ 'gray71': '#b5b5b5',
  915.         \ 'grey71': '#b5b5b5',
  916.         \ 'gray72': '#b8b8b8',
  917.         \ 'grey72': '#b8b8b8',
  918.         \ 'gray73': '#bababa',
  919.         \ 'grey73': '#bababa',
  920.         \ 'gray74': '#bdbdbd',
  921.         \ 'grey74': '#bdbdbd',
  922.         \ 'gray75': '#bfbfbf',
  923.         \ 'grey75': '#bfbfbf',
  924.         \ 'gray76': '#c2c2c2',
  925.         \ 'grey76': '#c2c2c2',
  926.         \ 'gray77': '#c4c4c4',
  927.         \ 'grey77': '#c4c4c4',
  928.         \ 'gray78': '#c7c7c7',
  929.         \ 'grey78': '#c7c7c7',
  930.         \ 'gray79': '#c9c9c9',
  931.         \ 'grey79': '#c9c9c9',
  932.         \ 'gray80': '#cccccc',
  933.         \ 'grey80': '#cccccc',
  934.         \ 'gray81': '#cfcfcf',
  935.         \ 'grey81': '#cfcfcf',
  936.         \ 'gray82': '#d1d1d1',
  937.         \ 'grey82': '#d1d1d1',
  938.         \ 'gray83': '#d4d4d4',
  939.         \ 'grey83': '#d4d4d4',
  940.         \ 'gray84': '#d6d6d6',
  941.         \ 'grey84': '#d6d6d6',
  942.         \ 'gray85': '#d9d9d9',
  943.         \ 'grey85': '#d9d9d9',
  944.         \ 'gray86': '#dbdbdb',
  945.         \ 'grey86': '#dbdbdb',
  946.         \ 'gray87': '#dedede',
  947.         \ 'grey87': '#dedede',
  948.         \ 'gray88': '#e0e0e0',
  949.         \ 'grey88': '#e0e0e0',
  950.         \ 'gray89': '#e3e3e3',
  951.         \ 'grey89': '#e3e3e3',
  952.         \ 'gray90': '#e5e5e5',
  953.         \ 'grey90': '#e5e5e5',
  954.         \ 'gray91': '#e8e8e8',
  955.         \ 'grey91': '#e8e8e8',
  956.         \ 'gray92': '#ebebeb',
  957.         \ 'grey92': '#ebebeb',
  958.         \ 'gray93': '#ededed',
  959.         \ 'grey93': '#ededed',
  960.         \ 'gray94': '#f0f0f0',
  961.         \ 'grey94': '#f0f0f0',
  962.         \ 'gray95': '#f2f2f2',
  963.         \ 'grey95': '#f2f2f2',
  964.         \ 'gray96': '#f5f5f5',
  965.         \ 'grey96': '#f5f5f5',
  966.         \ 'gray97': '#f7f7f7',
  967.         \ 'grey97': '#f7f7f7',
  968.         \ 'gray98': '#fafafa',
  969.         \ 'grey98': '#fafafa',
  970.         \ 'gray99': '#fcfcfc',
  971.         \ 'grey99': '#fcfcfc',
  972.         \ 'gray100': '#ffffff',
  973.         \ 'grey100': '#ffffff',
  974.         \ 'dark grey': '#a9a9a9',
  975.         \ 'darkgrey': '#a9a9a9',
  976.         \ 'dark gray': '#a9a9a9',
  977.         \ 'darkgray': '#a9a9a9',
  978.         \ 'dark blue': '#00008b',
  979.         \ 'darkblue': '#00008b',
  980.         \ 'dark cyan': '#008b8b',
  981.         \ 'darkcyan': '#008b8b',
  982.         \ 'dark magenta': '#8b008b',
  983.         \ 'darkmagenta': '#8b008b',
  984.         \ 'dark red': '#8b0000',
  985.         \ 'darkred': '#8b0000',
  986.         \ 'light green': '#90ee90',
  987.         \ 'lightgreen': '#90ee90',
  988.         \ 'crimson': '#dc143c',
  989.         \ 'indigo': '#4b0082',
  990.         \ 'olive': '#808000',
  991.         \ 'rebecca purple': '#663399',
  992.         \ 'rebeccapurple': '#663399',
  993.         \ 'silver': '#c0c0c0',
  994.         \ 'teal': '#008080'
  995.         \ }
  996.     call s:AddColors(s:default_cnames)
  997.  
  998.     " SOURCE: https://github.com/nshern/neovim-default-colorscheme-extras
  999.     " SOURCE: https://github.com/neovim/neovim/blob/master/src/nvim/highlight_group.c
  1000.     let s:nvim_cnames = {
  1001.         \ 'NvimDarkBlue': '#004c63',
  1002.         \ 'NvimDarkCyan': '#007373',
  1003.         \ 'NvimDarkGreen': '#005523',
  1004.         \ 'NvimDarkGrey1': '#07080D',
  1005.         \ 'NvimDarkGrey2': '#14161B',
  1006.         \ 'NvimDarkGrey3': '#2c2e33',
  1007.         \ 'NvimDarkGrey4': '#4f5258',
  1008.         \ 'NvimDarkMagenta': '#470045',
  1009.         \ 'NvimDarkRed': '#590008',
  1010.         \ 'NvimDarkYellow': '#6b5300',
  1011.         \ 'NvimLightBlue': '#A6DBFF',
  1012.         \ 'NvimLightCyan': '#8cf8f7',
  1013.         \ 'NvimLightGreen': '#b4f6c0',
  1014.         \ 'NvimLightGrey1': '#EEF1F8',
  1015.         \ 'NvimLightGrey2': '#E0E2EA',
  1016.         \ 'NvimLightGrey3': '#C4C6CD',
  1017.         \ 'NvimLightGrey4': '#9b9ea4',
  1018.         \ 'NvimLightMagenta': '#FFCAFF',
  1019.         \ 'NvimLightRed': '#FFC0B9',
  1020.         \ 'NvimLightYellow': '#FCE094',
  1021.         \ }
  1022.     call s:AddColors(s:nvim_cnames)
  1023. endif
  1024.  
  1025. let g:colorschemes = sort(getcompletion('', 'color'), 'i') " SOURCE: https://stackoverflow.com/a/63059578
  1026. let g:current_colorscheme_index = 0
  1027.  
  1028. augroup colorscheme
  1029.     autocmd!
  1030.     " Triggered every time a color scheme is applied or cleared.
  1031.     " Is needed to keep the colorscheme index in sync with the current theme, which can be changed either through the menu bar or :colorscheme command.
  1032.     autocmd ColorScheme * call SyncColorSchemeIndex(expand('<amatch>'))
  1033. augroup END
  1034.  
  1035. function! SyncColorSchemeIndex(colorscheme)
  1036.     if empty(a:colorscheme)
  1037.         let g:current_colorscheme_index = 0
  1038.     else
  1039.         " Case-insensitive search for the index of the currently applied color scheme.
  1040.         let g:current_colorscheme_index = index(g:colorschemes, a:colorscheme, 0, v:true)
  1041.         if g:current_colorscheme_index == -1
  1042.             let g:current_colorscheme_index = 0
  1043.         endif
  1044.     endif
  1045. endfunction
  1046.  
  1047. function! CycleColorSchemes(direction, desired_bg = 'dark')
  1048.     let l:brightness_threshold = 128
  1049.     for l:attempts in range(len(g:colorschemes))
  1050.         let l:new_index = (g:current_colorscheme_index + a:direction + len(g:colorschemes)) % len(g:colorschemes)
  1051.         call ApplyColorscheme(g:colorschemes[l:new_index])
  1052.         let g:current_colorscheme_index = l:new_index
  1053.  
  1054.         " Get the background color.
  1055.         let l:normal_guibg = synIDattr(hlID('Normal'), 'bg')
  1056.  
  1057.         let l:brightness = GetBrightness(l:normal_guibg)
  1058.         if (a:desired_bg ==? 'bright' && l:brightness >= l:brightness_threshold) || (a:desired_bg ==? 'dark' && l:brightness < l:brightness_threshold)
  1059.             redraw | echomsg g:colorschemes[g:current_colorscheme_index]
  1060.             return
  1061.         endif
  1062.     endfor
  1063.     redraw | echomsg 'No color scheme found with a ' . a:desired_bg . ' color.'
  1064. endfunction
  1065.  
  1066. function! GetBrightness(color)
  1067.     if a:color == '' || a:color == v:null
  1068.         " Treat undefined colors as bright.
  1069.         return 255
  1070.     endif
  1071.  
  1072.     " If v:colornames doesn't exist (i.e. nvim) then use g:colornames dictionary.
  1073.     let l:color_names = get(v:, 'colornames', g:colornames)
  1074.  
  1075.     " If color is defined in C:\Program Files\Vim\vim91\colors\lists\ then get its hex value.
  1076.     let l:color = get(l:color_names, tolower(a:color), a:color)
  1077.  
  1078.     " Ensure the color is a valid hex triplet with a leading '#'.
  1079.     if l:color !~? '\v^#[0-9a-fA-F]{6}$'
  1080.         throw 'Invalid hex color: "' . l:color . '"'
  1081.     endif
  1082.  
  1083.     " Extract the red, green, and blue components.
  1084.     let l:r = str2nr(l:color[1:2], 16)
  1085.     let l:g = str2nr(l:color[3:4], 16)
  1086.     let l:b = str2nr(l:color[5:6], 16)
  1087.  
  1088.     " Rec. 709 luminance formula.
  1089.     " SOURCE: https://en.wikipedia.org/wiki/Rec._709
  1090.     return 0.2126 * l:r + 0.7152 * l:g + 0.0722 * l:b
  1091. endfunction
  1092.  
  1093. function! ApplyColorscheme(name)
  1094.     call ResetColorScheme()
  1095.  
  1096.     if !has('neovim')
  1097.         exec 'noautocmd colorscheme ' . a:name
  1098.         return
  1099.     endif
  1100.  
  1101.     " SOURCE: https://www.reddit.com/r/neovim/comments/1jd7wwn/neovim_011_is_getting_closer_to_release/
  1102.     " SOURCE: https://github.com/neovim/neovim/milestone/41
  1103.     " Need to perform ':colorscheme vim' after ':hl clear' because neovim developers decided to break the legacy default colorschemes of vim (thereby breaking thousands of pre-existing vim colorschemes) for no reason.
  1104.  
  1105.     let l:original = FindColorschemePath(a:name)
  1106.  
  1107.     " Open a scratch buffer.
  1108.     enew
  1109.     setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile
  1110.     silent execute 'read ' . fnameescape(l:original)
  1111.     normal! gg
  1112.  
  1113.     " Look for 'hi clear' and insert 'colorscheme vim' after it.
  1114.     let l:found = search('^\s*hi\s\+clear', 'nw')
  1115.     if l:found
  1116.         call append(l:found, 'colorscheme vim')
  1117.     endif
  1118.  
  1119.     " Save to a temporary file.
  1120.     let l:tempfile = tempname() . '.vim'
  1121.     silent execute 'write! ' . fnameescape(l:tempfile)
  1122.  
  1123.     try
  1124.         " Source the modified colorscheme.
  1125.         execute 'source ' . fnameescape(l:tempfile)
  1126.     finally
  1127.         " Clean up: close the buffer and delete the temp file.
  1128.         bwipeout!
  1129.         call delete(l:tempfile)
  1130.     endtry
  1131. endfunction
  1132.  
  1133. function! ResetColorScheme()
  1134.     " SOURCE: https://www.reddit.com/r/vim/comments/5pwohr/comment/dcugrge/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button
  1135.     " Added noautocmd because these commands were triggering the ColorScheme autocommand which was causing the index to be altered.
  1136.     noautocmd set background=dark
  1137.     noautocmd hi clear
  1138.     if exists('syntax_on')
  1139.         noautocmd syntax reset
  1140.     endif
  1141.  
  1142.     " This color scheme won't re-apply without a little persuasion: %USERPROFILE%\vimfiles\plugged\vim-monotone\colors\monotone.vim
  1143.     if exists('g:loaded_monotone')
  1144.         unlet g:loaded_monotone
  1145.     endif
  1146. endfunction
  1147.  
  1148. " Search through runtimepath for the colorscheme file.
  1149. " This will find it even if its a vim-plug download.
  1150. function! FindColorschemePath(colorscheme_name)
  1151.     let l:files = globpath(&runtimepath, 'colors/' . a:colorscheme_name . '.vim', 1, 1)
  1152.     if empty(l:files)
  1153.         throw 'Colorscheme not found: ' . a:colorscheme_name
  1154.     endif
  1155.     return l:files[0]
  1156. endfunction
  1157.  
  1158. " Cycle through schemes with dark backgrounds.
  1159. nnoremap <silent> <A-ScrollWheelDown> :<C-u>call CycleColorSchemes(1, 'dark')<CR>
  1160. inoremap <silent> <A-ScrollWheelDown> <Esc>:<C-u>call CycleColorSchemes(1, 'dark')<CR>
  1161. vnoremap <silent> <A-ScrollWheelDown> <Esc>:<C-u>call CycleColorSchemes(1, 'dark')<CR>
  1162. cnoremap <silent> <A-ScrollWheelDown> <Esc>:<C-u>call CycleColorSchemes(1, 'dark')<CR>
  1163. onoremap <silent> <A-ScrollWheelDown> <Esc>:<C-u>call CycleColorSchemes(1, 'dark')<CR>
  1164.  
  1165. nnoremap <silent> <A-ScrollWheelUp> :<C-u>call CycleColorSchemes(-1, 'dark')<CR>
  1166. inoremap <silent> <A-ScrollWheelUp> <Esc>:<C-u>call CycleColorSchemes(-1, 'dark')<CR>
  1167. vnoremap <silent> <A-ScrollWheelUp> <Esc>:<C-u>call CycleColorSchemes(-1, 'dark')<CR>
  1168. cnoremap <silent> <A-ScrollWheelUp> <Esc>:<C-u>call CycleColorSchemes(-1, 'dark')<CR>
  1169. onoremap <silent> <A-ScrollWheelUp> <Esc>:<C-u>call CycleColorSchemes(-1, 'dark')<CR>
  1170.  
  1171. " Cycle through schemes with bright backgrounds.
  1172. nnoremap <silent> <S-A-ScrollWheelDown> :<C-u>call CycleColorSchemes(1, 'bright')<CR>
  1173. inoremap <silent> <S-A-ScrollWheelDown> <Esc>:<C-u>call CycleColorSchemes(1, 'bright')<CR>
  1174. vnoremap <silent> <S-A-ScrollWheelDown> <Esc>:<C-u>call CycleColorSchemes(1, 'bright')<CR>
  1175. cnoremap <silent> <S-A-ScrollWheelDown> <Esc>:<C-u>call CycleColorSchemes(1, 'bright')<CR>
  1176. onoremap <silent> <S-A-ScrollWheelDown> <Esc>:<C-u>call CycleColorSchemes(1, 'bright')<CR>
  1177.  
  1178. nnoremap <silent> <S-A-ScrollWheelUp> :<C-u>call CycleColorSchemes(-1, 'bright')<CR>
  1179. inoremap <silent> <S-A-ScrollWheelUp> <Esc>:<C-u>call CycleColorSchemes(-1, 'bright')<CR>
  1180. vnoremap <silent> <S-A-ScrollWheelUp> <Esc>:<C-u>call CycleColorSchemes(-1, 'bright')<CR>
  1181. cnoremap <silent> <S-A-ScrollWheelUp> <Esc>:<C-u>call CycleColorSchemes(-1, 'bright')<CR>
  1182. onoremap <silent> <S-A-ScrollWheelUp> <Esc>:<C-u>call CycleColorSchemes(-1, 'bright')<CR>
  1183.  
  1184. " }}} Bind Alt + MouseWheel to cycle through color schemes
  1185.  
  1186. " ColorSchemes {{{
  1187.  
  1188. " SOURCE: https://github.com/rafi/awesome-vim-colorschemes
  1189.  
  1190. Plug 'rafi/awesome-vim-colorschemes'
  1191. Plug 'rainglow/vim'
  1192. Plug 'chriskempson/base16-vim'
  1193. Plug 'mswift42/vim-themes'
  1194. Plug 'mkarmona/colorsbox'
  1195.  
  1196. " SOURCE: https://github.com/mcchrish/vim-no-color-collections
  1197.  
  1198. Plug 'andreasvc/vim-256noir'
  1199. Plug 'Alligator/accent.vim'
  1200. Plug 'plan9-for-vimspace/acme-colors'
  1201. Plug 'huyvohcmc/atlas.vim'
  1202. Plug 'LuRsT/austere.vim'
  1203. Plug 'chriskempson/base16-vim'
  1204. Plug 't184256/vim-boring'
  1205. Plug '~romainl/vim-bruin'
  1206. Plug 'aditya-azad/candle-grey'
  1207. Plug 'ntk148v/komau.vim'
  1208. Plug 'davidosomething/vim-colors-meh'
  1209. Plug 'pbrisbin/vim-colors-off'
  1210. Plug 'andreypopp/vim-colors-plain'
  1211. Plug 'owickstrom/vim-colors-paramount'
  1212. Plug 'reedes/vim-colors-pencil'
  1213. Plug 'Jorengarenar/vim-darkness'
  1214. Plug 'KKPMW/distilled-vim'
  1215. Plug 'jaredgorski/fogbell.vim'
  1216. Plug 'zekzekus/menguless'
  1217. Plug 'jaredgorski/Mies.vim'
  1218. Plug 'fxn/vim-monochrome'
  1219. Plug 'koron/vim-monochromenote'
  1220. Plug 'Lokaltog/vim-monotone'
  1221. Plug 'robertmeta/nofrils'
  1222. Plug 'n1ghtmare/noirblaze-vim'
  1223. Plug 'YorickPeterse/vim-paper'
  1224. Plug 'ajgrf/parchment'
  1225. Plug 'widatama/vim-phoenix'
  1226. Plug 'axvr/photon.vim'
  1227. Plug 'ewilazarus/preto'
  1228. Plug 'stefanvanburen/rams.vim'
  1229. Plug 'kadekillary/skull-vim'
  1230. Plug 'nikolvs/vim-sunbather'
  1231. Plug 'ryanpcmcquen/true-monochrome_vim'
  1232. Plug 'hardselius/warlock'
  1233. Plug 'pgdouyon/vim-yin-yang'
  1234. Plug 'danishprakash/vim-yami'
  1235. Plug 'cideM/yui'
  1236. Plug 'zaki/zazen'
  1237. Plug 'mcchrish/zenbones.nvim'
  1238. Plug 'vim-scripts/zenesque.vim'
  1239.  
  1240. " }}} ColorSchemes
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement