diff --git a/syntax/SpaceVimRunner.vim b/syntax/SpaceVimRunner.vim index 6e9328ec9..8f0f0f5c1 100644 --- a/syntax/SpaceVimRunner.vim +++ b/syntax/SpaceVimRunner.vim @@ -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()