diff options
author | bfredl <bjorn.linse@gmail.com> | 2022-02-26 23:57:27 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-26 23:57:27 +0100 |
commit | 525a3a90bcbefe1de435662e1cf8025e1afdb25b (patch) | |
tree | d3512b7d1d65143a8128e4eae08263703a0d4b4d | |
parent | c26ef6bcd4e161c33e5a982bba249a5523aeafbb (diff) | |
parent | e5b5cbd19c6374540ee6ffa6d8b27ceb8a293f65 (diff) | |
download | rneovim-525a3a90bcbefe1de435662e1cf8025e1afdb25b.tar.gz rneovim-525a3a90bcbefe1de435662e1cf8025e1afdb25b.tar.bz2 rneovim-525a3a90bcbefe1de435662e1cf8025e1afdb25b.zip |
Merge pull request #17525 from lf-/hardcopy-truecolor
feat(hardcopy): check gui colours for highlights first
-rw-r--r-- | src/nvim/hardcopy.c | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/src/nvim/hardcopy.c b/src/nvim/hardcopy.c index 6fc70144ac..eb10c65be9 100644 --- a/src/nvim/hardcopy.c +++ b/src/nvim/hardcopy.c @@ -386,30 +386,43 @@ static uint32_t prt_get_term_color(int colorindex) return cterm_color_8[colorindex % 8]; } -static void prt_get_attr(int hl_id, prt_text_attr_T *pattr, int modec) +static uint32_t prt_get_color(int hl_id, int modec) { int colorindex; uint32_t fg_color; + const char *color = highlight_color(hl_id, "fg#", 'g'); + if (color != NULL) { + RgbValue rgb = name_to_color(color); + if (rgb != -1) { + return (uint32_t)rgb; + } + } + + color = highlight_color(hl_id, "fg", modec); + if (color == NULL) { + colorindex = 0; + } else { + colorindex = atoi(color); + } + + if (colorindex >= 0 && colorindex < t_colors) { + fg_color = prt_get_term_color(colorindex); + } else { + fg_color = PRCOLOR_BLACK; + } + + return fg_color; +} + +static void prt_get_attr(int hl_id, prt_text_attr_T *pattr, int modec) +{ pattr->bold = (highlight_has_attr(hl_id, HL_BOLD, modec) != NULL); pattr->italic = (highlight_has_attr(hl_id, HL_ITALIC, modec) != NULL); pattr->underline = (highlight_has_attr(hl_id, HL_UNDERLINE, modec) != NULL); pattr->undercurl = (highlight_has_attr(hl_id, HL_UNDERCURL, modec) != NULL); - { - const char *color = highlight_color(hl_id, "fg", modec); - if (color == NULL) { - colorindex = 0; - } else { - colorindex = atoi(color); - } - - if (colorindex >= 0 && colorindex < t_colors) { - fg_color = prt_get_term_color(colorindex); - } else { - fg_color = PRCOLOR_BLACK; - } - } + uint32_t fg_color = prt_get_color(hl_id, modec); if (fg_color == PRCOLOR_WHITE) { fg_color = PRCOLOR_BLACK; |