Each buffer needs its own saved cursor attributes

This commit is contained in:
Jeff Smith
2018-11-16 14:33:37 -06:00
parent a5894ee234
commit a19d93851c
6 changed files with 15 additions and 5 deletions
+1
View File
@@ -38,6 +38,7 @@ export class Buffer implements IBuffer {
public tabs: any; public tabs: any;
public savedY: number; public savedY: number;
public savedX: number; public savedX: number;
public savedCurAttr: number;
public markers: Marker[] = []; public markers: Marker[] = [];
private _bufferLineConstructor: IBufferLineConstructor; private _bufferLineConstructor: IBufferLineConstructor;
+10
View File
@@ -551,5 +551,15 @@ describe('InputHandler', () => {
// Text color of 'TEST' should be default // Text color of 'TEST' should be default
expect(term.buffer.lines.get(0).get(0)[CHAR_DATA_ATTR_INDEX]).to.equal(DEFAULT_ATTR); expect(term.buffer.lines.get(0).get(0)[CHAR_DATA_ATTR_INDEX]).to.equal(DEFAULT_ATTR);
}); });
it('should handle DECSET/DECRST 1049 - maintains saved cursor for alt buffer', () => {
handler.parse('\x1b[?1049h\r\n\x1b[31m\x1b[s\x1b[?1049lTEST');
expect(lineContent(term.buffer.lines.get(0))).to.equal('TEST' + Array(term.cols - 3).join(' '));
// Text color of 'TEST' should be default
expect(term.buffer.lines.get(0).get(0)[CHAR_DATA_ATTR_INDEX]).to.equal(DEFAULT_ATTR);
handler.parse('\x1b[?1049h\x1b[uTEST');
expect(lineContent(term.buffer.lines.get(1))).to.equal('TEST' + Array(term.cols - 3).join(' '));
// Text color of 'TEST' should be red
expect((term.buffer.lines.get(1).get(0)[CHAR_DATA_ATTR_INDEX] >> 9) & 0x1ff).to.equal(1);
});
}); });
}); });
+2 -2
View File
@@ -1869,7 +1869,7 @@ export class InputHandler extends Disposable implements IInputHandler {
public saveCursor(params: number[]): void { public saveCursor(params: number[]): void {
this._terminal.buffer.savedX = this._terminal.buffer.x; this._terminal.buffer.savedX = this._terminal.buffer.x;
this._terminal.buffer.savedY = this._terminal.buffer.y; this._terminal.buffer.savedY = this._terminal.buffer.y;
this._terminal.savedCurAttr = this._terminal.curAttr; this._terminal.buffer.savedCurAttr = this._terminal.curAttr;
} }
@@ -1881,7 +1881,7 @@ export class InputHandler extends Disposable implements IInputHandler {
public restoreCursor(params: number[]): void { public restoreCursor(params: number[]): void {
this._terminal.buffer.x = this._terminal.buffer.savedX || 0; this._terminal.buffer.x = this._terminal.buffer.savedX || 0;
this._terminal.buffer.y = this._terminal.buffer.savedY || 0; this._terminal.buffer.y = this._terminal.buffer.savedY || 0;
this._terminal.curAttr = this._terminal.savedCurAttr || DEFAULT_ATTR; this._terminal.curAttr = this._terminal.buffer.savedCurAttr || DEFAULT_ATTR;
} }
-1
View File
@@ -170,7 +170,6 @@ export class Terminal extends EventEmitter implements ITerminal, IDisposable, II
public savedCols: number; public savedCols: number;
public curAttr: number; public curAttr: number;
public savedCurAttr: number;
public params: (string | number)[]; public params: (string | number)[];
public currentParam: string | number; public currentParam: string | number;
+1 -1
View File
@@ -49,7 +49,6 @@ export interface IInputHandlingTerminal extends IEventEmitter {
wraparoundMode: boolean; wraparoundMode: boolean;
bracketedPasteMode: boolean; bracketedPasteMode: boolean;
curAttr: number; curAttr: number;
savedCurAttr: number;
savedCols: number; savedCols: number;
x10Mouse: boolean; x10Mouse: boolean;
vt200Mouse: boolean; vt200Mouse: boolean;
@@ -290,6 +289,7 @@ export interface IBuffer {
hasScrollback: boolean; hasScrollback: boolean;
savedY: number; savedY: number;
savedX: number; savedX: number;
savedCurAttr: number;
isCursorInViewport: boolean; isCursorInViewport: boolean;
translateBufferLineToString(lineIndex: number, trimRight: boolean, startCol?: number, endCol?: number): string; translateBufferLineToString(lineIndex: number, trimRight: boolean, startCol?: number, endCol?: number): string;
getWrappedRangeForLine(y: number): { first: number, last: number }; getWrappedRangeForLine(y: number): { first: number, last: number };
+1 -1
View File
@@ -182,7 +182,6 @@ export class MockInputHandlingTerminal implements IInputHandlingTerminal {
wraparoundMode: boolean; wraparoundMode: boolean;
bracketedPasteMode: boolean; bracketedPasteMode: boolean;
curAttr: number; curAttr: number;
savedCurAttr: number;
savedCols: number; savedCols: number;
x10Mouse: boolean; x10Mouse: boolean;
vt200Mouse: boolean; vt200Mouse: boolean;
@@ -304,6 +303,7 @@ export class MockBuffer implements IBuffer {
scrollTop: number; scrollTop: number;
savedY: number; savedY: number;
savedX: number; savedX: number;
savedCurAttr: number;
translateBufferLineToString(lineIndex: number, trimRight: boolean, startCol?: number, endCol?: number): string { translateBufferLineToString(lineIndex: number, trimRight: boolean, startCol?: number, endCol?: number): string {
return Buffer.prototype.translateBufferLineToString.apply(this, arguments); return Buffer.prototype.translateBufferLineToString.apply(this, arguments);
} }