Fix highlight offsets of multi-line entries

Fix regression from 4811e52a
This commit is contained in:
Junegunn Choi
2025-06-26 20:47:57 +09:00
parent b99cb6323f
commit 5ed87ffcb9
3 changed files with 4 additions and 8 deletions

View File

@@ -278,6 +278,7 @@ func extractColor(str string, state *ansiState, proc func(string, *ansiState) bo
if code == "\n" {
output.WriteRune('\n')
runeCount++
// Full-background marker
if newState.lbg >= 0 {
marker := newState

View File

@@ -81,7 +81,7 @@ func Run(opts *Options) (int, error) {
lineAnsiState = newState
// Full line background is found. Add a special marker.
if !opts.ReadZero && offsets != nil && newState != nil && len(*offsets) > 0 && newState.lbg >= 0 {
if offsets != nil && newState != nil && len(*offsets) > 0 && newState.lbg >= 0 {
marker := (*offsets)[len(*offsets)-1]
marker.offset[0] = marker.offset[1]
marker.color.bg = newState.lbg

View File

@@ -3399,13 +3399,8 @@ func (t *Terminal) printHighlighted(result Result, colBase tui.ColorPair, colMat
finalLineNum = lineNum
offsets := []colorOffset{}
lbg := tui.NoColorPair()
var lineLen int
for idx, offset := range allOffsets {
lineLen = len(line)
if lineLen > 0 && line[lineLen-1] == '\n' {
lineLen--
}
lineEnd := int32(from + lineLen)
lineEnd := int32(from + len(line))
if offset.offset[0] >= lineEnd {
if offset.IsFullBgMarker(lineEnd) {
lbg = offset.color
@@ -3441,7 +3436,7 @@ func (t *Terminal) printHighlighted(result Result, colBase tui.ColorPair, colMat
break
}
}
from += lineLen
from += len(line)
if lineOffset < skipLines {
continue
}