From 7fd34784adde658e335489da69e71262ca1e1340 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Mon, 3 Jul 2023 10:24:58 -0700 Subject: [PATCH 1/5] defer buffer creation --- .../browser/terminal.accessibility.contribution.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts index a121b0c4019..23a3f640347 100644 --- a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts +++ b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts @@ -26,6 +26,7 @@ import { Terminal } from 'xterm'; class AccessibleBufferContribution extends DisposableStore implements ITerminalContribution { static readonly ID = 'terminal.accessible-buffer'; + private _xterm: IXtermTerminal & { raw: Terminal } | undefined; static get(instance: ITerminalInstance): AccessibleBufferContribution | null { return instance.getContribution(AccessibleBufferContribution.ID); } @@ -40,11 +41,15 @@ class AccessibleBufferContribution extends DisposableStore implements ITerminalC super(); } layout(xterm: IXtermTerminal & { raw: Terminal }): void { - if (!this._accessibleBufferWidget) { - this._accessibleBufferWidget = this.add(this._instantiationService.createInstance(AccessibleBufferWidget, this._instance, xterm)); - } + this._xterm = xterm; } async show(): Promise { + if (!this._xterm) { + return; + } + if (!this._accessibleBufferWidget) { + this._accessibleBufferWidget = this.add(this._instantiationService.createInstance(AccessibleBufferWidget, this._instance, this._xterm)); + } await this._accessibleBufferWidget?.show(); } From 0ef9e9a0fa1d13e8b20f96fb7f142daabc4b6e8e Mon Sep 17 00:00:00 2001 From: meganrogge Date: Mon, 3 Jul 2023 10:27:04 -0700 Subject: [PATCH 2/5] rm ? --- .../browser/terminal.accessibility.contribution.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts index 23a3f640347..c59c6db03e2 100644 --- a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts +++ b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts @@ -50,7 +50,7 @@ class AccessibleBufferContribution extends DisposableStore implements ITerminalC if (!this._accessibleBufferWidget) { this._accessibleBufferWidget = this.add(this._instantiationService.createInstance(AccessibleBufferWidget, this._instance, this._xterm)); } - await this._accessibleBufferWidget?.show(); + await this._accessibleBufferWidget.show(); } async createCommandQuickPick(): Promise | undefined> { From b912246257d36a43bd0bf50a2658322ccaa6a091 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 11 Jul 2023 14:26:34 -0700 Subject: [PATCH 3/5] fix when clause --- .../terminal.accessibility.contribution.ts | 2 +- .../browser/terminalAccessibleBuffer.ts | 22 +++++++++---------- .../browser/terminalAccessibleWidget.ts | 1 + 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts index 50d519feb79..fa198f5464f 100644 --- a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts +++ b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts @@ -92,7 +92,7 @@ registerTerminalAction({ { primary: KeyMod.Shift | KeyCode.Tab, weight: KeybindingWeight.WorkbenchContrib, - when: ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, terminalTabFocusContextKey, TerminalContextKeys.accessibleBufferFocus.negate()) + when: ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, ContextKeyExpr.or(terminalTabFocusContextKey, TerminalContextKeys.accessibleBufferFocus.negate())) } ], run: async (c) => { diff --git a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleBuffer.ts b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleBuffer.ts index 2b58c359253..48cc9dec78d 100644 --- a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleBuffer.ts +++ b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleBuffer.ts @@ -4,23 +4,23 @@ *--------------------------------------------------------------------------------------------*/ import { Event } from 'vs/base/common/event'; +import { withNullAsUndefined } from 'vs/base/common/types'; +import { IEditorViewState } from 'vs/editor/common/editorCommon'; import { ITextModel } from 'vs/editor/common/model'; import { IModelService } from 'vs/editor/common/services/model'; import { localize } from 'vs/nls'; -import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { ITerminalInstance, ITerminalService, IXtermTerminal } from 'vs/workbench/contrib/terminal/browser/terminal'; -import type { Terminal } from 'xterm'; -import { ITerminalCommand, TerminalCapability } from 'vs/platform/terminal/common/capabilities/capabilities'; -import { IQuickInputService, IQuickPick, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput'; import { AudioCue, IAudioCueService } from 'vs/platform/audioCues/browser/audioCueService'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; -import { withNullAsUndefined } from 'vs/base/common/types'; -import { BufferContentTracker } from 'vs/workbench/contrib/terminalContrib/accessibility/browser/bufferContentTracker'; -import { IEditorViewState } from 'vs/editor/common/editorCommon'; -import { TerminalAccessibleWidget } from 'vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleWidget'; -import { TerminalContextKeys } from 'vs/workbench/contrib/terminal/common/terminalContextKey'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { IQuickInputService, IQuickPick, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput'; +import { ITerminalCommand, TerminalCapability } from 'vs/platform/terminal/common/capabilities/capabilities'; import { ITerminalLogService } from 'vs/platform/terminal/common/terminal'; +import { ITerminalInstance, ITerminalService, IXtermTerminal } from 'vs/workbench/contrib/terminal/browser/terminal'; +import { TerminalContextKeys } from 'vs/workbench/contrib/terminal/common/terminalContextKey'; +import { BufferContentTracker } from 'vs/workbench/contrib/terminalContrib/accessibility/browser/bufferContentTracker'; +import { TerminalAccessibleWidget } from 'vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleWidget'; +import type { Terminal } from 'xterm'; export const enum NavigationType { Next = 'next', diff --git a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleWidget.ts b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleWidget.ts index d1316db9bee..6754d0a2635 100644 --- a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleWidget.ts +++ b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleWidget.ts @@ -118,6 +118,7 @@ export abstract class TerminalAccessibleWidget extends DisposableStore { this._terminalService.setActiveInstance(this._instance as ITerminalInstance); this._xtermElement.classList.add(ClassName.Hide); })); + this.layout(); } registerListeners(): void { From fe98d08c7e9ebda9a3f957195579d971e6daabcc Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 11 Jul 2023 14:28:24 -0700 Subject: [PATCH 4/5] improve name --- src/vs/platform/terminal/common/terminal.ts | 2 +- src/vs/workbench/browser/parts/editor/tabFocus.ts | 4 ++-- .../browser/terminal.accessibility.contribution.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/vs/platform/terminal/common/terminal.ts b/src/vs/platform/terminal/common/terminal.ts index a73f7a7f9fa..1f019a69053 100644 --- a/src/vs/platform/terminal/common/terminal.ts +++ b/src/vs/platform/terminal/common/terminal.ts @@ -17,7 +17,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import type * as performance from 'vs/base/common/performance'; import { ILogService } from 'vs/platform/log/common/log'; -export const terminalTabFocusContextKey = new RawContextKey('terminalTabFocusMode', false, true); +export const terminalTabFocusModeContextKey = new RawContextKey('terminalTabFocusMode', false, true); export const enum TerminalSettingPrefix { DefaultProfile = 'terminal.integrated.defaultProfile.', diff --git a/src/vs/workbench/browser/parts/editor/tabFocus.ts b/src/vs/workbench/browser/parts/editor/tabFocus.ts index 3d770eb8857..52f2e0d7199 100644 --- a/src/vs/workbench/browser/parts/editor/tabFocus.ts +++ b/src/vs/workbench/browser/parts/editor/tabFocus.ts @@ -8,7 +8,7 @@ import { Disposable } from 'vs/base/common/lifecycle'; import { TabFocusContext, TabFocus } from 'vs/editor/browser/config/tabFocus'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { RawContextKey, IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; -import { TerminalSettingId, terminalTabFocusContextKey } from 'vs/platform/terminal/common/terminal'; +import { TerminalSettingId, terminalTabFocusModeContextKey } from 'vs/platform/terminal/common/terminal'; export const editorTabFocusContextKey = new RawContextKey('editorTabFocusMode', false, true); @@ -26,7 +26,7 @@ export class TabFocusMode extends Disposable { super(); this._editorContext = editorTabFocusContextKey.bindTo(contextKeyService); - this._terminalContext = terminalTabFocusContextKey.bindTo(contextKeyService); + this._terminalContext = terminalTabFocusModeContextKey.bindTo(contextKeyService); const editorConfig: boolean = configurationService.getValue('editor.tabFocusMode'); const terminalConfig: boolean = configurationService.getValue(TerminalSettingId.TabFocusMode) ?? editorConfig; this._editorContext.set(editorConfig); diff --git a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts index fa198f5464f..acff267d59c 100644 --- a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts +++ b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts @@ -11,7 +11,7 @@ import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { IQuickPick, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput'; -import { terminalTabFocusContextKey } from 'vs/platform/terminal/common/terminal'; +import { terminalTabFocusModeContextKey } from 'vs/platform/terminal/common/terminal'; import { AccessibilityHelpAction } from 'vs/workbench/contrib/accessibility/browser/accessibilityContribution'; import { IAccessibleViewService } from 'vs/workbench/contrib/accessibility/browser/accessibleView'; import { ITerminalContribution, ITerminalInstance, ITerminalService, IXtermTerminal } from 'vs/workbench/contrib/terminal/browser/terminal'; @@ -92,7 +92,7 @@ registerTerminalAction({ { primary: KeyMod.Shift | KeyCode.Tab, weight: KeybindingWeight.WorkbenchContrib, - when: ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, ContextKeyExpr.or(terminalTabFocusContextKey, TerminalContextKeys.accessibleBufferFocus.negate())) + when: ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, ContextKeyExpr.or(terminalTabFocusModeContextKey, TerminalContextKeys.accessibleBufferFocus.negate())) } ], run: async (c) => { From 018a8d2ebd39924b5085b8ec5b2d30d95068cabe Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 11 Jul 2023 14:29:14 -0700 Subject: [PATCH 5/5] revert unneeded change --- .../accessibility/browser/terminalAccessibleWidget.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleWidget.ts b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleWidget.ts index 6754d0a2635..d1316db9bee 100644 --- a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleWidget.ts +++ b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleWidget.ts @@ -118,7 +118,6 @@ export abstract class TerminalAccessibleWidget extends DisposableStore { this._terminalService.setActiveInstance(this._instance as ITerminalInstance); this._xtermElement.classList.add(ClassName.Hide); })); - this.layout(); } registerListeners(): void {