From debf3d8a8af9c165889e21227393cbda7ba5f9c3 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Wed, 25 Jun 2025 08:26:14 +0900 Subject: [PATCH] Refactor ANSI parser --- src/ansi.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/ansi.go b/src/ansi.go index cbe73c21..ba4b3d45 100644 --- a/src/ansi.go +++ b/src/ansi.go @@ -399,10 +399,15 @@ func interpretCode(ansiCode string, prevState *ansiState) ansiState { return state } - if len(ansiCode) <= 3 { + reset := func() { state.fg = -1 state.bg = -1 state.attr = 0 + state.lbg = -1 + } + + if len(ansiCode) <= 3 { + reset() return state } ansiCode = ansiCode[2 : len(ansiCode)-1] @@ -456,10 +461,7 @@ func interpretCode(ansiCode string, prevState *ansiState) ansiState { case 29: state.attr = state.attr &^ tui.StrikeThrough case 0: - state.fg = -1 - state.bg = -1 - state.attr = 0 - state.lbg = -1 + reset() state256 = 0 default: if num >= 30 && num <= 37 { @@ -499,10 +501,7 @@ func interpretCode(ansiCode string, prevState *ansiState) ansiState { // Empty sequence: reset if count == 0 { - state.fg = -1 - state.bg = -1 - state.attr = 0 - state.lbg = -1 + reset() } if state256 > 0 {