Improve Homebrew output parsing
All checks were successful
Alpine 3.23 Success

It likes to output CSI 0 G in particular, expecting that it works
(the coordinates are normally 1-based).
This commit is contained in:
2026-01-04 16:04:49 +01:00
parent b766c9ef20
commit 691b3a1a24
2 changed files with 11 additions and 4 deletions

View File

@@ -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.

View File

@@ -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