Implement vim background color propagation for wezterm

Currently unsupported: resetting after quitting

TODO: Extract into separate Lua script (as well as kitty equivalent)
This commit is contained in:
Talia 2024-02-28 23:21:58 +01:00
parent ea45dfea50
commit 57ee7bb2fd
1 changed files with 24 additions and 15 deletions

View File

@ -1,8 +1,14 @@
let g:only_generic_hl=1 let g:only_generic_hl=1
function! s:kitty_bg_color() function! s:wez_color(value)
if $TERM=="xterm-kitty" || $KITTY_LISTEN_ON != "" let g:__color = a:value
lua vim.g.__color = vim.base64.encode(vim.g.__color)
call chansend(v:stderr, "\x1b]1337;SetUserVar=bgcolor=".g:__color."\x07")
endfun
function! s:term_bg_color()
let l:num_color=synIDattr(hlID("normal"), "bg") let l:num_color=synIDattr(hlID("normal"), "bg")
if $TERM=="xterm-kitty" || $KITTY_LISTEN_ON != ""
if l:num_color!="" if l:num_color!=""
if match(l:num_color, "^\\d\\{3}$")==0 if match(l:num_color, "^\\d\\{3}$")==0
let l:color=system("kitty @ --to $KITTY_LISTEN_ON get-colors | grep 'color".l:num_color."'") let l:color=system("kitty @ --to $KITTY_LISTEN_ON get-colors | grep 'color".l:num_color."'")
@ -13,27 +19,30 @@ function! s:kitty_bg_color()
call jobstart('kitty @ --to $KITTY_LISTEN_ON set-colors background="'.l:color.'"') call jobstart('kitty @ --to $KITTY_LISTEN_ON set-colors background="'.l:color.'"')
call jobstart("cat ".$HOME."/darkrc/kitty_".&bg.".conf | grep cursor | sed -e 's/ /=/' | xargs -L 1 kitty @ --to $KITTY_LISTEN_ON set-colors") call jobstart("cat ".$HOME."/darkrc/kitty_".&bg.".conf | grep cursor | sed -e 's/ /=/' | xargs -L 1 kitty @ --to $KITTY_LISTEN_ON set-colors")
end end
elseif $TERM_PROGRAM=="WezTerm"
call <SID>wez_color(l:num_color)
end end
endfun endfun
augroup kitty augroup termcolors
au ColorScheme * call <SID>kitty_bg_color() au ColorScheme * call <SID>term_bg_color()
augroup END augroup END
function! s:kitty_bg_color_reset() function! s:term_bg_color_reset()
if $TERM=="xterm-kitty" || $KITTY_LISTEN_ON != ""
if filereadable($HOME."/.dark") if filereadable($HOME."/.dark")
let l:file = $HOME."/darkrc/kitty_dark.conf" let l:file = $HOME."/darkrc/kitty_dark.conf"
else else
let l:file = $HOME."/darkrc/kitty_light.conf" let l:file = $HOME."/darkrc/kitty_light.conf"
end end
call system("kitty @ --to ".$KITTY_LISTEN_ON." set-colors ".l:file) call system("kitty @ --to ".$KITTY_LISTEN_ON." set-colors ".l:file)
elseif $TERM_PROGRAM=="WezTerm"
end
endfun endfun
if $TERM=="xterm-kitty" || $KITTY_LISTEN_ON != "" augroup termcolors
augroup kitty au VimLeavePre * call <SID>term_bg_color_reset()
au VimLeavePre * call <SID>kitty_bg_color_reset()
augroup END augroup END
end
com! Dark silent! let g:colors_name_bak = g:colors_name com! Dark silent! let g:colors_name_bak = g:colors_name
\ | let g:ayucolor="dark" \ | let g:ayucolor="dark"