Skip to content

Commit 52acb11

Browse files
committed
patch 8.0.1615: term_dumpload() does not use the right colors
Problem: term_dumpload() does not use the right colors. Solution: Initialize colors when not using create_vterm().
1 parent 98ef233 commit 52acb11

2 files changed

Lines changed: 30 additions & 13 deletions

File tree

src/terminal.c

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3011,25 +3011,15 @@ cterm_color2rgb(int nr, VTermColor *rgb)
30113011
}
30123012

30133013
/*
3014-
* Create a new vterm and initialize it.
3014+
* Initialize term->tl_default_color from the environment.
30153015
*/
30163016
static void
3017-
create_vterm(term_T *term, int rows, int cols)
3017+
init_default_colors(term_T *term)
30183018
{
3019-
VTerm *vterm;
3020-
VTermScreen *screen;
3021-
VTermValue value;
30223019
VTermColor *fg, *bg;
30233020
int fgval, bgval;
30243021
int id;
30253022

3026-
vterm = vterm_new(rows, cols);
3027-
term->tl_vterm = vterm;
3028-
screen = vterm_obtain_screen(vterm);
3029-
vterm_screen_set_callbacks(screen, &screen_callbacks, term);
3030-
/* TODO: depends on 'encoding'. */
3031-
vterm_set_utf8(vterm, 1);
3032-
30333023
vim_memset(&term->tl_default_color.attrs, 0, sizeof(VTermScreenCellAttrs));
30343024
term->tl_default_color.width = 1;
30353025
fg = &term->tl_default_color.fg;
@@ -3152,8 +3142,31 @@ create_vterm(term_T *term, int rows, int cols)
31523142
term_get_bg_color(&bg->red, &bg->green, &bg->blue);
31533143
# endif
31543144
}
3145+
}
3146+
3147+
/*
3148+
* Create a new vterm and initialize it.
3149+
*/
3150+
static void
3151+
create_vterm(term_T *term, int rows, int cols)
3152+
{
3153+
VTerm *vterm;
3154+
VTermScreen *screen;
3155+
VTermValue value;
3156+
3157+
vterm = vterm_new(rows, cols);
3158+
term->tl_vterm = vterm;
3159+
screen = vterm_obtain_screen(vterm);
3160+
vterm_screen_set_callbacks(screen, &screen_callbacks, term);
3161+
/* TODO: depends on 'encoding'. */
3162+
vterm_set_utf8(vterm, 1);
31553163

3156-
vterm_state_set_default_colors(vterm_obtain_state(vterm), fg, bg);
3164+
init_default_colors(term);
3165+
3166+
vterm_state_set_default_colors(
3167+
vterm_obtain_state(vterm),
3168+
&term->tl_default_color.fg,
3169+
&term->tl_default_color.bg);
31573170

31583171
/* Required to initialize most things. */
31593172
vterm_screen_reset(screen, 1 /* hard */);
@@ -3767,6 +3780,8 @@ term_load_dump(typval_T *argvars, typval_T *rettv, int do_diff)
37673780
VTermPos cursor_pos1;
37683781
VTermPos cursor_pos2;
37693782

3783+
init_default_colors(term);
3784+
37703785
rettv->vval.v_number = buf->b_fnum;
37713786

37723787
/* read the files, fill the buffer with the diff */

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,8 @@ static char *(features[]) =
766766

767767
static int included_patches[] =
768768
{ /* Add new patch number below this line */
769+
/**/
770+
1615,
769771
/**/
770772
1614,
771773
/**/

0 commit comments

Comments
 (0)