From ce20598ca90b922592e1ddf38eb8f218cc9daa73 Mon Sep 17 00:00:00 2001 From: Florrie Date: Sun, 10 Dec 2017 11:13:22 -0400 Subject: Clean up old state code in ANSI interpreter --- util/ansi.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'util/ansi.js') diff --git a/util/ansi.js b/util/ansi.js index cfe7b1f..a303cd6 100644 --- a/util/ansi.js +++ b/util/ansi.js @@ -119,7 +119,10 @@ const ansi = { }, - interpret(text, scrRows, scrCols, oldChars = null, lastChar = null) { + interpret(text, scrRows, scrCols, { + oldChars = null, oldLastChar = null, + oldCursorRow = 0, oldCursorCol = 0 + } = {}) { // Interprets the given ansi code, more or less. const blank = { @@ -360,7 +363,7 @@ const ansi = { // Character concatenation ----------- - lastChar = lastChar || { + let lastChar = oldLastChar || { char: '', attributes: [] } @@ -397,9 +400,17 @@ const ansi = { } } + // If anything changed *or* the cursor moved, we need to put it back where + // it was before: + if (result.length || cursorCol !== oldCursorCol || cursorRow !== oldCursorRow) { + result.push(ansi.moveCursor(cursorRow, cursorCol)) + } + return { - newChars: newChars.slice(), - lastChar: Object.assign({}, lastChar), + oldChars: newChars.slice(), + oldCursorRow: cursorRow, + oldCursorCol: cursorCol, + oldLastChar: Object.assign({}, lastChar), screen: result.join('') } } -- cgit 1.3.0-6-gf8a5