about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2022-12-16 15:56:47 +0100
committerbptato <nincsnevem662@gmail.com>2022-12-16 15:56:47 +0100
commitbbabb695c94d89f32591fa7c962eb8e22e52655a (patch)
tree28ecea9bbca208b667838990f6d4aaba128d1495 /src
parent6b9718de754fe10785094fc9f80c24f3db25d5a9 (diff)
downloadchawan-bbabb695c94d89f32591fa7c962eb8e22e52655a.tar.gz
Fix a processFormat bug
Diffstat (limited to 'src')
-rw-r--r--src/display/pager.nim4
-rw-r--r--src/display/term.nim10
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)