@inst/vscode-bin-darwin
Version:
BINARY ONLY - VSCode binary deployment for macOS
199 lines (197 loc) • 7.21 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var CircularList_1 = require("./utils/CircularList");
exports.CHAR_DATA_ATTR_INDEX = 0;
exports.CHAR_DATA_CHAR_INDEX = 1;
exports.CHAR_DATA_WIDTH_INDEX = 2;
exports.CHAR_DATA_CODE_INDEX = 3;
var Buffer = (function () {
function Buffer(_terminal, _hasScrollback) {
this._terminal = _terminal;
this._hasScrollback = _hasScrollback;
this.clear();
}
Object.defineProperty(Buffer.prototype, "lines", {
get: function () {
return this._lines;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Buffer.prototype, "hasScrollback", {
get: function () {
return this._hasScrollback && this.lines.maxLength > this._terminal.rows;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Buffer.prototype, "isCursorInViewport", {
get: function () {
var absoluteY = this.ybase + this.y;
var relativeY = absoluteY - this.ydisp;
return (relativeY >= 0 && relativeY < this._terminal.rows);
},
enumerable: true,
configurable: true
});
Buffer.prototype._getCorrectBufferLength = function (rows) {
if (!this._hasScrollback) {
return rows;
}
return rows + this._terminal.options.scrollback;
};
Buffer.prototype.fillViewportRows = function () {
if (this._lines.length === 0) {
var i = this._terminal.rows;
while (i--) {
this.lines.push(this._terminal.blankLine());
}
}
};
Buffer.prototype.clear = function () {
this.ydisp = 0;
this.ybase = 0;
this.y = 0;
this.x = 0;
this._lines = new CircularList_1.CircularList(this._getCorrectBufferLength(this._terminal.rows));
this.scrollTop = 0;
this.scrollBottom = this._terminal.rows - 1;
this.setupTabStops();
};
Buffer.prototype.resize = function (newCols, newRows) {
var newMaxLength = this._getCorrectBufferLength(newRows);
if (newMaxLength > this._lines.maxLength) {
this._lines.maxLength = newMaxLength;
}
if (this._lines.length > 0) {
if (this._terminal.cols < newCols) {
var ch = [this._terminal.defAttr, ' ', 1, 32];
for (var i = 0; i < this._lines.length; i++) {
if (this._lines.get(i) === undefined) {
this._lines.set(i, this._terminal.blankLine(undefined, undefined, newCols));
}
while (this._lines.get(i).length < newCols) {
this._lines.get(i).push(ch);
}
}
}
var addToY = 0;
if (this._terminal.rows < newRows) {
for (var y = this._terminal.rows; y < newRows; y++) {
if (this._lines.length < newRows + this.ybase) {
if (this.ybase > 0 && this._lines.length <= this.ybase + this.y + addToY + 1) {
this.ybase--;
addToY++;
if (this.ydisp > 0) {
this.ydisp--;
}
}
else {
this._lines.push(this._terminal.blankLine(undefined, undefined, newCols));
}
}
}
}
else {
for (var y = this._terminal.rows; y > newRows; y--) {
if (this._lines.length > newRows + this.ybase) {
if (this._lines.length > this.ybase + this.y + 1) {
this._lines.pop();
}
else {
this.ybase++;
this.ydisp++;
}
}
}
}
if (newMaxLength < this._lines.maxLength) {
var amountToTrim = this._lines.length - newMaxLength;
if (amountToTrim > 0) {
this._lines.trimStart(amountToTrim);
this.ybase = Math.max(this.ybase - amountToTrim, 0);
this.ydisp = Math.max(this.ydisp - amountToTrim, 0);
}
this._lines.maxLength = newMaxLength;
}
if (this.y >= newRows) {
this.y = newRows - 1;
}
if (addToY) {
this.y += addToY;
}
if (this.x >= newCols) {
this.x = newCols - 1;
}
this.scrollTop = 0;
}
this.scrollBottom = newRows - 1;
};
Buffer.prototype.translateBufferLineToString = function (lineIndex, trimRight, startCol, endCol) {
if (startCol === void 0) { startCol = 0; }
if (endCol === void 0) { endCol = null; }
var lineString = '';
var widthAdjustedStartCol = startCol;
var widthAdjustedEndCol = endCol;
var line = this.lines.get(lineIndex);
if (!line) {
return '';
}
for (var i = 0; i < line.length; i++) {
var char = line[i];
lineString += char[exports.CHAR_DATA_CHAR_INDEX];
if (char[exports.CHAR_DATA_WIDTH_INDEX] === 0) {
if (startCol >= i) {
widthAdjustedStartCol--;
}
if (endCol >= i) {
widthAdjustedEndCol--;
}
}
}
var finalEndCol = widthAdjustedEndCol || line.length;
if (trimRight) {
var rightWhitespaceIndex = lineString.search(/\s+$/);
if (rightWhitespaceIndex !== -1) {
finalEndCol = Math.min(finalEndCol, rightWhitespaceIndex);
}
if (finalEndCol <= widthAdjustedStartCol) {
return '';
}
}
return lineString.substring(widthAdjustedStartCol, finalEndCol);
};
Buffer.prototype.setupTabStops = function (i) {
if (i != null) {
if (!this.tabs[i]) {
i = this.prevStop(i);
}
}
else {
this.tabs = {};
i = 0;
}
for (; i < this._terminal.cols; i += this._terminal.options.tabStopWidth) {
this.tabs[i] = true;
}
};
Buffer.prototype.prevStop = function (x) {
if (x == null) {
x = this.x;
}
while (!this.tabs[--x] && x > 0)
;
return x >= this._terminal.cols ? this._terminal.cols - 1 : x < 0 ? 0 : x;
};
Buffer.prototype.nextStop = function (x) {
if (x == null) {
x = this.x;
}
while (!this.tabs[++x] && x < this._terminal.cols)
;
return x >= this._terminal.cols ? this._terminal.cols - 1 : x < 0 ? 0 : x;
};
return Buffer;
}());
exports.Buffer = Buffer;
//# sourceMappingURL=Buffer.js.map