From bbabb695c94d89f32591fa7c962eb8e22e52655a Mon Sep 17 00:00:00 2001 From: bptato Date: Fri, 16 Dec 2022 15:56:47 +0100 Subject: Fix a processFormat bug --- src/display/pager.nim | 4 ++-- src/display/term.nim | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/display/pager.nim b/src/display/pager.nim index 98b5da25..f61304aa 100644 --- a/src/display/pager.nim +++ b/src/display/pager.nim @@ -200,8 +200,6 @@ proc refreshDisplay(pager: Pager, container = pager.container) = var r: Rune var by = 0 pager.clearDisplay() - var hlformat = newFormat() - hlformat.bgcolor = pager.config.hlcolor.cellColor() for line in container.ilines(container.fromy ..< min(container.fromy + pager.display.height, container.numLines)): var w = 0 # width of the row so far var i = 0 # byte in line.str @@ -244,6 +242,8 @@ proc refreshDisplay(pager: Pager, container = pager.container) = for hl in hls: let area = hl.colorArea(container.fromy + by, startw .. startw + aw) for i in area: + var hlformat = pager.display[dls + i - startw].format + hlformat.bgcolor = pager.config.hlcolor.cellColor() pager.display[dls + i - startw].format = hlformat inc by diff --git a/src/display/term.nim b/src/display/term.nim index 19684c92..965bb6e1 100644 --- a/src/display/term.nim +++ b/src/display/term.nim @@ -281,6 +281,10 @@ proc processFormat*(term: Terminal, format: var Format, cellf: Format): string = of TRUE_COLOR: discard cellf.fgcolor = correctContrast(cellf.bgcolor, cellf.fgcolor, term.mincontrast) + if cellf.fgcolor != format.fgcolor and cellf.fgcolor == defaultColor or + cellf.bgcolor != format.bgcolor and cellf.bgcolor == defaultColor: + result &= term.resetFormat() + format = newFormat() if cellf.fgcolor != format.fgcolor: var color = cellf.fgcolor @@ -288,8 +292,7 @@ proc processFormat*(term: Terminal, format: var Format, cellf: Format): string = let rgb = color.rgbcolor result &= SGR(38, 2, rgb.r, rgb.g, rgb.b) elif color == defaultColor: - result &= term.resetFormat() - format = newFormat() + discard else: result &= SGR(color.color) @@ -299,8 +302,7 @@ proc processFormat*(term: Terminal, format: var Format, cellf: Format): string = let rgb = color.rgbcolor result &= SGR(48, 2, rgb.r, rgb.g, rgb.b) elif color == defaultColor: - result &= term.resetFormat() - format = newFormat() + discard else: result &= SGR(color.color) -- cgit 1.4.1-2-gfad0