mirror of
https://github.com/microsoft/vscode.git
synced 2026-08-29 17:41:32 +01:00
Merge pull request #186930 from microsoft/merogge/buffer-defer
defer buffer creation
This commit is contained in:
@@ -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
-6
@@ -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) => {
|
||||
|
||||
+11
-11
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user