From 5e4e74763c54aa4941c91479ed7ee2946ea65439 Mon Sep 17 00:00:00 2001 From: Chayoung You Date: Wed, 27 Mar 2019 16:41:15 +0900 Subject: [PATCH] Rewrite s:Hi() for convenience --- colors/open-color.vim | 168 +++++++++++++++++++++--------------------- 1 file changed, 84 insertions(+), 84 deletions(-) diff --git a/colors/open-color.vim b/colors/open-color.vim index 82ba43d..080fe22 100644 --- a/colors/open-color.vim +++ b/colors/open-color.vim @@ -10,94 +10,104 @@ set cpoptions&vim let s:background = &background -function! s:Hi(item, fg, bg) +function! s:Hi(item, fg, bg, ...) + if empty(a:fg) && empty(a:bg) && a:0 == 0 + return + endif + let l:hi = printf('highlight %s', a:item) if !empty(a:fg) - if a:fg !=# 'NONE' - let l:fg_256 = s:rgb_map[a:fg] - let l:fg_gui = printf('#%s', a:fg) - else - let l:fg_256 = a:fg + if type(a:fg) == type('') let l:fg_gui = a:fg + let l:fg_256 = a:fg + else + let l:fg_gui = a:fg[0] + let l:fg_256 = a:fg[1] endif - execute printf('highlight %s ctermfg=%s guifg=%s', - \ a:item, l:fg_256, l:fg_gui) + let l:hi = printf('%s ctermfg=%s guifg=%s', l:hi, l:fg_256, l:fg_gui) endif if !empty(a:bg) - if a:bg !=# 'NONE' - let l:bg_256 = s:rgb_map[a:bg] - let l:bg_gui = printf('#%s', a:bg) - else - let l:bg_256 = a:bg + if type(a:fg) == type('') let l:bg_gui = a:bg + let l:bg_256 = a:bg + else + let l:bg_gui = a:bg[0] + let l:bg_256 = a:bg[1] endif - execute printf('highlight %s ctermbg=%s guibg=%s', - \ a:item, l:bg_256, l:bg_gui) + let l:hi = printf('%s ctermbg=%s guibg=%s', l:hi, l:bg_256, l:bg_gui) + endif + if a:0 > 0 + let l:hi .= ' ' . a:1 endif + execute l:hi endfunction -if !exists('s:rgb_map') +if !exists('s:oc') let s:oc = {} let s:oc['gray'] = [ - \ 'f8f9fa', 'f1f3f5', 'e9ecef', 'dee2e6', 'ced4da', - \ 'adb5bd', '868e96', '495057', '343a40', '212529'] + \ ['#f8f9fa', 15], ['#f1f3f5', 255], ['#e9ecef', 255], + \ ['#dee2e6', 254], ['#ced4da', 252], ['#adb5bd', 249], + \ ['#868e96', 245], ['#495057', 239], ['#343a40', 237], + \ ['#212529', 235]] let s:oc['red'] = [ - \ 'fff5f5', 'ffe3e3', 'ffc9c9', 'ffa8a8', 'ff8787', - \ 'ff6b6b', 'fa5252', 'f03e3e', 'e03131', 'c92a2a'] + \ ['#fff5f5', 15], ['#ffe3e3', 224], ['#ffc9c9', 224], + \ ['#ffa8a8', 217], ['#ff8787', 210], ['#ff6b6b', 203], + \ ['#fa5252', 203], ['#f03e3e', 167], ['#e03131', 160], + \ ['#c92a2a', 160]] let s:oc['pink'] = [ - \ 'fff0f6', 'ffdeeb', 'fcc2d7', 'faa2c1', 'f783ac', - \ 'f06595', 'e64980', 'd6336c', 'c2255c', 'a61e4d'] + \ ['#fff0f6', 255], ['#ffdeeb', 224], ['#fcc2d7', 218], + \ ['#faa2c1', 218], ['#f783ac', 211], ['#f06595', 204], + \ ['#e64980', 168], ['#d6336c', 161], ['#c2255c', 161], + \ ['#a61e4d', 125]] let s:oc['grape'] = [ - \ 'f8f0fc', 'f3d9fa', 'eebefa', 'e599f7', 'da77f2', - \ 'cc5de8', 'be4bdb', 'ae3ec9', '9c36b5', '862e9c'] + \ ['#f8f0fc', 255], ['#f3d9fa', 225], ['#eebefa', 219], + \ ['#e599f7', 213], ['#da77f2', 177], ['#cc5de8', 171], + \ ['#be4bdb', 134], ['#ae3ec9', 128], ['#9c36b5', 127], + \ ['#862e9c', 91]] let s:oc['violet'] = [ - \ 'f3f0ff', 'e5dbff', 'd0bfff', 'b197fc', '9775fa', - \ '845ef7', '7950f2', '7048e8', '6741d9', '5f3dc4'] + \ ['#f3f0ff', 255], ['#e5dbff', 189], ['#d0bfff', 183], + \ ['#b197fc', 141], ['#9775fa', 141], ['#845ef7', 99], + \ ['#7950f2', 99], ['#7048e8', 62], ['#6741d9', 57], + \ ['#5f3dc4', 56]] let s:oc['indigo'] = [ - \ 'edf2ff', 'dbe4ff', 'bac8ff', '91a7ff', '748ffc', - \ '5c7cfa', '4c6ef5', '4263eb', '3b5bdb', '364fc7'] + \ ['#edf2ff', 255], ['#dbe4ff', 189], ['#bac8ff', 147], + \ ['#91a7ff', 111], ['#748ffc', 69], ['#5c7cfa', 69], + \ ['#4c6ef5', 27], ['#4263eb', 27], ['#3b5bdb', 27], + \ ['#364fc7', 26]] let s:oc['blue'] = [ - \ 'e8f7ff', 'ccedff', 'a3daff', '72c3fc', '4dadf7', - \ '329af0', '228ae6', '1c7cd6', '1b6ec2', '1862ab'] + \ ['#e8f7ff', 255], ['#ccedff', 153], ['#a3daff', 153], + \ ['#72c3fc', 75], ['#4dadf7', 75], ['#329af0', 75], + \ ['#228ae6', 32], ['#1c7cd6', 32], ['#1b6ec2', 25], + \ ['#1862ab', 25]] let s:oc['cyan'] = [ - \ 'e3fafc', 'c5f6fa', '99e9f2', '66d9e8', '3bc9db', - \ '22b8cf', '15aabf', '1098ad', '0c8599', '0b7285'] + \ ['#e3fafc', 195], ['#c5f6fa', 195], ['#99e9f2', 116], + \ ['#66d9e8', 80], ['#3bc9db', 45], ['#22b8cf', 38], + \ ['#15aabf', 38], ['#1098ad', 31], ['#0c8599', 31], + \ ['#0b7285', 6]] let s:oc['teal'] = [ - \ 'e6fcf5', 'c3fae8', '96f2d7', '63e6be', '38d9a9', - \ '20c997', '12b886', '0ca678', '099268', '087f5b'] + \ ['#e6fcf5', 195], ['#c3fae8', 158], ['#96f2d7', 122], + \ ['#63e6be', 79], ['#38d9a9', 43], ['#20c997', 43], + \ ['#12b886', 36], ['#0ca678', 36], ['#099268', 29], + \ ['#087f5b', 29]] let s:oc['green'] = [ - \ 'ebfbee', 'd3f9d8', 'b2f2bb', '8ce99a', '69db7c', - \ '51cf66', '40c057', '37b24d', '2f9e44', '2b8a3e'] + \ ['#ebfbee', 195], ['#d3f9d8', 194], ['#b2f2bb', 157], + \ ['#8ce99a', 114], ['#69db7c', 78], ['#51cf66', 77], + \ ['#40c057', 71], ['#37b24d', 71], ['#2f9e44', 35], + \ ['#2b8a3e', 28]] let s:oc['lime'] = [ - \ 'f4fce3', 'e9fac8', 'd8f5a2', 'c0eb75', 'a9e34b', - \ '94d82d', '82c91e', '74b816', '66a80f', '5c940d'] + \ ['#f4fce3', 230], ['#e9fac8', 230], ['#d8f5a2', 193], + \ ['#c0eb75', 192], ['#a9e34b', 149], ['#94d82d', 112], + \ ['#82c91e', 112], ['#74b816', 70], ['#66a80f', 70], + \ ['#5c940d', 64]] let s:oc['yellow'] = [ - \ 'fff9db', 'fff3bf', 'ffec99', 'ffe066', 'ffd43b', - \ 'fcc419', 'fab005', 'f59f00', 'f08c00', 'e67700'] + \ ['#fff9db', 230], ['#fff3bf', 230], ['#ffec99', 229], + \ ['#ffe066', 221], ['#ffd43b', 220], ['#fcc419', 220], + \ ['#fab005', 214], ['#f59f00', 214], ['#f08c00', 208], + \ ['#e67700', 208]] let s:oc['orange'] = [ - \ 'fff4e6', 'ffe8cc', 'ffd8a8', 'ffc078', 'ffa94d', - \ 'ff922b', 'fd7e14', 'f76707', 'e8590c', 'd9480f'] - - let s:oc_256 = { - \ 'gray': [15, 255, 255, 254, 252, 249, 245, 239, 237, 235], - \ 'red': [15, 224, 224, 217, 210, 203, 203, 167, 160, 160], - \ 'pink': [255, 224, 218, 218, 211, 204, 168, 161, 161, 125], - \ 'grape': [255, 225, 219, 213, 177, 171, 134, 128, 127, 91], - \ 'violet': [255, 189, 183, 141, 141, 99, 99, 62, 57, 56], - \ 'indigo': [255, 189, 147, 111, 69, 69, 27, 27, 27, 26], - \ 'blue': [255, 153, 153, 75, 75, 75, 32, 32, 25, 25], - \ 'cyan': [195, 195, 116, 80, 45, 38, 38, 31, 31, 6], - \ 'teal': [195, 158, 122, 79, 43, 43, 36, 36, 29, 29], - \ 'green': [195, 194, 157, 114, 78, 77, 71, 71, 35, 28], - \ 'lime': [230, 230, 193, 192, 149, 112, 112, 70, 70, 64], - \ 'yellow': [230, 230, 229, 221, 220, 220, 214, 214, 208, 208], - \ 'orange': [255, 223, 223, 215, 215, 208, 208, 202, 166, 166] } - - let s:rgb_map = {} - for s:color in keys(s:oc) - for s:number in range(len(s:oc[s:color])) - let s:rgb_map[s:oc[s:color][s:number]] = s:oc_256[s:color][s:number] - endfor - endfor + \ ['#fff4e6', 255], ['#ffe8cc', 223], ['#ffd8a8', 223], + \ ['#ffc078', 215], ['#ffa94d', 215], ['#ff922b', 208], + \ ['#fd7e14', 208], ['#f76707', 202], ['#e8590c', 166], + \ ['#d9480f', 166]] endif highlight clear @@ -126,8 +136,7 @@ if has('gui_running') || &t_Co == 88 || &t_Co == 256 call s:Hi('Float', s:oc['orange'][4], '') " Identifier - call s:Hi('Identifier', s:oc['yellow'][2], '') - highlight Identifier gui=bold + call s:Hi('Identifier', s:oc['yellow'][2], '', 'gui=bold') " Statement call s:Hi('Statement', s:oc['violet'][2], '') @@ -159,12 +168,10 @@ if has('gui_running') || &t_Co == 88 || &t_Co == 256 call s:Hi('Cursor', s:oc['gray'][9], s:oc['gray'][2]) " set cursorline - call s:Hi('CursorLine', '', s:oc['gray'][8]) - call s:Hi('CursorLineNr', s:oc['yellow'][2], s:oc['gray'][8]) + call s:Hi('CursorLine', '', s:oc['gray'][8], 'cterm=NONE') + call s:Hi('CursorLineNr', s:oc['yellow'][2], s:oc['gray'][8], 'cterm=NONE') " set cursorcolumn call s:Hi('CursorColumn', '', s:oc['gray'][8]) - highlight CursorLine cterm=NONE - highlight CursorLineNr cterm=NONE call s:Hi('Directory', s:oc['indigo'][3], '') @@ -211,11 +218,9 @@ if has('gui_running') || &t_Co == 88 || &t_Co == 256 call s:Hi('StatusLine', s:oc['gray'][8], s:oc['lime'][4]) call s:Hi('StatusLineNC', s:oc['gray'][8], s:oc['gray'][6]) call s:Hi('TabLineFill', s:oc['gray'][7], '') - call s:Hi('TabLineSel', s:oc['gray'][2], s:oc['gray'][6]) - call s:Hi('TabLine', s:oc['gray'][6], s:oc['gray'][8]) + call s:Hi('TabLineSel', s:oc['gray'][2], s:oc['gray'][6], 'cterm=NONE') + call s:Hi('TabLine', s:oc['gray'][6], s:oc['gray'][8], 'cterm=NONE') call s:Hi('WildMenu', s:oc['gray'][9], s:oc['lime'][4]) - highlight TabLineSel cterm=NONE - highlight TabLine cterm=NONE " :set all call s:Hi('Title', s:oc['indigo'][3], '') @@ -255,8 +260,7 @@ if has('gui_running') || &t_Co == 88 || &t_Co == 256 call s:Hi('Float', s:oc['orange'][8], '') " Identifier - call s:Hi('Identifier', s:oc['yellow'][7], '') - highlight Identifier cterm=bold gui=bold + call s:Hi('Identifier', s:oc['yellow'][7], '', 'cterm=bold gui=bold') " Statement call s:Hi('Statement', s:oc['violet'][6], '') @@ -288,12 +292,10 @@ if has('gui_running') || &t_Co == 88 || &t_Co == 256 call s:Hi('Cursor', s:oc['gray'][1], s:oc['gray'][5]) " set cursorline - call s:Hi('CursorLine', '', s:oc['gray'][0]) - call s:Hi('CursorLineNr', s:oc['yellow'][7], s:oc['gray'][0]) + call s:Hi('CursorLine', '', s:oc['gray'][0], 'cterm=NONE') + call s:Hi('CursorLineNr', s:oc['yellow'][7], s:oc['gray'][0], 'cterm=NONE') " set cursorcolumn call s:Hi('CursorColumn', '', s:oc['gray'][0]) - highlight CursorLine cterm=NONE - highlight CursorLineNr cterm=NONE call s:Hi('Directory', s:oc['indigo'][5], '') @@ -340,11 +342,9 @@ if has('gui_running') || &t_Co == 88 || &t_Co == 256 call s:Hi('StatusLine', s:oc['gray'][4], s:oc['lime'][8]) call s:Hi('StatusLineNC', s:oc['gray'][4], s:oc['gray'][6]) call s:Hi('TabLineFill', s:oc['gray'][4], '') - call s:Hi('TabLineSel', s:oc['gray'][1], s:oc['gray'][6]) - call s:Hi('TabLine', s:oc['gray'][6], s:oc['gray'][2]) + call s:Hi('TabLineSel', s:oc['gray'][1], s:oc['gray'][6], 'cterm=NONE') + call s:Hi('TabLine', s:oc['gray'][6], s:oc['gray'][2], 'cterm=NONE') call s:Hi('WildMenu', s:oc['gray'][1], s:oc['lime'][8]) - highlight TabLineSel cterm=NONE - highlight TabLine cterm=NONE " :set all call s:Hi('Title', s:oc['indigo'][5], '')