diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index 77ad882bbbf025c92ec855bf012a8693d82d7347..3f698d71998462f19a43b1ed7a858911fbf9fc5a 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -99,6 +99,7 @@ export interface ITerminalConfiguration { windows: { [key: string]: string }; }; showExitAlert: boolean; + experimentalBufferImpl: 'JsArray' | 'TypedArray'; } export interface ITerminalConfigHelper { diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts index 747f387527b84257563487d809d1066289bcc4cd..4a5d86980b4d6429719f3895b54e817b842bc215 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts @@ -372,7 +372,13 @@ configurationRegistry.registerConfiguration({ description: nls.localize('terminal.integrated.showExitAlert', "Controls whether to show the alert \"The terminal process terminated with exit code\" when exit code is non-zero."), type: 'boolean', default: true - } + }, + 'terminal.integrated.experimentalBufferImpl': { + description: nls.localize('terminal.integrated.experimentalBufferImpl', "Controls the terminal's internal buffer implementation. This setting is picked up on terminal creation and will not apply to existing terminals."), + type: 'string', + enum: ['JsArray', 'TypedArray'], + default: 'JsArray' + }, } }); diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index 8df176d3ceed9c829a514823125eecc3648623ee..68b2f48d4e9d12b37f8b933db07de9c4f1683c8f 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -302,7 +302,8 @@ export class TerminalInstance implements ITerminalInstance { // TODO: Guess whether to use canvas or dom better rendererType: config.rendererType === 'auto' ? 'canvas' : config.rendererType, // TODO: Remove this once the setting is removed upstream - experimentalCharAtlas: 'dynamic' + experimentalCharAtlas: 'dynamic', + experimentalBufferLineImpl: config.experimentalBufferImpl }); if (this._shellLaunchConfig.initialText) { this._xterm.writeln(this._shellLaunchConfig.initialText);