升级xterm相关npm包: 1.add xterm-addon-canvas; 2.update xterm,xterm-addon-search,xterm-addon-serialize,xterm-addon-unicode11,xterm-addon-webgl,xterm-headless. 3.xterm开启webgl使用gpuAcceleration模式有问题,改为默认使用canvas模式.
This commit is contained in:
parent
0fd9b24158
commit
8a3cd1c3a0
|
@ -256,6 +256,7 @@
|
|||
"windows-process-tree",
|
||||
"worker_threads",
|
||||
"xterm",
|
||||
"xterm-addon-canvas",
|
||||
"xterm-addon-search",
|
||||
"xterm-addon-serialize",
|
||||
"xterm-addon-unicode11",
|
||||
|
|
|
@ -20,6 +20,9 @@ vscode-textmate/webpack.config.js
|
|||
|
||||
xterm/src/**
|
||||
|
||||
xterm-addon-canvas/src/**
|
||||
xterm-addon-canvas/out/**
|
||||
|
||||
xterm-addon-search/src/**
|
||||
xterm-addon-search/out/**
|
||||
xterm-addon-search/fixtures/**
|
||||
|
|
13
package.json
13
package.json
|
@ -86,12 +86,13 @@
|
|||
"vscode-proxy-agent": "^0.12.0",
|
||||
"vscode-regexpp": "^3.1.0",
|
||||
"vscode-textmate": "7.0.1",
|
||||
"xterm": "4.19.0-beta.58",
|
||||
"xterm-addon-search": "0.9.0-beta.39",
|
||||
"xterm-addon-serialize": "0.7.0-beta.12",
|
||||
"xterm-addon-unicode11": "0.4.0-beta.3",
|
||||
"xterm-addon-webgl": "0.12.0-beta.37",
|
||||
"xterm-headless": "4.19.0-beta.58",
|
||||
"xterm": "5.4.0-beta.27",
|
||||
"xterm-addon-canvas": "0.6.0-beta.27",
|
||||
"xterm-addon-search": "0.14.0-beta.27",
|
||||
"xterm-addon-serialize": "0.12.0-beta.26",
|
||||
"xterm-addon-unicode11": "0.7.0-beta.26",
|
||||
"xterm-addon-webgl": "0.17.0-beta.26",
|
||||
"xterm-headless": "5.4.0-beta.27",
|
||||
"yauzl": "^2.9.2",
|
||||
"yazl": "^2.4.3"
|
||||
},
|
||||
|
|
|
@ -24,12 +24,13 @@
|
|||
"vscode-proxy-agent": "^0.12.0",
|
||||
"vscode-regexpp": "^3.1.0",
|
||||
"vscode-textmate": "7.0.1",
|
||||
"xterm": "4.19.0-beta.58",
|
||||
"xterm-addon-search": "0.9.0-beta.39",
|
||||
"xterm-addon-serialize": "0.7.0-beta.12",
|
||||
"xterm-addon-unicode11": "0.4.0-beta.3",
|
||||
"xterm-addon-webgl": "0.12.0-beta.37",
|
||||
"xterm-headless": "4.19.0-beta.58",
|
||||
"xterm": "5.1.0-beta.46",
|
||||
"xterm-addon-canvas": "0.3.0-beta.22",
|
||||
"xterm-addon-search": "0.11.0-beta.7",
|
||||
"xterm-addon-serialize": "0.9.0-beta.3",
|
||||
"xterm-addon-unicode11": "0.5.0-beta.1",
|
||||
"xterm-addon-webgl": "0.14.0-beta.31",
|
||||
"xterm-headless": "5.1.0-beta.46",
|
||||
"yauzl": "^2.9.2",
|
||||
"yazl": "^2.4.3"
|
||||
},
|
||||
|
|
|
@ -10,9 +10,10 @@
|
|||
"tas-client-umd": "0.1.6",
|
||||
"vscode-oniguruma": "1.6.1",
|
||||
"vscode-textmate": "7.0.1",
|
||||
"xterm": "4.19.0-beta.58",
|
||||
"xterm-addon-search": "0.9.0-beta.39",
|
||||
"xterm-addon-unicode11": "0.4.0-beta.3",
|
||||
"xterm-addon-webgl": "0.12.0-beta.37"
|
||||
"xterm": "5.1.0-beta.46",
|
||||
"xterm-addon-canvas": "0.3.0-beta.22",
|
||||
"xterm-addon-search": "0.11.0-beta.7",
|
||||
"xterm-addon-unicode11": "0.5.0-beta.1",
|
||||
"xterm-addon-webgl": "0.14.0-beta.31"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -113,22 +113,27 @@ vscode-textmate@7.0.1:
|
|||
resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-7.0.1.tgz#8118a32b02735dccd14f893b495fa5389ad7de79"
|
||||
integrity sha512-zQ5U/nuXAAMsh691FtV0wPz89nSkHbs+IQV8FDk+wew9BlSDhf4UmWGlWJfTR2Ti6xZv87Tj5fENzKf6Qk7aLw==
|
||||
|
||||
xterm-addon-search@0.9.0-beta.39:
|
||||
version "0.9.0-beta.39"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.9.0-beta.39.tgz#e8376e1485ee7d763c07d1a8f1354114f65b3e3e"
|
||||
integrity sha512-h45wkecgfqXXoAUqgNytAfSd6g0xNT6rZy/enVaEU0aes7QoL9pxHUKkCry8PP6hs03Slk0VxQ4AGsbSZGvK/w==
|
||||
xterm-addon-canvas@0.3.0-beta.22:
|
||||
version "0.3.0-beta.22"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.3.0-beta.22.tgz#8b145ad01a5e27b7b1d20eebed9929f9c9f51830"
|
||||
integrity sha512-4F+XVbxlnyq8OGcdEoM+hz2B6+wdOSEdckNRgq9RRNgnk7YF/Gp0MhWN3orJUT/JqWJFemxVl2Giil8yTRqqEQ==
|
||||
|
||||
xterm-addon-unicode11@0.4.0-beta.3:
|
||||
version "0.4.0-beta.3"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.4.0-beta.3.tgz#f350184155fafd5ad0d6fbf31d13e6ca7dea1efa"
|
||||
integrity sha512-FryZAVwbUjKTmwXnm1trch/2XO60F5JsDvOkZhzobV1hm10sFLVuZpFyHXiUx7TFeeFsvNP+S77LAtWoeT5z+Q==
|
||||
xterm-addon-search@0.11.0-beta.7:
|
||||
version "0.11.0-beta.7"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.11.0-beta.7.tgz#d90bcbe9e8f9238c18ba6145bd7ec2f8e3240052"
|
||||
integrity sha512-i/c774V0/Eon3BIFRsRR3OjKTnMGkccBo12yDkOa40tnAD4aa8FjspE3bxW/Hh1mUEhCSgBSLnMDlK/GwnUC+g==
|
||||
|
||||
xterm-addon-webgl@0.12.0-beta.37:
|
||||
version "0.12.0-beta.37"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.12.0-beta.37.tgz#e465100041a7e0b1d32b01cd0b0ba5a516ac13c2"
|
||||
integrity sha512-d4GfKlMrWZGzsMfMHd2siG+QiOvwikhwiu+JQlIhlnAShT/wU5BOGbNfDDA1tHmkW7G1UCFgucBuVxrs5wjuBQ==
|
||||
xterm-addon-unicode11@0.5.0-beta.1:
|
||||
version "0.5.0-beta.1"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.5.0-beta.1.tgz#8a9e9356018e082318abbe2be1f9599fcc6b46a2"
|
||||
integrity sha512-uAErX4gwhW6N524stLG6oZR3yBGgPnFmZ2Tv4vyYy7tcgDuHRoc22xYSCDgO1ohz1FLlOm8JGXRjXliwO9ic3A==
|
||||
|
||||
xterm@4.19.0-beta.58:
|
||||
version "4.19.0-beta.58"
|
||||
resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0-beta.58.tgz#cbe535b0b85bc7f8ae3cc242df006bea04cdf541"
|
||||
integrity sha512-fr3QC2qS2NBab8X7kwA/3QZELzQqhAKsngvK8NkhsrFN1DAuyEETkzqXuKbO7OKpCB6VqGDN6GPkNlUB9VrIDA==
|
||||
xterm-addon-webgl@0.14.0-beta.31:
|
||||
version "0.14.0-beta.31"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.14.0-beta.31.tgz#91c96efaf70bd9e6d3903202f81f5fbd0c3805aa"
|
||||
integrity sha512-9jmGrkTXJzi4kmqd3pw9wOAS8MxmcuSmOxclmRr4GivYWe/Y/mapdGZtt4HAxEneZFjXMwZSMruOi72QX6QqPg==
|
||||
|
||||
xterm@5.1.0-beta.46:
|
||||
version "5.1.0-beta.46"
|
||||
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.1.0-beta.46.tgz#76716e8ac88a4111781dee5108f5affa572cb4ab"
|
||||
integrity sha512-4i9CzOWbDwQZVLJB3teNqw5PtB/BEB1N3t6T886M0N1IW0WXqIy3r4gXpmxWP+4cNuj4R4tFq+yeCTTJ3rHnFg==
|
||||
|
|
|
@ -919,35 +919,40 @@ wrappy@1:
|
|||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
|
||||
|
||||
xterm-addon-search@0.9.0-beta.39:
|
||||
version "0.9.0-beta.39"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.9.0-beta.39.tgz#e8376e1485ee7d763c07d1a8f1354114f65b3e3e"
|
||||
integrity sha512-h45wkecgfqXXoAUqgNytAfSd6g0xNT6rZy/enVaEU0aes7QoL9pxHUKkCry8PP6hs03Slk0VxQ4AGsbSZGvK/w==
|
||||
xterm-addon-canvas@0.3.0-beta.22:
|
||||
version "0.3.0-beta.22"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.3.0-beta.22.tgz#8b145ad01a5e27b7b1d20eebed9929f9c9f51830"
|
||||
integrity sha512-4F+XVbxlnyq8OGcdEoM+hz2B6+wdOSEdckNRgq9RRNgnk7YF/Gp0MhWN3orJUT/JqWJFemxVl2Giil8yTRqqEQ==
|
||||
|
||||
xterm-addon-serialize@0.7.0-beta.12:
|
||||
version "0.7.0-beta.12"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.7.0-beta.12.tgz#4f845d8b1a9f9b7ae3f910455ce8c58b041babc7"
|
||||
integrity sha512-b4Ug0B/RSJMux+KAcp+PXVqubVyXjN1yCQw1FOkgVYTpmd9AH/X+EcxKml5Lz8DsKmsXqfD9AlV3WpEeT+OtMw==
|
||||
xterm-addon-search@0.11.0-beta.7:
|
||||
version "0.11.0-beta.7"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.11.0-beta.7.tgz#d90bcbe9e8f9238c18ba6145bd7ec2f8e3240052"
|
||||
integrity sha512-i/c774V0/Eon3BIFRsRR3OjKTnMGkccBo12yDkOa40tnAD4aa8FjspE3bxW/Hh1mUEhCSgBSLnMDlK/GwnUC+g==
|
||||
|
||||
xterm-addon-unicode11@0.4.0-beta.3:
|
||||
version "0.4.0-beta.3"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.4.0-beta.3.tgz#f350184155fafd5ad0d6fbf31d13e6ca7dea1efa"
|
||||
integrity sha512-FryZAVwbUjKTmwXnm1trch/2XO60F5JsDvOkZhzobV1hm10sFLVuZpFyHXiUx7TFeeFsvNP+S77LAtWoeT5z+Q==
|
||||
xterm-addon-serialize@0.9.0-beta.3:
|
||||
version "0.9.0-beta.3"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.9.0-beta.3.tgz#bb4ed416db5748bcbe55a4b6d4c2151368fdae74"
|
||||
integrity sha512-LaFuowtdxNdeuLm+KmtsoR4mgPOLu/I9k0hlWXbzAd1okJhthwMH4Y6cuL0/pFk1AclP5s+L42glv8PV0GnVsg==
|
||||
|
||||
xterm-addon-webgl@0.12.0-beta.37:
|
||||
version "0.12.0-beta.37"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.12.0-beta.37.tgz#e465100041a7e0b1d32b01cd0b0ba5a516ac13c2"
|
||||
integrity sha512-d4GfKlMrWZGzsMfMHd2siG+QiOvwikhwiu+JQlIhlnAShT/wU5BOGbNfDDA1tHmkW7G1UCFgucBuVxrs5wjuBQ==
|
||||
xterm-addon-unicode11@0.5.0-beta.1:
|
||||
version "0.5.0-beta.1"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.5.0-beta.1.tgz#8a9e9356018e082318abbe2be1f9599fcc6b46a2"
|
||||
integrity sha512-uAErX4gwhW6N524stLG6oZR3yBGgPnFmZ2Tv4vyYy7tcgDuHRoc22xYSCDgO1ohz1FLlOm8JGXRjXliwO9ic3A==
|
||||
|
||||
xterm-headless@4.19.0-beta.58:
|
||||
version "4.19.0-beta.58"
|
||||
resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-4.19.0-beta.58.tgz#3a38cf3b9cd2606fb342a5cf8f2a0cfb963a62e8"
|
||||
integrity sha512-wKQW8VzkFjyYDvcaM26gulo+YghyocfkZnKMH7gc/+/mFn3YXUPBPuOcX6e0M7NibyMlewpQpZjHQUPLBjkzfw==
|
||||
xterm-addon-webgl@0.14.0-beta.31:
|
||||
version "0.14.0-beta.31"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.14.0-beta.31.tgz#91c96efaf70bd9e6d3903202f81f5fbd0c3805aa"
|
||||
integrity sha512-9jmGrkTXJzi4kmqd3pw9wOAS8MxmcuSmOxclmRr4GivYWe/Y/mapdGZtt4HAxEneZFjXMwZSMruOi72QX6QqPg==
|
||||
|
||||
xterm@4.19.0-beta.58:
|
||||
version "4.19.0-beta.58"
|
||||
resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0-beta.58.tgz#cbe535b0b85bc7f8ae3cc242df006bea04cdf541"
|
||||
integrity sha512-fr3QC2qS2NBab8X7kwA/3QZELzQqhAKsngvK8NkhsrFN1DAuyEETkzqXuKbO7OKpCB6VqGDN6GPkNlUB9VrIDA==
|
||||
xterm-headless@5.1.0-beta.46:
|
||||
version "5.1.0-beta.46"
|
||||
resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-5.1.0-beta.46.tgz#dd1c0f99dec1224eca7e67428f47ceb54394dda5"
|
||||
integrity sha512-BXA79FsGDZcrSgikeluzl0CWLP3pcUj5fo1WfUVphOc1LHdpKkNhIHG8UVmC5QJjfH7wb0XUWUFyz0rWZmA5yA==
|
||||
|
||||
xterm@5.1.0-beta.46:
|
||||
version "5.1.0-beta.46"
|
||||
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.1.0-beta.46.tgz#76716e8ac88a4111781dee5108f5affa572cb4ab"
|
||||
integrity sha512-4i9CzOWbDwQZVLJB3teNqw5PtB/BEB1N3t6T886M0N1IW0WXqIy3r4gXpmxWP+4cNuj4R4tFq+yeCTTJ3rHnFg==
|
||||
|
||||
yallist@^4.0.0:
|
||||
version "4.0.0"
|
||||
|
|
|
@ -8,6 +8,7 @@ const path = require('path');
|
|||
|
||||
const moduleNames = [
|
||||
'xterm',
|
||||
'xterm-addon-canvas',
|
||||
'xterm-addon-search',
|
||||
'xterm-addon-unicode11',
|
||||
'xterm-addon-webgl'
|
||||
|
|
|
@ -136,6 +136,7 @@
|
|||
'vscode-textmate': `${baseNodeModulesPath}/vscode-textmate/release/main.js`,
|
||||
'vscode-oniguruma': `${baseNodeModulesPath}/vscode-oniguruma/release/main.js`,
|
||||
'xterm': `${baseNodeModulesPath}/xterm/lib/xterm.js`,
|
||||
'xterm-addon-canvas': `${baseNodeModulesPath}/xterm-addon-canvas/lib/xterm-addon-canvas.js`,
|
||||
'xterm-addon-search': `${baseNodeModulesPath}/xterm-addon-search/lib/xterm-addon-search.js`,
|
||||
'xterm-addon-unicode11': `${baseNodeModulesPath}/xterm-addon-unicode11/lib/xterm-addon-unicode11.js`,
|
||||
'xterm-addon-webgl': `${baseNodeModulesPath}/xterm-addon-webgl/lib/xterm-addon-webgl.js`,
|
||||
|
@ -150,7 +151,7 @@
|
|||
// which has a fallback to using node.js `require`
|
||||
// (node.js enabled renderers only)
|
||||
if (!safeProcess.sandboxed) {
|
||||
loaderConfig.amdModulesPattern = /(^vs\/)|(^vscode-textmate$)|(^vscode-oniguruma$)|(^xterm$)|(^xterm-addon-search$)|(^xterm-addon-unicode11$)|(^xterm-addon-webgl$)|(^@vscode\/iconv-lite-umd$)|(^jschardet$)|(^@vscode\/vscode-languagedetection$)|(^vscode-regexp-languagedetection$)|(^tas-client-umd$)/;
|
||||
loaderConfig.amdModulesPattern = /(^vs\/)|(^vscode-textmate$)|(^vscode-oniguruma$)|(^xterm$)|(^xterm-addon-canvas$)|(^xterm-addon-search$)|(^xterm-addon-unicode11$)|(^xterm-addon-webgl$)|(^@vscode\/iconv-lite-umd$)|(^jschardet$)|(^@vscode\/vscode-languagedetection$)|(^vscode-regexp-languagedetection$)|(^tas-client-umd$)/;
|
||||
}
|
||||
|
||||
// Signal before require.config()
|
||||
|
|
|
@ -737,8 +737,14 @@ class XtermSerializer implements ITerminalSerializer {
|
|||
reviveBuffer: string | undefined,
|
||||
logService: ILogService
|
||||
) {
|
||||
this._xterm = new XtermTerminal({ cols, rows, scrollback });
|
||||
this._xterm = new XtermTerminal({
|
||||
cols,
|
||||
rows,
|
||||
scrollback,
|
||||
allowProposedApi: true
|
||||
});
|
||||
if (reviveBuffer) {
|
||||
// console.log('wpl reviveBuffer:' + reviveBuffer);
|
||||
this._xterm.writeln(reviveBuffer);
|
||||
}
|
||||
this.setUnicodeVersion(unicodeVersion);
|
||||
|
@ -747,6 +753,7 @@ class XtermSerializer implements ITerminalSerializer {
|
|||
}
|
||||
|
||||
handleData(data: string): void {
|
||||
// console.log('wpl handleData:' + data);
|
||||
this._xterm.write(data);
|
||||
}
|
||||
|
||||
|
@ -757,7 +764,7 @@ class XtermSerializer implements ITerminalSerializer {
|
|||
async generateReplayEvent(normalBufferOnly?: boolean): Promise<IPtyHostProcessReplayEvent> {
|
||||
const serialize = new (await this._getSerializeConstructor());
|
||||
this._xterm.loadAddon(serialize);
|
||||
const options: ISerializeOptions = { scrollback: this._xterm.getOption('scrollback') };
|
||||
const options: ISerializeOptions = { scrollback: this._xterm.options.scrollback };
|
||||
if (normalBufferOnly) {
|
||||
options.excludeAltBuffer = true;
|
||||
options.excludeModes = true;
|
||||
|
|
|
@ -202,8 +202,8 @@ export class TerminalLinkManager extends DisposableStore {
|
|||
|
||||
const core = (this._xterm as any)._core as IXtermCore;
|
||||
const cellDimensions = {
|
||||
width: core._renderService.dimensions.actualCellWidth,
|
||||
height: core._renderService.dimensions.actualCellHeight
|
||||
width: core._renderService.dimensions.css.cell.width,
|
||||
height: core._renderService.dimensions.css.cell.height
|
||||
};
|
||||
const terminalDimensions = {
|
||||
width: this._xterm.cols,
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
|
||||
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
|
||||
import 'vs/css!./media/scrollbar';
|
||||
import 'vs/css!./media/terminal';
|
||||
import 'vs/css!./media/widgets';
|
||||
import 'vs/css!./media/xterm';
|
||||
import 'vs/css!./media/terminal';
|
||||
import * as nls from 'vs/nls';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { CommandsRegistry } from 'vs/platform/commands/common/commands';
|
||||
|
|
|
@ -138,10 +138,10 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper {
|
|||
if (this.config.gpuAcceleration === 'off') {
|
||||
this._lastFontMeasurement.charWidth = rect.width;
|
||||
} else {
|
||||
const scaledCharWidth = Math.floor(rect.width * window.devicePixelRatio);
|
||||
const scaledCellWidth = scaledCharWidth + Math.round(letterSpacing);
|
||||
const actualCellWidth = scaledCellWidth / window.devicePixelRatio;
|
||||
this._lastFontMeasurement.charWidth = actualCellWidth - Math.round(letterSpacing) / window.devicePixelRatio;
|
||||
const deviceCharWidth = Math.floor(rect.width * window.devicePixelRatio);
|
||||
const deviceCellWidth = deviceCharWidth + Math.round(letterSpacing);
|
||||
const cssCellWidth = deviceCellWidth / window.devicePixelRatio;
|
||||
this._lastFontMeasurement.charWidth = cssCellWidth - Math.round(letterSpacing) / window.devicePixelRatio;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -185,14 +185,14 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper {
|
|||
|
||||
// Get the character dimensions from xterm if it's available
|
||||
if (xtermCore) {
|
||||
if (xtermCore._renderService && xtermCore._renderService.dimensions?.actualCellWidth && xtermCore._renderService.dimensions?.actualCellHeight) {
|
||||
if (xtermCore._renderService && xtermCore._renderService.dimensions?.css.cell.width && xtermCore._renderService.dimensions?.css.cell.height) {
|
||||
return {
|
||||
fontFamily,
|
||||
fontSize,
|
||||
letterSpacing,
|
||||
lineHeight,
|
||||
charHeight: xtermCore._renderService.dimensions.actualCellHeight / lineHeight,
|
||||
charWidth: xtermCore._renderService.dimensions.actualCellWidth - Math.round(letterSpacing) / window.devicePixelRatio
|
||||
charHeight: xtermCore._renderService.dimensions.css.cell.height / lineHeight,
|
||||
charWidth: xtermCore._renderService.dimensions.css.cell.width - Math.round(letterSpacing) / window.devicePixelRatio
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1134,7 +1134,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
|||
|
||||
// If IShellLaunchConfig.waitOnExit was true and the process finished before the terminal
|
||||
// panel was initialized.
|
||||
if (xterm.raw.getOption('disableStdin')) {
|
||||
if (xterm.raw.options.disableStdin) {
|
||||
this._attachPressAnyKeyToCloseListener(xterm.raw);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,13 +31,17 @@ export interface IXtermCore {
|
|||
|
||||
_renderService: {
|
||||
dimensions: {
|
||||
actualCellWidth: number;
|
||||
actualCellHeight: number;
|
||||
css: {
|
||||
cell: {
|
||||
width: number;
|
||||
height: number;
|
||||
}
|
||||
}
|
||||
},
|
||||
_renderer: {
|
||||
_renderLayers?: any[];
|
||||
};
|
||||
_onIntersectionChange: any;
|
||||
_handleIntersectionChange: any;
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -3,11 +3,12 @@
|
|||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import type { IBuffer, ITheme, RendererType, Terminal as RawXtermTerminal } from 'xterm';
|
||||
import type { IBuffer, ITheme, Terminal as RawXtermTerminal } from 'xterm';
|
||||
import type { CanvasAddon as CanvasAddonType } from 'xterm-addon-canvas';
|
||||
import type { ISearchOptions, SearchAddon as SearchAddonType } from 'xterm-addon-search';
|
||||
import type { Unicode11Addon as Unicode11AddonType } from 'xterm-addon-unicode11';
|
||||
import type { WebglAddon as WebglAddonType } from 'xterm-addon-webgl';
|
||||
import { SerializeAddon as SerializeAddonType } from 'xterm-addon-serialize';
|
||||
import type { SerializeAddon as SerializeAddonType } from 'xterm-addon-serialize';
|
||||
import { IXtermCore } from 'vs/workbench/contrib/terminal/browser/xterm-private';
|
||||
import { ConfigurationTarget, IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { TerminalConfigHelper } from 'vs/workbench/contrib/terminal/browser/terminalConfigHelper';
|
||||
|
@ -41,10 +42,11 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
|||
const SLOW_CANVAS_RENDER_THRESHOLD = 50;
|
||||
const NUMBER_OF_FRAMES_TO_MEASURE = 20;
|
||||
|
||||
let CanvasAddon: typeof CanvasAddonType;
|
||||
let SearchAddon: typeof SearchAddonType;
|
||||
let SerializeAddon: typeof SerializeAddonType;
|
||||
let Unicode11Addon: typeof Unicode11AddonType;
|
||||
let WebglAddon: typeof WebglAddonType;
|
||||
let SerializeAddon: typeof SerializeAddonType;
|
||||
|
||||
/**
|
||||
* Wraps the xterm object with additional functionality. Interaction with the backing process is out
|
||||
|
@ -56,6 +58,7 @@ export class XtermTerminal extends DisposableStore implements IXtermTerminal {
|
|||
|
||||
private _core: IXtermCore;
|
||||
private static _suggestedRendererType: 'canvas' | 'dom' | undefined = undefined;
|
||||
private static _checkedWebglCompatible = false;
|
||||
private _container?: HTMLElement;
|
||||
|
||||
// Always on addons
|
||||
|
@ -64,6 +67,7 @@ export class XtermTerminal extends DisposableStore implements IXtermTerminal {
|
|||
private _decorationAddon: DecorationAddon | undefined;
|
||||
|
||||
// Optional addons
|
||||
private _canvasAddon?: CanvasAddonType;
|
||||
private _searchAddon?: SearchAddonType;
|
||||
private _unicode11Addon?: Unicode11AddonType;
|
||||
private _webglAddon?: WebglAddonType;
|
||||
|
@ -116,6 +120,7 @@ export class XtermTerminal extends DisposableStore implements IXtermTerminal {
|
|||
const editorOptions = this._configurationService.getValue<IEditorOptions>('editor');
|
||||
|
||||
this.raw = this.add(new xtermCtor({
|
||||
allowProposedApi: true,
|
||||
cols,
|
||||
rows,
|
||||
altClickMovesCursor: config.altClickMovesCursor && editorOptions.multiCursorModifier === 'alt',
|
||||
|
@ -132,14 +137,12 @@ export class XtermTerminal extends DisposableStore implements IXtermTerminal {
|
|||
cursorBlink: config.cursorBlinking,
|
||||
cursorStyle: config.cursorStyle === 'line' ? 'bar' : config.cursorStyle,
|
||||
cursorWidth: config.cursorWidth,
|
||||
bellStyle: 'none',
|
||||
macOptionIsMeta: config.macOptionIsMeta,
|
||||
macOptionClickForcesSelection: config.macOptionClickForcesSelection,
|
||||
rightClickSelectsWord: config.rightClickBehavior === 'selectWord',
|
||||
fastScrollModifier: 'alt',
|
||||
fastScrollSensitivity: config.fastScrollSensitivity,
|
||||
scrollSensitivity: config.mouseWheelScrollSensitivity,
|
||||
rendererType: this._getBuiltInXtermRenderer(config.gpuAcceleration, XtermTerminal._suggestedRendererType),
|
||||
wordSeparator: config.wordSeparators,
|
||||
overviewRulerWidth: 10
|
||||
}));
|
||||
|
@ -217,6 +220,9 @@ export class XtermTerminal extends DisposableStore implements IXtermTerminal {
|
|||
this._container = container;
|
||||
if (this._shouldLoadWebgl()) {
|
||||
this._enableWebglRenderer();
|
||||
} else if (this._shouldLoadCanvas()) {
|
||||
this._enableCanvasRenderer();
|
||||
// rendererType: this._getBuiltInXtermRenderer(config.gpuAcceleration, XtermTerminal._suggestedRendererType),
|
||||
}
|
||||
// Screen must be created at this point as xterm.open is called
|
||||
return this._container.querySelector('.xterm-screen')!;
|
||||
|
@ -244,7 +250,11 @@ export class XtermTerminal extends DisposableStore implements IXtermTerminal {
|
|||
this._enableWebglRenderer();
|
||||
} else {
|
||||
this._disposeOfWebglRenderer();
|
||||
this.raw.options.rendererType = this._getBuiltInXtermRenderer(config.gpuAcceleration, XtermTerminal._suggestedRendererType);
|
||||
if (this._shouldLoadCanvas()) {
|
||||
this._enableCanvasRenderer();
|
||||
} else {
|
||||
this._disposeOfCanvasRenderer();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -252,6 +262,10 @@ export class XtermTerminal extends DisposableStore implements IXtermTerminal {
|
|||
return !isSafari && (this._configHelper.config.gpuAcceleration === 'auto' && XtermTerminal._suggestedRendererType === undefined) || this._configHelper.config.gpuAcceleration === 'on';
|
||||
}
|
||||
|
||||
private _shouldLoadCanvas(): boolean {
|
||||
return (this._configHelper.config.gpuAcceleration === 'auto' && (XtermTerminal._suggestedRendererType === undefined || XtermTerminal._suggestedRendererType === 'canvas')) || this._configHelper.config.gpuAcceleration === 'canvas';
|
||||
}
|
||||
|
||||
forceRedraw() {
|
||||
this._webglAddon?.clearTextureAtlas();
|
||||
this.raw.clearTextureAtlas();
|
||||
|
@ -270,8 +284,8 @@ export class XtermTerminal extends DisposableStore implements IXtermTerminal {
|
|||
// This is to fix an issue where dragging the windpow to the top of the screen to
|
||||
// maximize on Windows/Linux would fire an event saying that the terminal was not
|
||||
// visible.
|
||||
if (this.raw.getOption('rendererType') === 'canvas') {
|
||||
this._core._renderService?._onIntersectionChange({ intersectionRatio: 1 });
|
||||
if (!!this._canvasAddon) {
|
||||
this._core._renderService?._handleIntersectionChange({ intersectionRatio: 1 });
|
||||
// HACK: Force a refresh of the screen to ensure links are refresh corrected.
|
||||
// This can probably be removed when the above hack is fixed in Chromium.
|
||||
this.raw.refresh(0, this.raw.rows - 1);
|
||||
|
@ -422,27 +436,49 @@ export class XtermTerminal extends DisposableStore implements IXtermTerminal {
|
|||
}
|
||||
}
|
||||
|
||||
private _getBuiltInXtermRenderer(gpuAcceleration: string, suggestedRendererType?: string): RendererType {
|
||||
let rendererType: RendererType = 'canvas';
|
||||
if (gpuAcceleration === 'off' || (gpuAcceleration === 'auto' && suggestedRendererType === 'dom')) {
|
||||
rendererType = 'dom';
|
||||
}
|
||||
return rendererType;
|
||||
}
|
||||
// TODO: Fix renderer
|
||||
// private _getBuiltInXtermRenderer(gpuAcceleration: string, suggestedRendererType?: string): RendererType {
|
||||
// let rendererType: RendererType = 'canvas';
|
||||
// if (gpuAcceleration === 'off' || (gpuAcceleration === 'auto' && suggestedRendererType === 'dom')) {
|
||||
// rendererType = 'dom';
|
||||
// }
|
||||
// return rendererType;
|
||||
// }
|
||||
|
||||
private async _enableWebglRenderer(): Promise<void> {
|
||||
if (!this.raw.element || this._webglAddon) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if the the WebGL renderer is compatible with xterm.js:
|
||||
// - https://github.com/microsoft/vscode/issues/190195
|
||||
// - https://github.com/xtermjs/xterm.js/issues/4665
|
||||
// - https://bugs.chromium.org/p/chromium/issues/detail?id=1476475
|
||||
if (!XtermTerminal._checkedWebglCompatible) {
|
||||
XtermTerminal._checkedWebglCompatible = true;
|
||||
const checkCanvas = document.createElement('canvas');
|
||||
const checkGl = checkCanvas.getContext('webgl2');
|
||||
const debugInfo = checkGl?.getExtension('WEBGL_debug_renderer_info');
|
||||
if (checkGl && debugInfo) {
|
||||
const renderer = checkGl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
|
||||
if (renderer.startsWith('ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero)')) {
|
||||
this._disableWebglForThisSession();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const Addon = await this._getWebglAddonConstructor();
|
||||
this._webglAddon = new Addon();
|
||||
this._disposeOfCanvasRenderer();
|
||||
try {
|
||||
this.raw.loadAddon(this._webglAddon);
|
||||
this._logService.trace('Webgl was loaded');
|
||||
this._webglAddon.onContextLoss(() => {
|
||||
this._logService.info(`Webgl lost context, disposing of webgl renderer`);
|
||||
this._disposeOfWebglRenderer();
|
||||
this.raw.options.rendererType = 'dom';
|
||||
// TODO: Fix renderer
|
||||
// this.raw.options.rendererType = 'dom';
|
||||
});
|
||||
// Uncomment to add the texture atlas to the DOM
|
||||
// setTimeout(() => {
|
||||
|
@ -457,12 +493,45 @@ export class XtermTerminal extends DisposableStore implements IXtermTerminal {
|
|||
if (!neverMeasureRenderTime && this._configHelper.config.gpuAcceleration !== 'off') {
|
||||
this._measureRenderTime();
|
||||
}
|
||||
this.raw.options.rendererType = 'canvas';
|
||||
XtermTerminal._suggestedRendererType = 'canvas';
|
||||
this._disposeOfWebglRenderer();
|
||||
this._disableWebglForThisSession();
|
||||
}
|
||||
}
|
||||
|
||||
private _disableWebglForThisSession() {
|
||||
XtermTerminal._suggestedRendererType = 'canvas';
|
||||
this._disposeOfWebglRenderer();
|
||||
this._enableCanvasRenderer();
|
||||
}
|
||||
|
||||
private async _enableCanvasRenderer(): Promise<void> {
|
||||
if (!this.raw.element || this._canvasAddon) {
|
||||
return;
|
||||
}
|
||||
const Addon = await this._getCanvasAddonConstructor();
|
||||
this._canvasAddon = new Addon();
|
||||
this._disposeOfWebglRenderer();
|
||||
try {
|
||||
this.raw.loadAddon(this._canvasAddon);
|
||||
this._logService.trace('Canvas was loaded');
|
||||
} catch (e) {
|
||||
this._logService.warn(`Canvas could not be loaded. Falling back to the dom renderer type.`, e);
|
||||
const neverMeasureRenderTime = this._storageService.getBoolean(TerminalStorageKeys.NeverMeasureRenderTime, StorageScope.GLOBAL, false);
|
||||
// if it's already set to dom, no need to measure render time
|
||||
if (!neverMeasureRenderTime && this._configHelper.config.gpuAcceleration !== 'off') {
|
||||
this._measureRenderTime();
|
||||
}
|
||||
XtermTerminal._suggestedRendererType = 'dom';
|
||||
this._disposeOfCanvasRenderer();
|
||||
}
|
||||
}
|
||||
|
||||
protected async _getCanvasAddonConstructor(): Promise<typeof CanvasAddonType> {
|
||||
if (!CanvasAddon) {
|
||||
CanvasAddon = (await import('xterm-addon-canvas')).CanvasAddon;
|
||||
}
|
||||
return CanvasAddon;
|
||||
}
|
||||
|
||||
protected async _getSearchAddonConstructor(): Promise<typeof SearchAddonType> {
|
||||
if (!SearchAddon) {
|
||||
SearchAddon = (await import('xterm-addon-search')).SearchAddon;
|
||||
|
@ -491,6 +560,15 @@ export class XtermTerminal extends DisposableStore implements IXtermTerminal {
|
|||
return SerializeAddon;
|
||||
}
|
||||
|
||||
private _disposeOfCanvasRenderer(): void {
|
||||
try {
|
||||
this._canvasAddon?.dispose();
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
this._canvasAddon = undefined;
|
||||
}
|
||||
|
||||
private _disposeOfWebglRenderer(): void {
|
||||
try {
|
||||
this._webglAddon?.dispose();
|
||||
|
@ -576,7 +654,7 @@ export class XtermTerminal extends DisposableStore implements IXtermTerminal {
|
|||
foreground: foregroundColor?.toString(),
|
||||
cursor: cursorColor?.toString(),
|
||||
cursorAccent: cursorAccentColor?.toString(),
|
||||
selection: selectionBackgroundColor?.toString(),
|
||||
selectionBackground: selectionBackgroundColor?.toString(),
|
||||
selectionForeground: selectionForegroundColor?.toString(),
|
||||
black: theme.getColor(ansiColorIdentifiers[0])?.toString(),
|
||||
red: theme.getColor(ansiColorIdentifiers[1])?.toString(),
|
||||
|
@ -598,7 +676,7 @@ export class XtermTerminal extends DisposableStore implements IXtermTerminal {
|
|||
}
|
||||
|
||||
private _updateTheme(theme?: IColorTheme): void {
|
||||
this.raw.setOption('theme', this._getXtermTheme(theme));
|
||||
this.raw.options.theme = this._getXtermTheme(theme);
|
||||
}
|
||||
|
||||
private async _updateUnicodeVersion(): Promise<void> {
|
||||
|
|
|
@ -28,9 +28,11 @@ import { TerminalCapabilityStore } from 'vs/platform/terminal/common/capabilitie
|
|||
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
|
||||
import { ContextMenuService } from 'vs/platform/contextview/browser/contextMenuService';
|
||||
|
||||
class TestWebglAddon {
|
||||
class TestWebglAddon implements WebglAddon {
|
||||
static shouldThrow = false;
|
||||
static isEnabled = false;
|
||||
readonly onChangeTextureAtlas = new Emitter().event as IEvent<HTMLCanvasElement>;
|
||||
readonly onAddTextureAtlasCanvas = new Emitter().event as IEvent<HTMLCanvasElement>;
|
||||
readonly onContextLoss = new Emitter().event as IEvent<void>;
|
||||
activate() {
|
||||
TestWebglAddon.isEnabled = !TestWebglAddon.shouldThrow;
|
||||
|
@ -120,8 +122,8 @@ suite('XtermTerminal', () => {
|
|||
});
|
||||
|
||||
test('should use fallback dimensions of 80x30', () => {
|
||||
strictEqual(xterm.raw.options.cols, 80);
|
||||
strictEqual(xterm.raw.options.rows, 30);
|
||||
strictEqual(xterm.raw.cols, 80);
|
||||
strictEqual(xterm.raw.rows, 30);
|
||||
});
|
||||
|
||||
suite('theme', () => {
|
||||
|
@ -243,7 +245,6 @@ suite('XtermTerminal', () => {
|
|||
suite('renderers', () => {
|
||||
test('should re-evaluate gpu acceleration auto when the setting is changed', async () => {
|
||||
// Check initial state
|
||||
strictEqual(xterm.raw.options.rendererType, 'dom');
|
||||
strictEqual(TestWebglAddon.isEnabled, false);
|
||||
|
||||
// Open xterm as otherwise the webgl addon won't activate
|
||||
|
@ -261,18 +262,17 @@ suite('XtermTerminal', () => {
|
|||
}
|
||||
|
||||
// Turn off to reset state
|
||||
// TODO: Fix renderer
|
||||
await configurationService.setUserConfiguration('terminal', { integrated: { ...defaultTerminalConfig, gpuAcceleration: 'off' } });
|
||||
configurationService.onDidChangeConfigurationEmitter.fire({ affectsConfiguration: () => true } as any);
|
||||
await xterm.webglAddonPromise; // await addon activate
|
||||
strictEqual(xterm.raw.options.rendererType, 'dom');
|
||||
strictEqual(TestWebglAddon.isEnabled, false);
|
||||
|
||||
// Set to auto again but throw when activating the webgl addon
|
||||
TestWebglAddon.shouldThrow = true;
|
||||
// // Set to auto again but throw when activating the webgl addon
|
||||
// TestWebglAddon.shouldThrow = true;
|
||||
await configurationService.setUserConfiguration('terminal', { integrated: { ...defaultTerminalConfig, gpuAcceleration: 'auto' } });
|
||||
configurationService.onDidChangeConfigurationEmitter.fire({ affectsConfiguration: () => true } as any);
|
||||
await xterm.webglAddonPromise; // await addon activate
|
||||
strictEqual(xterm.raw.options.rendererType, 'canvas');
|
||||
strictEqual(TestWebglAddon.isEnabled, false);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -516,13 +516,13 @@ export class WebviewElement extends Disposable implements IWebview, WebviewFindD
|
|||
this.element!.setAttribute('src', `${this.webviewContentEndpoint(encodedWebviewOrigin)}/${fileName}?${queryString}`);
|
||||
}
|
||||
|
||||
public mountTo(parent: HTMLElement) {
|
||||
public mountTo(element: HTMLElement) {
|
||||
if (!this.element) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this._webviewFindWidget) {
|
||||
parent.appendChild(this._webviewFindWidget.getDomNode());
|
||||
element.appendChild(this._webviewFindWidget.getDomNode());
|
||||
}
|
||||
|
||||
[EventType.MOUSE_DOWN, EventType.MOUSE_MOVE, EventType.DROP].forEach(eventName => {
|
||||
|
@ -531,11 +531,15 @@ export class WebviewElement extends Disposable implements IWebview, WebviewFindD
|
|||
}));
|
||||
});
|
||||
|
||||
[parent, window].forEach(node => this._register(addDisposableListener(node as HTMLElement, EventType.DRAG_END, () => {
|
||||
this.stopBlockingIframeDragEvents();
|
||||
})));
|
||||
for (const node of [element, window]) {
|
||||
this._register(addDisposableListener(node, EventType.DRAG_END, () => {
|
||||
this.stopBlockingIframeDragEvents();
|
||||
}));
|
||||
}
|
||||
|
||||
parent.appendChild(this.element);
|
||||
element.id = this.id; // This is used by aria-flow for accessibility order
|
||||
|
||||
element.appendChild(this.element);
|
||||
}
|
||||
|
||||
private startBlockingIframeDragEvents() {
|
||||
|
|
53
yarn.lock
53
yarn.lock
|
@ -12315,35 +12315,40 @@ xtend@~2.1.1:
|
|||
dependencies:
|
||||
object-keys "~0.4.0"
|
||||
|
||||
xterm-addon-search@0.9.0-beta.39:
|
||||
version "0.9.0-beta.39"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.9.0-beta.39.tgz#e8376e1485ee7d763c07d1a8f1354114f65b3e3e"
|
||||
integrity sha512-h45wkecgfqXXoAUqgNytAfSd6g0xNT6rZy/enVaEU0aes7QoL9pxHUKkCry8PP6hs03Slk0VxQ4AGsbSZGvK/w==
|
||||
xterm-addon-canvas@0.6.0-beta.27:
|
||||
version "0.6.0-beta.27"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.6.0-beta.27.tgz#2517f050d165b093a3c3e564e4420ccc3ccbad75"
|
||||
integrity sha512-mSxEJKPnXYKkD6/zQLdNH6kB+sr4B+4DMFzntWgxLjHJdyOO95wUSAtBFnhAUez2nNYvXbs/OXpEbdVdO7f2kQ==
|
||||
|
||||
xterm-addon-serialize@0.7.0-beta.12:
|
||||
version "0.7.0-beta.12"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.7.0-beta.12.tgz#4f845d8b1a9f9b7ae3f910455ce8c58b041babc7"
|
||||
integrity sha512-b4Ug0B/RSJMux+KAcp+PXVqubVyXjN1yCQw1FOkgVYTpmd9AH/X+EcxKml5Lz8DsKmsXqfD9AlV3WpEeT+OtMw==
|
||||
xterm-addon-search@0.14.0-beta.27:
|
||||
version "0.14.0-beta.27"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.14.0-beta.27.tgz#b6f81eac5047253a5c664349c47498a81b6ec168"
|
||||
integrity sha512-T4Exwf/rqoLHqGUUIta5Pw/i9PljvroZwLxc7RnVyDqpNsTifDn3675kS54CxwqPlv4owFhxujTDzJPCUEkM2A==
|
||||
|
||||
xterm-addon-unicode11@0.4.0-beta.3:
|
||||
version "0.4.0-beta.3"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.4.0-beta.3.tgz#f350184155fafd5ad0d6fbf31d13e6ca7dea1efa"
|
||||
integrity sha512-FryZAVwbUjKTmwXnm1trch/2XO60F5JsDvOkZhzobV1hm10sFLVuZpFyHXiUx7TFeeFsvNP+S77LAtWoeT5z+Q==
|
||||
xterm-addon-serialize@0.12.0-beta.26:
|
||||
version "0.12.0-beta.26"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.12.0-beta.26.tgz#cb5bd80128e82880369cb012938e14414b182aa1"
|
||||
integrity sha512-b4lOcttE6lqAF3zB2l8XtDShe5djhl9SueljnVWuG4mYMYPQoiklxFcpY66sjSCIAS6NsbtrL/LGQ/0eZGi+Ig==
|
||||
|
||||
xterm-addon-webgl@0.12.0-beta.37:
|
||||
version "0.12.0-beta.37"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.12.0-beta.37.tgz#e465100041a7e0b1d32b01cd0b0ba5a516ac13c2"
|
||||
integrity sha512-d4GfKlMrWZGzsMfMHd2siG+QiOvwikhwiu+JQlIhlnAShT/wU5BOGbNfDDA1tHmkW7G1UCFgucBuVxrs5wjuBQ==
|
||||
xterm-addon-unicode11@0.7.0-beta.26:
|
||||
version "0.7.0-beta.26"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.7.0-beta.26.tgz#f9606231a8f13e57dbdec5e884b044b0813931f5"
|
||||
integrity sha512-po+z1ayyrkWh8IGXKpbwCLKLKfcjotZVKqowU6PtHuDtJm/J8rlzvV2eJU1WQ/8ezpopU09ibWCvaf1a7EPuxA==
|
||||
|
||||
xterm-headless@4.19.0-beta.58:
|
||||
version "4.19.0-beta.58"
|
||||
resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-4.19.0-beta.58.tgz#3a38cf3b9cd2606fb342a5cf8f2a0cfb963a62e8"
|
||||
integrity sha512-wKQW8VzkFjyYDvcaM26gulo+YghyocfkZnKMH7gc/+/mFn3YXUPBPuOcX6e0M7NibyMlewpQpZjHQUPLBjkzfw==
|
||||
xterm-addon-webgl@0.17.0-beta.26:
|
||||
version "0.17.0-beta.26"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.17.0-beta.26.tgz#aee4a043981d5d303b7112ef7049bc2865e75393"
|
||||
integrity sha512-N8CuAPZnoDlQ6yV7n4eXQ2ONPr/GdxiwgxrJjNks4CzzHiJREm23FQIv0fCTwKQS5xU3qoc4LlT3vZ1tKGjtQw==
|
||||
|
||||
xterm@4.19.0-beta.58:
|
||||
version "4.19.0-beta.58"
|
||||
resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0-beta.58.tgz#cbe535b0b85bc7f8ae3cc242df006bea04cdf541"
|
||||
integrity sha512-fr3QC2qS2NBab8X7kwA/3QZELzQqhAKsngvK8NkhsrFN1DAuyEETkzqXuKbO7OKpCB6VqGDN6GPkNlUB9VrIDA==
|
||||
xterm-headless@5.4.0-beta.27:
|
||||
version "5.4.0-beta.27"
|
||||
resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-5.4.0-beta.27.tgz#cfce5f86e83580388238ea204bb451b7ffe94dc9"
|
||||
integrity sha512-vdrq5eeNMyHZRDw5XR/TPl8oPln0BqbR07akt/fDXMsVg6YwWG+UOnU6GIMj7bJaBed5YkPV9NeBtdsVQn4Lyw==
|
||||
|
||||
xterm@5.4.0-beta.27:
|
||||
version "5.4.0-beta.27"
|
||||
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.4.0-beta.27.tgz#f641ee045a65c9c8967fac534a202062706a8fa9"
|
||||
integrity sha512-gKqtrjy0RLk2123oFyPw5tkV96jGz4c/JkY8/XUvBXoMVsX4A7rVKpHlmHhmnuK1X5ERAkvCD21YE7LfB8WYkw==
|
||||
|
||||
y18n@^3.2.1:
|
||||
version "3.2.2"
|
||||
|
|
Loading…
Reference in New Issue