From 1b53db93f42206d8ac12209ec2dba58d2f39aa34 Mon Sep 17 00:00:00 2001 From: Ryooooooga Date: Thu, 10 Nov 2022 22:41:41 +0900 Subject: [PATCH] feat(escape.go): just ignore OSC --- escape.go | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/escape.go b/escape.go index 87d6de7..1bd670a 100644 --- a/escape.go +++ b/escape.go @@ -39,6 +39,8 @@ const ( stateEscape stateCSI stateParams + stateOSC + stateOSCEscape bold fontEffect = 1 faint fontEffect = 2 @@ -124,11 +126,16 @@ func (ei *escapeInterpreter) parseOne(ch rune) (isEscape bool, err error) { } return false, nil case stateEscape: - if ch == '[' { + switch ch { + case '[': ei.state = stateCSI return true, nil + case ']': + ei.state = stateOSC + return true, nil + default: + return false, errNotCSI } - return false, errNotCSI case stateCSI: switch { case ch >= '0' && ch <= '9': @@ -189,6 +196,16 @@ func (ei *escapeInterpreter) parseOne(ch rune) (isEscape bool, err error) { default: return false, errCSIParseError } + case stateOSC: + switch ch { + case 0x1b: + ei.state = stateOSCEscape + return true, nil + } + return true, nil + case stateOSCEscape: + ei.state = stateNone + return true, nil } return false, nil }