It likes to output CSI 0 G in particular, expecting that it works (the coordinates are normally 1-based).
This commit is contained in:
2
LICENSE
2
LICENSE
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 2024 - 2025, Přemysl Eric Janouch <p@janouch.name>
|
||||
Copyright (c) 2024 - 2026, Přemysl Eric Janouch <p@janouch.name>
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted.
|
||||
|
||||
13
terminal.go
13
terminal.go
@@ -206,17 +206,24 @@ func (tw *terminalWriter) processParsedCSI(
|
||||
}
|
||||
tw.column = 0
|
||||
return true
|
||||
case final == 'G': // Cursor Character Absolute
|
||||
if len(params) == 0 {
|
||||
tw.column = 0
|
||||
} else {
|
||||
tw.column = max(params[0]-1, 0)
|
||||
}
|
||||
return true
|
||||
case final == 'H': // Cursor Position
|
||||
if len(params) == 0 {
|
||||
tw.line = tw.lineTop
|
||||
tw.column = 0
|
||||
} else if len(params) < 2 || params[0] <= 0 || params[1] <= 0 {
|
||||
} else if len(params) < 2 {
|
||||
return false
|
||||
} else if params[0] >= 32766 && params[1] >= 32766 {
|
||||
// Ignore attempts to scan terminal bounds.
|
||||
} else {
|
||||
tw.line = tw.lineTop + params[0] - 1
|
||||
tw.column = params[1] - 1
|
||||
tw.line = tw.lineTop + max(params[0]-1, 0)
|
||||
tw.column = max(params[1]-1, 0)
|
||||
}
|
||||
return true
|
||||
case final == 'J': // Erase in Display
|
||||
|
||||
Reference in New Issue
Block a user