zames_pro 2.21.1 → 2.21.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/input.js +10 -3
- package/package.json +1 -1
package/dist/input.js
CHANGED
|
@@ -542,13 +542,20 @@ export class LineEditor {
|
|
|
542
542
|
const ctxText = this._contextText();
|
|
543
543
|
let statusOut = '';
|
|
544
544
|
let top = 0;
|
|
545
|
+
// Never fill a row to the FULL terminal width: on terminals with
|
|
546
|
+
// autowrap (Tabby, iTerm, Windows Terminal) a row that reaches the last
|
|
547
|
+
// column wraps the cursor to the next line, so the following erase moves
|
|
548
|
+
// to the wrong row and the status line STACKS on screen. Keep one column
|
|
549
|
+
// free (effective width = cols - 1) for the right-aligned context and for
|
|
550
|
+
// the padded status row.
|
|
551
|
+
const usable = Math.max(1, cols - 1);
|
|
545
552
|
if (this.statusText) {
|
|
546
553
|
if (ctxText) {
|
|
547
554
|
// Right-align the context on the SAME row as the status. When the
|
|
548
555
|
// status is too long to leave room, do NOT cram them together (that
|
|
549
556
|
// pushed the trailing `%` past the right edge and it got truncated):
|
|
550
557
|
// put the context on its own line instead.
|
|
551
|
-
const space =
|
|
558
|
+
const space = usable - visLen(this.statusText) - visLen(ctxText);
|
|
552
559
|
if (space >= 2) {
|
|
553
560
|
const row = this.statusText + ' '.repeat(space) + ctxText;
|
|
554
561
|
statusOut = row + NL;
|
|
@@ -557,7 +564,7 @@ export class LineEditor {
|
|
|
557
564
|
else {
|
|
558
565
|
statusOut = this.statusText + NL;
|
|
559
566
|
top = visRows(this.statusText, cols);
|
|
560
|
-
const ctxRow = ' '.repeat(Math.max(0,
|
|
567
|
+
const ctxRow = ' '.repeat(Math.max(0, usable - visLen(ctxText))) + ctxText;
|
|
561
568
|
statusOut += ctxRow + NL;
|
|
562
569
|
top += visRows(ctxRow, cols);
|
|
563
570
|
}
|
|
@@ -572,7 +579,7 @@ export class LineEditor {
|
|
|
572
579
|
else if (ctxText) {
|
|
573
580
|
// Idle: no spinner, but the context still belongs on its own line just
|
|
574
581
|
// above the input, right-aligned.
|
|
575
|
-
const ctxRow = ' '.repeat(Math.max(0,
|
|
582
|
+
const ctxRow = ' '.repeat(Math.max(0, usable - visLen(ctxText))) + ctxText;
|
|
576
583
|
statusOut = ctxRow + NL;
|
|
577
584
|
top = visRows(ctxRow, cols);
|
|
578
585
|
}
|