1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
package vt
import (
"github.com/charmbracelet/x/ansi"
"github.com/charmbracelet/x/ansi/parser"
)
// handleEsc handles an escape sequence.
func (e *Emulator) handleEsc(cmd ansi.Cmd) {
e.flushGrapheme() // Flush any pending grapheme before handling ESC sequences.
if !e.handlers.handleEsc(int(cmd)) {
var str string
if inter := cmd.Intermediate(); inter != 0 {
str += string(inter) + " "
}
if final := cmd.Final(); final != 0 {
str += string(final)
}
e.logf("unhandled sequence: ESC %q", str)
}
}
// fullReset performs a full terminal reset as in [ansi.RIS].
func (e *Emulator) fullReset() {
e.scrs[0].Reset()
e.scrs[1].Reset()
e.resetTabStops()
// XXX: Do we reset all modes here? Investigate.
e.resetModes()
e.gl, e.gr = 0, 1
e.gsingle = 0
e.charsets = [4]CharSet{}
e.atPhantom = false
e.grapheme = e.grapheme[:0]
e.lastChar = 0
e.lastState = parser.GroundState
}
|