From 596a96ec7a5ccf417b1ba2ee630f4aff64ee7fa5 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Nov 2020 22:16:03 +0100 Subject: [PATCH] Add `ResolvedKeybindingItem.isBuiltinExtension` --- .../test/codeActionKeybindingResolver.test.ts | 3 ++- src/vs/editor/standalone/browser/simpleServices.ts | 7 ++++--- .../platform/keybinding/common/keybindingsRegistry.ts | 8 ++++++-- .../keybinding/common/resolvedKeybindingItem.ts | 4 +++- .../test/common/abstractKeybindingService.test.ts | 3 ++- .../keybinding/test/common/keybindingResolver.test.ts | 3 ++- .../services/keybinding/browser/keybindingService.ts | 11 ++++++----- .../test/electron-browser/keybindingEditing.test.ts | 2 +- .../preferences/common/keybindingsEditorModel.ts | 2 +- .../test/common/keybindingsEditorModel.test.ts | 2 +- 10 files changed, 28 insertions(+), 17 deletions(-) diff --git a/src/vs/editor/contrib/codeAction/test/codeActionKeybindingResolver.test.ts b/src/vs/editor/contrib/codeAction/test/codeActionKeybindingResolver.test.ts index a0092488f75..b8785616b4b 100644 --- a/src/vs/editor/contrib/codeAction/test/codeActionKeybindingResolver.test.ts +++ b/src/vs/editor/contrib/codeAction/test/codeActionKeybindingResolver.test.ts @@ -90,6 +90,7 @@ function createCodeActionKeybinding(keycode: KeyCode, command: string, commandAr commandArgs, undefined, false, - null); + null, + false); } diff --git a/src/vs/editor/standalone/browser/simpleServices.ts b/src/vs/editor/standalone/browser/simpleServices.ts index 8248e27446f..ba51dfd9e51 100644 --- a/src/vs/editor/standalone/browser/simpleServices.ts +++ b/src/vs/editor/standalone/browser/simpleServices.ts @@ -332,7 +332,8 @@ export class StandaloneKeybindingService extends AbstractKeybindingService { when: when, weight1: 1000, weight2: 0, - extensionId: null + extensionId: null, + isBuiltinExtension: false }); toDispose.add(toDisposable(() => { @@ -380,11 +381,11 @@ export class StandaloneKeybindingService extends AbstractKeybindingService { if (!keybinding) { // This might be a removal keybinding item in user settings => accept it - result[resultLen++] = new ResolvedKeybindingItem(undefined, item.command, item.commandArgs, when, isDefault, null); + result[resultLen++] = new ResolvedKeybindingItem(undefined, item.command, item.commandArgs, when, isDefault, null, false); } else { const resolvedKeybindings = this.resolveKeybinding(keybinding); for (const resolvedKeybinding of resolvedKeybindings) { - result[resultLen++] = new ResolvedKeybindingItem(resolvedKeybinding, item.command, item.commandArgs, when, isDefault, null); + result[resultLen++] = new ResolvedKeybindingItem(resolvedKeybinding, item.command, item.commandArgs, when, isDefault, null, false); } } } diff --git a/src/vs/platform/keybinding/common/keybindingsRegistry.ts b/src/vs/platform/keybinding/common/keybindingsRegistry.ts index b4210f9e5d6..2bf215e0826 100644 --- a/src/vs/platform/keybinding/common/keybindingsRegistry.ts +++ b/src/vs/platform/keybinding/common/keybindingsRegistry.ts @@ -17,6 +17,7 @@ export interface IKeybindingItem { weight1: number; weight2: number; extensionId: string | null; + isBuiltinExtension: boolean; } export interface IKeybindings { @@ -53,6 +54,7 @@ export interface IKeybindingRule2 { weight: number; when: ContextKeyExpression | undefined; extensionId?: string; + isBuiltinExtension?: boolean; } export const enum KeybindingWeight { @@ -164,7 +166,8 @@ class KeybindingsRegistryImpl implements IKeybindingsRegistry { when: rule.when, weight1: rule.weight, weight2: 0, - extensionId: rule.extensionId || null + extensionId: rule.extensionId || null, + isBuiltinExtension: rule.isBuiltinExtension || false }; } } @@ -223,7 +226,8 @@ class KeybindingsRegistryImpl implements IKeybindingsRegistry { when: when, weight1: weight1, weight2: weight2, - extensionId: null + extensionId: null, + isBuiltinExtension: false }); this._cachedMergedKeybindings = null; } diff --git a/src/vs/platform/keybinding/common/resolvedKeybindingItem.ts b/src/vs/platform/keybinding/common/resolvedKeybindingItem.ts index 0410c4698c3..6d2df15977c 100644 --- a/src/vs/platform/keybinding/common/resolvedKeybindingItem.ts +++ b/src/vs/platform/keybinding/common/resolvedKeybindingItem.ts @@ -18,8 +18,9 @@ export class ResolvedKeybindingItem { public readonly when: ContextKeyExpression | undefined; public readonly isDefault: boolean; public readonly extensionId: string | null; + public readonly isBuiltinExtension: boolean; - constructor(resolvedKeybinding: ResolvedKeybinding | undefined, command: string | null, commandArgs: any, when: ContextKeyExpression | undefined, isDefault: boolean, extensionId: string | null) { + constructor(resolvedKeybinding: ResolvedKeybinding | undefined, command: string | null, commandArgs: any, when: ContextKeyExpression | undefined, isDefault: boolean, extensionId: string | null, isBuiltinExtension: boolean) { this.resolvedKeybinding = resolvedKeybinding; this.keypressParts = resolvedKeybinding ? removeElementsAfterNulls(resolvedKeybinding.getDispatchParts()) : []; this.bubble = (command ? command.charCodeAt(0) === CharCode.Caret : false); @@ -28,6 +29,7 @@ export class ResolvedKeybindingItem { this.when = when; this.isDefault = isDefault; this.extensionId = extensionId; + this.isBuiltinExtension = isBuiltinExtension; } } diff --git a/src/vs/platform/keybinding/test/common/abstractKeybindingService.test.ts b/src/vs/platform/keybinding/test/common/abstractKeybindingService.test.ts index b9af02e7403..cbbb5434457 100644 --- a/src/vs/platform/keybinding/test/common/abstractKeybindingService.test.ts +++ b/src/vs/platform/keybinding/test/common/abstractKeybindingService.test.ts @@ -192,7 +192,8 @@ suite('AbstractKeybindingService', () => { null, when, true, - null + null, + false ); } diff --git a/src/vs/platform/keybinding/test/common/keybindingResolver.test.ts b/src/vs/platform/keybinding/test/common/keybindingResolver.test.ts index 0723eb637e1..2820e0ea4a6 100644 --- a/src/vs/platform/keybinding/test/common/keybindingResolver.test.ts +++ b/src/vs/platform/keybinding/test/common/keybindingResolver.test.ts @@ -28,7 +28,8 @@ suite('KeybindingResolver', () => { commandArgs, when, isDefault, - null + null, + false ); } diff --git a/src/vs/workbench/services/keybinding/browser/keybindingService.ts b/src/vs/workbench/services/keybinding/browser/keybindingService.ts index c304bc192e9..63bb4ad5a3d 100644 --- a/src/vs/workbench/services/keybinding/browser/keybindingService.ts +++ b/src/vs/workbench/services/keybinding/browser/keybindingService.ts @@ -372,7 +372,7 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService { const keybinding = item.keybinding; if (!keybinding) { // This might be a removal keybinding item in user settings => accept it - result[resultLen++] = new ResolvedKeybindingItem(undefined, item.command, item.commandArgs, when, isDefault, item.extensionId); + result[resultLen++] = new ResolvedKeybindingItem(undefined, item.command, item.commandArgs, when, isDefault, item.extensionId, item.isBuiltinExtension); } else { if (this._assertBrowserConflicts(keybinding, item.command)) { continue; @@ -381,7 +381,7 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService { const resolvedKeybindings = this.resolveKeybinding(keybinding); for (let i = resolvedKeybindings.length - 1; i >= 0; i--) { const resolvedKeybinding = resolvedKeybindings[i]; - result[resultLen++] = new ResolvedKeybindingItem(resolvedKeybinding, item.command, item.commandArgs, when, isDefault, item.extensionId); + result[resultLen++] = new ResolvedKeybindingItem(resolvedKeybinding, item.command, item.commandArgs, when, isDefault, item.extensionId, item.isBuiltinExtension); } } } @@ -396,11 +396,11 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService { const parts = item.parts; if (parts.length === 0) { // This might be a removal keybinding item in user settings => accept it - result[resultLen++] = new ResolvedKeybindingItem(undefined, item.command, item.commandArgs, when, isDefault, null); + result[resultLen++] = new ResolvedKeybindingItem(undefined, item.command, item.commandArgs, when, isDefault, null, false); } else { const resolvedKeybindings = this._keyboardMapper.resolveUserBinding(parts); for (const resolvedKeybinding of resolvedKeybindings) { - result[resultLen++] = new ResolvedKeybindingItem(resolvedKeybinding, item.command, item.commandArgs, when, isDefault, null); + result[resultLen++] = new ResolvedKeybindingItem(resolvedKeybinding, item.command, item.commandArgs, when, isDefault, null, false); } } } @@ -551,7 +551,8 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService { mac: mac ? { primary: KeybindingParser.parseKeybinding(mac, OS) } : null, linux: linux ? { primary: KeybindingParser.parseKeybinding(linux, OS) } : null, win: win ? { primary: KeybindingParser.parseKeybinding(win, OS) } : null, - extensionId: extensionId.value + extensionId: extensionId.value, + isBuiltinExtension: isBuiltin }; if (!desc.primary && !desc.mac && !desc.linux && !desc.win) { diff --git a/src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts b/src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts index 352710b85ad..4b4bc13a963 100644 --- a/src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts +++ b/src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts @@ -324,7 +324,7 @@ suite('KeybindingsEditing', () => { } } const keybinding = parts.length > 0 ? new USLayoutResolvedKeybinding(new ChordKeybinding(parts), OS) : undefined; - return new ResolvedKeybindingItem(keybinding, command || 'some command', null, when ? ContextKeyExpr.deserialize(when) : undefined, isDefault === undefined ? true : isDefault, null); + return new ResolvedKeybindingItem(keybinding, command || 'some command', null, when ? ContextKeyExpr.deserialize(when) : undefined, isDefault === undefined ? true : isDefault, null, false); } }); diff --git a/src/vs/workbench/services/preferences/common/keybindingsEditorModel.ts b/src/vs/workbench/services/preferences/common/keybindingsEditorModel.ts index decc6ba2edc..37ca7d015c6 100644 --- a/src/vs/workbench/services/preferences/common/keybindingsEditorModel.ts +++ b/src/vs/workbench/services/preferences/common/keybindingsEditorModel.ts @@ -187,7 +187,7 @@ export class KeybindingsEditorModel extends EditorModel { const commandsWithDefaultKeybindings = this.keybindingsService.getDefaultKeybindings().map(keybinding => keybinding.command); for (const command of KeybindingResolver.getAllUnboundCommands(boundCommands)) { - const keybindingItem = new ResolvedKeybindingItem(undefined, command, null, undefined, commandsWithDefaultKeybindings.indexOf(command) === -1, null); + const keybindingItem = new ResolvedKeybindingItem(undefined, command, null, undefined, commandsWithDefaultKeybindings.indexOf(command) === -1, null, false); this._keybindingItemsSortedByPrecedence.push(KeybindingsEditorModel.toKeybindingEntry(command, keybindingItem, workbenchActionsRegistry, actionLabels)); } this._keybindingItems = this._keybindingItemsSortedByPrecedence.slice(0).sort((a, b) => KeybindingsEditorModel.compareKeybindingData(a, b)); diff --git a/src/vs/workbench/services/preferences/test/common/keybindingsEditorModel.test.ts b/src/vs/workbench/services/preferences/test/common/keybindingsEditorModel.test.ts index 670efa3c293..9f344836f8f 100644 --- a/src/vs/workbench/services/preferences/test/common/keybindingsEditorModel.test.ts +++ b/src/vs/workbench/services/preferences/test/common/keybindingsEditorModel.test.ts @@ -705,7 +705,7 @@ suite('KeybindingsEditorModel', () => { } } const keybinding = parts.length > 0 ? new USLayoutResolvedKeybinding(new ChordKeybinding(parts), OS) : undefined; - return new ResolvedKeybindingItem(keybinding, command || 'some command', null, when ? ContextKeyExpr.deserialize(when) : undefined, isDefault === undefined ? true : isDefault, null); + return new ResolvedKeybindingItem(keybinding, command || 'some command', null, when ? ContextKeyExpr.deserialize(when) : undefined, isDefault === undefined ? true : isDefault, null, false); } function asResolvedKeybindingItems(keybindingEntries: IKeybindingItemEntry[], keepUnassigned: boolean = false): ResolvedKeybindingItem[] {