diff --git a/core/ansi_escape_parser.js b/core/ansi_escape_parser.js index 4d30c29c..d1bc6606 100644 --- a/core/ansi_escape_parser.js +++ b/core/ansi_escape_parser.js @@ -12,8 +12,11 @@ const _ = require('lodash'); exports.ANSIEscapeParser = ANSIEscapeParser; +const TAB = 0x09; const CR = 0x0d; const LF = 0x0a; +const FF = 0x0c; +const BKSP = 0x08; function ANSIEscapeParser(options) { var self = this; @@ -96,6 +99,28 @@ function ANSIEscapeParser(options) { charCode = text.charCodeAt(pos) & 0xff; // 8bit clean switch (charCode) { + case TAB: + self.emit('literal', text.slice(start, pos + 1)); + start = pos + 1; + + self.column += 8 - ((self.column - 1) % 8); + + self.positionUpdated(); + break; + case BKSP: + self.emit('literal', text.slice(start, pos + 1)); + start = pos + 1; + + self.column = Math.max(1, self.column - 1); + + self.positionUpdated(); + break; + case FF: + self.emit('literal', text.slice(start, pos + 1)); + start = pos + 1; + + self.clearScreen(); + break; case CR: self.emit('literal', text.slice(start, pos + 1)); start = pos + 1;