Skip to content

Commit

Permalink
Merge pull request #672 from Tyriar/662_parser_state_hack
Browse files Browse the repository at this point in the history
Fix bug with parser state when using vtop
  • Loading branch information
Tyriar committed May 27, 2017
2 parents 35b32b7 + 2c3d98a commit 42724c7
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/Parser.ts
Expand Up @@ -181,7 +181,7 @@ export class Parser {
*
* @param data The data to parse.
*/
public parse(data: string) {
public parse(data: string): ParserState {
let l = data.length, j, cs, ch, code, low;

this._position = 0;
Expand Down Expand Up @@ -564,6 +564,7 @@ export class Parser {
break;
}
}
return this._state;
}

/**
Expand Down
8 changes: 7 additions & 1 deletion src/xterm.js
Expand Up @@ -1252,7 +1252,13 @@ Terminal.prototype.innerWrite = function() {
this.refreshStart = this.y;
this.refreshEnd = this.y;

this.parser.parse(data);
// HACK: Set the parser state based on it's state at the time of return.
// This works around the bug #662 which saw the parser state reset in the
// middle of parsing escape sequence in two chunks. For some reason the
// state of the parser resets to 0 after exiting parser.parse. This change
// just sets the state back based on the correct return statement.
var state = this.parser.parse(data);
this.parser.setState(state);

this.updateRange(this.y);
this.refresh(this.refreshStart, this.refreshEnd);
Expand Down

0 comments on commit 42724c7

Please sign in to comment.