1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-23 07:20:04 +08:00

add color support in runner (#2890)

This commit is contained in:
Wang Shidong 2019-06-15 14:12:24 +08:00 committed by GitHub
parent faa0a92a4a
commit f07a54b9f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -18,3 +18,79 @@ hi def link DoneSucceeded String
hi def link DoneFailed WarningMsg
hi def link ExitCode MoreMsg
hi def link ExitCodeFailed WarningMsg
let s:shellcmd_colors =
\ [
\ '#6c6c6c', '#ff6666', '#66ff66', '#ffd30a',
\ '#1e95fd', '#ff13ff', '#1bc8c8', '#c0c0c0',
\ '#383838', '#ff4444', '#44ff44', '#ffb30a',
\ '#6699ff', '#f820ff', '#4ae2e2', '#ffffff',
\]
function! s:highlight_shell_cmd() abort
let highlight_table = {
\ '0' : ' cterm=NONE ctermfg=NONE ctermbg=NONE gui=NONE guifg=NONE guibg=NONE',
\ '1' : ' cterm=BOLD gui=BOLD',
\ '3' : ' cterm=ITALIC gui=ITALIC',
\ '4' : ' cterm=UNDERLINE gui=UNDERLINE',
\ '7' : ' cterm=REVERSE gui=REVERSE',
\ '8' : ' ctermfg=0 ctermbg=0 guifg=#000000 guibg=#000000',
\ '9' : ' gui=UNDERCURL',
\ '21' : ' cterm=UNDERLINE gui=UNDERLINE',
\ '22' : ' gui=NONE',
\ '23' : ' gui=NONE',
\ '24' : ' gui=NONE',
\ '25' : ' gui=NONE',
\ '27' : ' gui=NONE',
\ '28' : ' ctermfg=NONE ctermbg=NONE guifg=NONE guibg=NONE',
\ '29' : ' gui=NONE',
\ '39' : ' ctermfg=NONE guifg=NONE',
\ '49' : ' ctermbg=NONE guibg=NONE',
\ '90' : ' ctermfg=245 guifg=#928374',
\ '95' : ' ctermfg=175 guifg=#d3869b',
\}
for color in range(30, 37)
" Foreground color pattern.
let highlight_table[color] = printf(' ctermfg=%d guifg=%s',
\ color - 30, s:shellcmd_colors[color - 30])
for color2 in [1, 3, 4, 7]
" Type;Foreground color pattern
let highlight_table[color2 . ';' . color] =
\ highlight_table[color2] . highlight_table[color]
endfor
endfor
for color in range(40, 47)
" Background color pattern.
let highlight_table[color] = printf(' ctermbg=%d guibg=%s',
\ color - 40, s:shellcmd_colors[color - 40])
for color2 in range(30, 37)
" Foreground;Background color pattern.
let highlight_table[color2 . ';' . color] =
\ highlight_table[color2] . highlight_table[color]
endfor
endfor
syntax match SpaceVimRunner__Output_Shellcmd_Conceal
\ contained conceal '\e\[[0-9;]*m'
\ containedin=SpaceVimRunner__Output_Shellcmd
syntax match SpaceVimRunner__Output_Shellcmd_Conceal
\ contained conceal '\e\[?1h'
\ containedin=SpaceVimRunner__Output_Shellcmd
syntax match uniteSource__Output_Shellcmd_Ignore
\ contained conceal '\e\[?\d[hl]\|\e=\r\|\r\|\e>'
\ containedin=SpaceVimRunner__Output_Shellcmd
for [key, highlight] in items(highlight_table)
let syntax_name = 'SpaceVimRunner__Output_Shellcmd_Color'
\ . substitute(key, ';', '_', 'g')
let syntax_command = printf('start=+\e\[0\?%sm+ end=+\ze\e[\[0*m]\|$+ ' .
\ 'contains=SpaceVimRunner__Output_Shellcmd_Conceal ' .
\ 'containedin=SpaceVimRunner__Output_Shellcmd oneline', key)
execute 'syntax region' syntax_name syntax_command
execute 'highlight' syntax_name highlight
endfor
endfunction
call s:highlight_shell_cmd()