aboutsummaryrefslogtreecommitdiff
path: root/terminal.go
diff options
context:
space:
mode:
Diffstat (limited to 'terminal.go')
-rw-r--r--terminal.go13
1 files changed, 10 insertions, 3 deletions
diff --git a/terminal.go b/terminal.go
index 9886ef0..68be363 100644
--- a/terminal.go
+++ b/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