Merge pull request #186930 from microsoft/merogge/buffer-defer

defer buffer creation
This commit is contained in:
Megan Rogge
2023-07-13 08:48:37 -07:00
committed by GitHub
4 changed files with 25 additions and 20 deletions
+1 -1
View File
@@ -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<boolean>('terminalTabFocusMode', false, true);
export const terminalTabFocusModeContextKey = new RawContextKey<boolean>('terminalTabFocusMode', false, true);
export const enum TerminalSettingPrefix {
DefaultProfile = 'terminal.integrated.defaultProfile.',
@@ -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<boolean>('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);
@@ -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';
@@ -26,6 +26,7 @@ import type { 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>(AccessibleBufferContribution.ID);
}
@@ -40,12 +41,16 @@ 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<void> {
await this._accessibleBufferWidget?.show();
if (!this._xterm) {
return;
}
if (!this._accessibleBufferWidget) {
this._accessibleBufferWidget = this.add(this._instantiationService.createInstance(AccessibleBufferWidget, this._instance, this._xterm));
}
await this._accessibleBufferWidget.show();
}
async createCommandQuickPick(): Promise<IQuickPick<IQuickPickItem> | undefined> {
@@ -87,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(terminalTabFocusModeContextKey, TerminalContextKeys.accessibleBufferFocus.negate()))
}
],
run: async (c) => {
@@ -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',