Skip to content

Commit

Permalink
Improve documentation of Buffer and BufferSet classes
Browse files Browse the repository at this point in the history
  • Loading branch information
parisk committed Jul 15, 2017
1 parent 044faa5 commit f840997
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 6 deletions.
12 changes: 8 additions & 4 deletions src/Buffer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,20 @@ import { ITerminal } from './Interfaces';
import { CircularList } from './utils/CircularList';

/**
* This class represents a terminal buffer (an internal state of the terminal)/
* This class represents a terminal buffer (an internal state of the terminal), where the
* following information is stored (in high-level):
* - text content of this particular buffer
* - cursor position
* - scroll position
*/
export class Buffer {
public lines: CircularList<[string, number, string]>;

/**
* Create a new Buffer.
* @param {Terminal} terminal - The terminal the buffer will belong to
* @param {number} ydisp - The scroll position of the buffer in the viewport
* @param {number} ybase - The scroll position of the y cursor (ybase + y = the y position within the buffer)
* @param {Terminal} terminal - The terminal the Buffer will belong to
* @param {number} ydisp - The scroll position of the Buffer in the viewport
* @param {number} ybase - The scroll position of the y cursor (ybase + y = the y position within the Buffer)
* @param {number} y - The cursor's y position after ybase
* @param {number} x - The cursor's x position after ybase
*/
Expand Down
30 changes: 28 additions & 2 deletions src/BufferSet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,37 +6,63 @@ import { ITerminal } from './Interfaces';
import { Buffer } from './Buffer';
import { EventEmitter } from './EventEmitter';

/**
* The BufferSet represents the set of two buffers used by xterm terminals (normal and alt) and
* provides also utilities for working with them.
*/
export class BufferSet extends EventEmitter {
private _normal: Buffer;
private _alt: Buffer;
private _activeBuffer: Buffer;

/**
* Create a new BufferSet for the given terminal.
* @param {Terminal} terminal - The terminal the BufferSet will belong to
*/
constructor(private _terminal: ITerminal) {
super();
this._normal = new Buffer(this._terminal);
this._alt = new Buffer(this._terminal);
this._activeBuffer = this._normal;
}

/**
* Returns the alt Buffer of the BufferSet
* @returns {Buffer}
*/
public get alt(): Buffer {
return this._alt;
}

/**
* Returns the normal Buffer of the BufferSet
* @returns {Buffer}
*/
public get active(): Buffer {
return this._activeBuffer;
}

/**
* Returns the currently active Buffer of the BufferSet
* @returns {Buffer}
*/
public get normal(): Buffer {
return this._normal;
}

/**
* Sets the normal Buffer of the BufferSet as its currently active Buffer
*/
public activateNormalBuffer(): void {
this._activeBuffer = this._normal;
this.emit('activate', this._normal); // todo maybe simpler this._terminal.buffer = this._terminal.buffers.normal than using EventEmitter?
this.emit('activate', this._normal);
}

/**
* Sets the alt Buffer of the BufferSet as its currently active Buffer
*/
public activateAltBuffer(): void {
this._activeBuffer = this._alt;
this.emit('activate', this._alt); // todo maybe simpler this._terminal.buffer = this._terminal.buffers.alt than using EventEmitter?
this.emit('activate', this._alt);
}
}

0 comments on commit f840997

Please sign in to comment.