mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 9.1.1078: Terminal ansi colors off by one after tgc reset
Problem: Terminal ansi colors off by one after tgc reset Solution: Set the correct index for libvterm palette, revert parts in libvterm/src/pen.c that deviated from upstream (Julio B) fixes: #16568 closes: #16573 related: Vim patch v8.2.0804 Co-authored-by: Christian Brabandt <cb@256bit.org> Signed-off-by: Julio B <julio.bacel@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
parent
f50d5364d7
commit
cde8ff63e2
@ -275,10 +275,7 @@ void vterm_state_set_default_colors(VTermState *state, const VTermColor *default
|
|||||||
void vterm_state_set_palette_color(VTermState *state, int index, const VTermColor *col)
|
void vterm_state_set_palette_color(VTermState *state, int index, const VTermColor *col)
|
||||||
{
|
{
|
||||||
if(index >= 0 && index < 16)
|
if(index >= 0 && index < 16)
|
||||||
{
|
|
||||||
state->colors[index] = *col;
|
state->colors[index] = *col;
|
||||||
state->colors[index].index = index + 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void vterm_state_convert_color_to_rgb(const VTermState *state, VTermColor *col)
|
void vterm_state_convert_color_to_rgb(const VTermState *state, VTermColor *col)
|
||||||
|
@ -7494,7 +7494,7 @@ ansi_color2rgb(int nr, char_u *r, char_u *g, char_u *b, char_u *ansi_idx)
|
|||||||
*r = ansi_table[nr][0];
|
*r = ansi_table[nr][0];
|
||||||
*g = ansi_table[nr][1];
|
*g = ansi_table[nr][1];
|
||||||
*b = ansi_table[nr][2];
|
*b = ansi_table[nr][2];
|
||||||
*ansi_idx = nr;
|
*ansi_idx = nr + 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
12
src/testdir/dumps/Test_terminal_ansi_reset_tgc.dump
Normal file
12
src/testdir/dumps/Test_terminal_ansi_reset_tgc.dump
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|$+0&#ffffff0| |p|r|i|n|t|f| |'|\|0|3@1|[|0|;|3|0|;|4|1|m|h|e|l@1|o| |w|o|r|l|d|\|0|3@1|[|0|m|\|n|'| @30
|
||||||
|
|h+0#0000001#e000002|e|l@1|o| |w|o|r|l|d| +0#0000000#ffffff0@63
|
||||||
|
|$| |p|r|i|n|t|f| |'|\|0|3@1|[|0|;|3|0|;|4|1|m|h|e|l@1|o| |w|o|r|l|d|\|0|3@1|[|0|m|\|n|'| @30
|
||||||
|
|h+0#0000001#e000002|e|l@1|o| |w|o|r|l|d| +0#0000000#ffffff0@63
|
||||||
|
|$| > @72
|
||||||
|
|!+2#ffffff16#00e0003|s|h| |[|r|u|n@1|i|n|g|]| @43|1|,|1| @11|A|l@1
|
||||||
|
| +0#0000000#ffffff0@74
|
||||||
|
|~+0#4040ff13&| @73
|
||||||
|
|~| @73
|
||||||
|
|~| @73
|
||||||
|
|[+1#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1
|
||||||
|
| +0&&@74
|
@ -2149,6 +2149,30 @@ func Test_terminal_ansicolors_default()
|
|||||||
exe buf . 'bwipe'
|
exe buf . 'bwipe'
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_terminal_ansicolors_default_reset_tgc()
|
||||||
|
CheckFeature termguicolors
|
||||||
|
CheckRunVimInTerminal
|
||||||
|
|
||||||
|
let $PS1="$ "
|
||||||
|
let buf = RunVimInTerminal('-c "term sh"', {'rows': 12})
|
||||||
|
call TermWait(buf)
|
||||||
|
" Wait for the shell to display a prompt
|
||||||
|
call WaitForAssert({-> assert_notequal('', term_getline(buf, 1))})
|
||||||
|
|
||||||
|
call term_sendkeys(buf, "printf '\\033[0;30;41mhello world\\033[0m\\n'\<CR>")
|
||||||
|
call WaitForAssert({-> assert_match('hello world', term_getline(buf, 2))})
|
||||||
|
call term_sendkeys(buf, "\<C-W>:set notgc\<CR>")
|
||||||
|
call term_sendkeys(buf, "printf '\\033[0;30;41mhello world\\033[0m\\n'\<CR>")
|
||||||
|
call WaitForAssert({-> assert_match('hello world', term_getline(buf, 4))})
|
||||||
|
|
||||||
|
call VerifyScreenDump(buf, 'Test_terminal_ansi_reset_tgc', {})
|
||||||
|
|
||||||
|
call term_sendkeys(buf, "exit\<CR>")
|
||||||
|
call TermWait(buf)
|
||||||
|
call StopVimInTerminal(buf)
|
||||||
|
unlet! $PS1
|
||||||
|
endfunc
|
||||||
|
|
||||||
let s:test_colors = [
|
let s:test_colors = [
|
||||||
\ '#616e64', '#0d0a79',
|
\ '#616e64', '#0d0a79',
|
||||||
\ '#6d610d', '#0a7373',
|
\ '#6d610d', '#0a7373',
|
||||||
|
@ -704,6 +704,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1078,
|
||||||
/**/
|
/**/
|
||||||
1077,
|
1077,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user