mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.0.0760: terminal window colors wrong with 'termguicolors'
Problem: Terminal window colors wrong with 'termguicolors'. Solution: Add 'termguicolors' support.
This commit is contained in:
@@ -32,6 +32,7 @@ void hl_set_font_name(char_u *font_name);
|
||||
void hl_set_bg_color_name(char_u *name);
|
||||
void hl_set_fg_color_name(char_u *name);
|
||||
int get_cterm_attr_idx(int attr, int fg, int bg);
|
||||
int get_tgc_attr_idx(int attr, guicolor_T fg, guicolor_T bg);
|
||||
int get_gui_attr_idx(int attr, guicolor_T fg, guicolor_T bg);
|
||||
void clear_hl_tables(void);
|
||||
int hl_combine_attr(int char_attr, int prim_attr);
|
||||
|
18
src/syntax.c
18
src/syntax.c
@@ -8796,6 +8796,24 @@ get_cterm_attr_idx(int attr, int fg, int bg)
|
||||
return get_attr_entry(&cterm_attr_table, &at_en);
|
||||
}
|
||||
|
||||
#if defined(FEAT_TERMGUICOLORS) || defined(PROTO)
|
||||
/*
|
||||
* Get an attribute index for a 'termguicolors' entry.
|
||||
* Uses an existing entry when possible or adds one when needed.
|
||||
*/
|
||||
int
|
||||
get_tgc_attr_idx(int attr, guicolor_T fg, guicolor_T bg)
|
||||
{
|
||||
attrentry_T at_en;
|
||||
|
||||
vim_memset(&at_en, 0, sizeof(attrentry_T));
|
||||
at_en.ae_attr = attr;
|
||||
at_en.ae_u.cterm.fg_rgb = fg;
|
||||
at_en.ae_u.cterm.bg_rgb = bg;
|
||||
return get_attr_entry(&cterm_attr_table, &at_en);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(FEAT_GUI) || defined(PROTO)
|
||||
/*
|
||||
* Get an attribute index for a cterm entry.
|
||||
|
@@ -33,7 +33,6 @@
|
||||
* while, if the terminal window is visible, the screen contents is drawn.
|
||||
*
|
||||
* TODO:
|
||||
* - color for 'termguicolors'
|
||||
* - cursor flickers when moving the cursor
|
||||
* - set buffer options to be scratch, hidden, nomodifiable, etc.
|
||||
* - set buffer name to command, add (1) to avoid duplicates.
|
||||
@@ -731,8 +730,14 @@ cell2attr(VTermScreenCell *cell)
|
||||
#ifdef FEAT_TERMGUICOLORS
|
||||
if (p_tgc)
|
||||
{
|
||||
/* TODO */
|
||||
guicolor_T fg, bg;
|
||||
|
||||
fg = gui_get_rgb_color_cmn(cell->fg.red, cell->fg.green, cell->fg.blue);
|
||||
bg = gui_get_rgb_color_cmn(cell->bg.red, cell->bg.green, cell->bg.blue);
|
||||
|
||||
return get_tgc_attr_idx(attr, fg, bg);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
return get_cterm_attr_idx(attr, color2index(&cell->fg),
|
||||
|
@@ -769,6 +769,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
760,
|
||||
/**/
|
||||
759,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user