--- /dev/null
+/**
+ * @license MIT
+ */
+
+import { ITerminal } from './Interfaces';
+import { CircularList } from './utils/CircularList';
+
+export class Buffer {
+ private _lines: CircularList<any>;
+ private _ybase: number;
+ private _ydisp: number;
+ private _y: number;
+ private _x: number;
+ private _tabs: any;
+
+ constructor(private terminal: ITerminal) {
+ this._lines = new CircularList(this.terminal.scrollback);
+ }
+
+ public get lines(): CircularList {
+ return this._lines;
+ }
+}
--- /dev/null
+/**
+ * @license MIT
+ */
+
+import { ITerminal } from './Interfaces';
+import { Buffer } from './Buffer';
+
+export class BufferSet {
+ private _normal: Buffer;
+ private _alt: Buffer;
+ private _activeBuffer: Buffer;
+
+ constructor(private _terminal: ITerminal) {
+ this._normal = new Buffer(this._terminal);
+ this._alt = new Buffer(this._terminal);
+ this._activeBuffer = this._normal;
+ }
+
+ public get alt(): Buffer {
+ return this._alt;
+ }
+
+ public get active(): Buffer {
+ return this._activeBuffer;
+ }
+
+ public get normal(): Buffer {
+ return this._normal;
+ }
+
+ private resetTerminal() {
+ this._terminal.reset();
+ this._terminal.viewport.syncScrollArea();
+ this._terminal.showCursor();
+ }
+
+ public activateNormalBuffer(): void {
+ this._activeBuffer = this._normal;
+ }
+
+ public activateAltBuffer(): void {
+ this._activeBuffer = this._normal;
+ }
+}
* @license MIT
*/
+import { BufferSet } from './BufferSet';
import { CompositionHelper } from './CompositionHelper';
import { EventEmitter } from './EventEmitter';
import { Viewport } from './Viewport';
// leftover surrogate high from previous write invocation
this.surrogate_high = '';
+ this.buffers = new BufferSet(this);
/**
* An array of all lines in the entire buffer, including the prompt. The lines are array of
* characters which are 2-length arrays where [0] is an attribute and [1] is the character.