From bd67e21e3a3cde116d806fe95b051a4dbec8ceb8 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Fri, 9 Jun 2023 09:00:09 -0700 Subject: [PATCH] node-pty@0.11.0-beta33 and fix Windows clear issue Fixes #75141 --- package.json | 2 +- remote/package.json | 2 +- remote/yarn.lock | 8 ++++---- src/vs/platform/terminal/common/terminal.ts | 2 +- src/vs/platform/terminal/node/ptyService.ts | 1 + src/vs/platform/terminal/node/terminalProcess.ts | 4 ++++ src/vs/workbench/api/common/extHostTerminalService.ts | 4 ++++ src/vs/workbench/contrib/terminal/browser/remotePty.ts | 4 ++++ .../terminal/browser/terminalProcessExtHostProxy.ts | 4 ++++ .../terminal/test/browser/terminalProcessManager.test.ts | 1 + .../testing/browser/testingOutputTerminalService.ts | 3 +++ .../services/terminal/common/embedderTerminalService.ts | 3 +++ yarn.lock | 8 ++++---- 13 files changed, 35 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 31f141a161a..4c8db46c218 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "native-is-elevated": "0.6.0", "native-keymap": "^3.3.2", "native-watchdog": "^1.4.1", - "node-pty": "0.11.0-beta32", + "node-pty": "0.11.0-beta33", "tas-client-umd": "0.1.8", "v8-inspect-profiler": "^0.1.0", "vscode-oniguruma": "1.7.0", diff --git a/remote/package.json b/remote/package.json index 120e99f84b8..0e72fe0e265 100644 --- a/remote/package.json +++ b/remote/package.json @@ -19,7 +19,7 @@ "keytar": "7.9.0", "minimist": "^1.2.6", "native-watchdog": "^1.4.1", - "node-pty": "0.11.0-beta32", + "node-pty": "0.11.0-beta33", "tas-client-umd": "0.1.8", "vscode-oniguruma": "1.7.0", "vscode-regexpp": "^3.1.0", diff --git a/remote/yarn.lock b/remote/yarn.lock index ad0d8b73120..7731c8ef4e0 100644 --- a/remote/yarn.lock +++ b/remote/yarn.lock @@ -537,10 +537,10 @@ node-gyp-build@^4.3.0: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== -node-pty@0.11.0-beta32: - version "0.11.0-beta32" - resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-0.11.0-beta32.tgz#49c0f174f600ac3f54a21df2a41b6f78256ff6ce" - integrity sha512-xtzB4/jYH64ksdVatYQnaU3TtCtSaDiiZPsZITmLHnywFSpI2bgfyj/bu6ofOXbe8PTtziL8bDn1U3xkRmx3mg== +node-pty@0.11.0-beta33: + version "0.11.0-beta33" + resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-0.11.0-beta33.tgz#722a729fb9449f591279bee1f8b431b71a9af4a1" + integrity sha512-SoP5BbSfvc8Um51rIriUEOPvMltc43iTaKXGJaJKLR3+NfQbjcCcNQGyOd9P9pvBccWYg+Rncv18qMtJKIAi1Q== dependencies: nan "^2.17.0" diff --git a/src/vs/platform/terminal/common/terminal.ts b/src/vs/platform/terminal/common/terminal.ts index 3bf2e8902dd..8f2ede4ed4d 100644 --- a/src/vs/platform/terminal/common/terminal.ts +++ b/src/vs/platform/terminal/common/terminal.ts @@ -707,7 +707,7 @@ export interface ITerminalChildProcess { input(data: string): void; processBinary(data: string): Promise; resize(cols: number, rows: number): void; - clearBuffer?(): Promise; + clearBuffer(): void | Promise; /** * Acknowledge a data event has been parsed by the terminal, this is used to implement flow diff --git a/src/vs/platform/terminal/node/ptyService.ts b/src/vs/platform/terminal/node/ptyService.ts index 18dc2e0240e..6ad3aa2e0b1 100644 --- a/src/vs/platform/terminal/node/ptyService.ts +++ b/src/vs/platform/terminal/node/ptyService.ts @@ -759,6 +759,7 @@ class PersistentTerminalProcess extends Disposable { } async clearBuffer(): Promise { this._serializer.clearBuffer(); + this._terminalProcess.clearBuffer(); } setUnicodeVersion(version: '6' | '11'): void { this.unicodeVersion = version; diff --git a/src/vs/platform/terminal/node/terminalProcess.ts b/src/vs/platform/terminal/node/terminalProcess.ts index c641ccf6d91..3c0275c37bc 100644 --- a/src/vs/platform/terminal/node/terminalProcess.ts +++ b/src/vs/platform/terminal/node/terminalProcess.ts @@ -552,6 +552,10 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess } } + clearBuffer(): void { + this._ptyProcess?.clear(); + } + acknowledgeDataEvent(charCount: number): void { // Prevent lower than 0 to heal from errors this._unacknowledgedCharCount = Math.max(this._unacknowledgedCharCount - charCount, 0); diff --git a/src/vs/workbench/api/common/extHostTerminalService.ts b/src/vs/workbench/api/common/extHostTerminalService.ts index 6132bd21a93..07f2364ffed 100644 --- a/src/vs/workbench/api/common/extHostTerminalService.ts +++ b/src/vs/workbench/api/common/extHostTerminalService.ts @@ -288,6 +288,10 @@ class ExtHostPseudoterminal implements ITerminalChildProcess { this._pty.setDimensions?.({ columns: cols, rows }); } + clearBuffer(): void | Promise { + // no-op + } + async processBinary(data: string): Promise { // No-op, processBinary is not supported in extension owned terminals. } diff --git a/src/vs/workbench/contrib/terminal/browser/remotePty.ts b/src/vs/workbench/contrib/terminal/browser/remotePty.ts index e79774065f9..939c84ad864 100644 --- a/src/vs/workbench/contrib/terminal/browser/remotePty.ts +++ b/src/vs/workbench/contrib/terminal/browser/remotePty.ts @@ -107,6 +107,10 @@ export class RemotePty extends Disposable implements ITerminalChildProcess { }); } + async clearBuffer(): Promise { + await this._remoteTerminalChannel.clearBuffer(this.id); + } + freePortKillProcess(port: string): Promise<{ port: string; processId: string }> { if (!this._remoteTerminalChannel.freePortKillProcess) { throw new Error('freePortKillProcess does not exist on the local pty service'); diff --git a/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts b/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts index 42f0658757c..3c3e980b9c6 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts @@ -134,6 +134,10 @@ export class TerminalProcessExtHostProxy extends Disposable implements ITerminal this._onResize.fire({ cols, rows }); } + clearBuffer(): void | Promise { + // no-op + } + acknowledgeDataEvent(): void { // Flow control is disabled for extension terminals } diff --git a/src/vs/workbench/contrib/terminal/test/browser/terminalProcessManager.test.ts b/src/vs/workbench/contrib/terminal/test/browser/terminalProcessManager.test.ts index 8137e5893fc..4d8b79c9d98 100644 --- a/src/vs/workbench/contrib/terminal/test/browser/terminalProcessManager.test.ts +++ b/src/vs/workbench/contrib/terminal/test/browser/terminalProcessManager.test.ts @@ -46,6 +46,7 @@ class TestTerminalChildProcess implements ITerminalChildProcess { shutdown(immediate: boolean): void { } input(data: string): void { } resize(cols: number, rows: number): void { } + clearBuffer(): void { } acknowledgeDataEvent(charCount: number): void { } async setUnicodeVersion(version: '6' | '11'): Promise { } async getInitialCwd(): Promise { return ''; } diff --git a/src/vs/workbench/contrib/testing/browser/testingOutputTerminalService.ts b/src/vs/workbench/contrib/testing/browser/testingOutputTerminalService.ts index 65ddb17f1f1..89bcc961b5e 100644 --- a/src/vs/workbench/contrib/testing/browser/testingOutputTerminalService.ts +++ b/src/vs/workbench/contrib/testing/browser/testingOutputTerminalService.ts @@ -259,6 +259,9 @@ class TestOutputProcess extends Disposable implements ITerminalChildProcess { public resize(): void { // no-op } + public clearBuffer(): void | Promise { + // no-op + } public acknowledgeDataEvent(): void { // no-op, flow control not currently implemented } diff --git a/src/vs/workbench/services/terminal/common/embedderTerminalService.ts b/src/vs/workbench/services/terminal/common/embedderTerminalService.ts index 93a79c67693..d9174af00fe 100644 --- a/src/vs/workbench/services/terminal/common/embedderTerminalService.ts +++ b/src/vs/workbench/services/terminal/common/embedderTerminalService.ts @@ -124,6 +124,9 @@ class EmbedderTerminalProcess extends Disposable implements ITerminalChildProces resize(): void { // no-op } + clearBuffer(): void | Promise { + // no-op + } acknowledgeDataEvent(): void { // no-op, flow control not currently implemented } diff --git a/yarn.lock b/yarn.lock index 1c820bf74a5..e727e316cf3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6973,10 +6973,10 @@ node-gyp-build@^4.3.0: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== -node-pty@0.11.0-beta32: - version "0.11.0-beta32" - resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-0.11.0-beta32.tgz#49c0f174f600ac3f54a21df2a41b6f78256ff6ce" - integrity sha512-xtzB4/jYH64ksdVatYQnaU3TtCtSaDiiZPsZITmLHnywFSpI2bgfyj/bu6ofOXbe8PTtziL8bDn1U3xkRmx3mg== +node-pty@0.11.0-beta33: + version "0.11.0-beta33" + resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-0.11.0-beta33.tgz#722a729fb9449f591279bee1f8b431b71a9af4a1" + integrity sha512-SoP5BbSfvc8Um51rIriUEOPvMltc43iTaKXGJaJKLR3+NfQbjcCcNQGyOd9P9pvBccWYg+Rncv18qMtJKIAi1Q== dependencies: nan "^2.17.0"