summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2025-06-25 08:26:14 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2025-06-25 08:26:14 +0900
commitdebf3d8a8af9c165889e21227393cbda7ba5f9c3 (patch)
tree39bf80630b5d825e0affb948a2e5bcafdf3a6793
parent4811e52af3ed7f89e82baa908f9a8a25fb593361 (diff)
downloadfzf-debf3d8a8af9c165889e21227393cbda7ba5f9c3.tar.gz
Refactor ANSI parser
-rw-r--r--src/ansi.go17
1 files 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 {