Move BufferLines.ts into Buffer.ts

Part of #791
This commit is contained in:
Daniel Imms
2017-08-07 15:22:58 -07:00
parent 091854df0e
commit c2bb507fe4
8 changed files with 91 additions and 92 deletions
+14 -15
View File
@@ -7,9 +7,8 @@ import * as Browser from './utils/Browser';
import { CharMeasure } from './utils/CharMeasure';
import { CircularList } from './utils/CircularList';
import { EventEmitter } from './EventEmitter';
import { ITerminal, ICircularList, ISelectionManager } from './Interfaces';
import { ITerminal, ICircularList, ISelectionManager, IBuffer } from './Interfaces';
import { SelectionModel } from './SelectionModel';
import { translateBufferLineToString } from './utils/BufferLine';
import { LineData } from './Types';
/**
@@ -102,7 +101,7 @@ export class SelectionManager extends EventEmitter implements ISelectionManager
constructor(
private _terminal: ITerminal,
private _buffer: ICircularList<LineData>,
private _buffer: IBuffer,
private _rowContainer: HTMLElement,
private _charMeasure: CharMeasure
) {
@@ -127,7 +126,7 @@ export class SelectionManager extends EventEmitter implements ISelectionManager
// reverseIndex) and delete in a splice is only ever used when the same
// number of elements was just added. Given this is could actually be
// beneficial to leave the selection as is for these cases.
this._buffer.on('trim', (amount: number) => this._onTrim(amount));
this._buffer.lines.on('trim', (amount: number) => this._onTrim(amount));
}
/**
@@ -151,7 +150,7 @@ export class SelectionManager extends EventEmitter implements ISelectionManager
* switched in or out.
* @param buffer The active buffer.
*/
public setBuffer(buffer: ICircularList<LineData>): void {
public setBuffer(buffer: IBuffer): void {
this._buffer = buffer;
this.clearSelection();
}
@@ -184,12 +183,12 @@ export class SelectionManager extends EventEmitter implements ISelectionManager
// Get first row
const startRowEndCol = start[1] === end[1] ? end[0] : null;
let result: string[] = [];
result.push(translateBufferLineToString(this._buffer.get(start[1]), true, start[0], startRowEndCol));
result.push(this._buffer.translateBufferLineToString(start[1], true, start[0], startRowEndCol));
// Get middle rows
for (let i = start[1] + 1; i <= end[1] - 1; i++) {
const bufferLine = this._buffer.get(i);
const lineText = translateBufferLineToString(bufferLine, true);
const bufferLine = this._buffer.lines.get(i);
const lineText = this._buffer.translateBufferLineToString(i, true);
if ((<any>bufferLine).isWrapped) {
result[result.length - 1] += lineText;
} else {
@@ -199,8 +198,8 @@ export class SelectionManager extends EventEmitter implements ISelectionManager
// Get final row
if (start[1] !== end[1]) {
const bufferLine = this._buffer.get(end[1]);
const lineText = translateBufferLineToString(bufferLine, true, 0, end[0]);
const bufferLine = this._buffer.lines.get(end[1]);
const lineText = this._buffer.translateBufferLineToString(end[1], true, 0, end[0]);
if ((<any>bufferLine).isWrapped) {
result[result.length - 1] += lineText;
} else {
@@ -413,7 +412,7 @@ export class SelectionManager extends EventEmitter implements ISelectionManager
this._model.selectionEnd = null;
// Ensure the line exists
const line = this._buffer.get(this._model.selectionStart[1]);
const line = this._buffer.lines.get(this._model.selectionStart[1]);
if (!line) {
return;
}
@@ -493,8 +492,8 @@ export class SelectionManager extends EventEmitter implements ISelectionManager
// If the character is a wide character include the cell to the right in the
// selection. Note that selections at the very end of the line will never
// have a character.
if (this._model.selectionEnd[1] < this._buffer.length) {
const char = this._buffer.get(this._model.selectionEnd[1])[this._model.selectionEnd[0]];
if (this._model.selectionEnd[1] < this._buffer.lines.length) {
const char = this._buffer.lines.get(this._model.selectionEnd[1])[this._model.selectionEnd[0]];
if (char && char[2] === 0) {
this._model.selectionEnd[0]++;
}
@@ -562,12 +561,12 @@ export class SelectionManager extends EventEmitter implements ISelectionManager
* @param coords The coordinates to get the word at.
*/
private _getWordAt(coords: [number, number]): IWordPosition {
const bufferLine = this._buffer.get(coords[1]);
const bufferLine = this._buffer.lines.get(coords[1]);
if (!bufferLine) {
return null;
}
const line = translateBufferLineToString(bufferLine, false);
const line = this._buffer.translateBufferLineToString(coords[1], false);
// Get actual index, taking into consideration wide characters
let endIndex = this._convertViewportColToCharacterIndex(bufferLine, coords);