diff options
author | bptato <nincsnevem662@gmail.com> | 2022-12-16 15:56:47 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2022-12-16 15:56:47 +0100 |
commit | bbabb695c94d89f32591fa7c962eb8e22e52655a (patch) | |
tree | 28ecea9bbca208b667838990f6d4aaba128d1495 /src | |
parent | 6b9718de754fe10785094fc9f80c24f3db25d5a9 (diff) | |
download | chawan-bbabb695c94d89f32591fa7c962eb8e22e52655a.tar.gz |
Fix a processFormat bug
Diffstat (limited to 'src')
-rw-r--r-- | src/display/pager.nim | 4 | ||||
-rw-r--r-- | src/display/term.nim | 10 |
2 files changed, 8 insertions, 6 deletions
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) |