From 1828d8a7bd3cb7d74534b24e91dc1ce6b08fe39f Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Thu, 7 Jul 2016 13:11:40 +0300 Subject: [PATCH] Log warning when menu uses bad `commandId` --- src/vs/platform/commands/common/commandService.ts | 10 ++++++++++ src/vs/platform/commands/common/commands.ts | 4 ++++ src/vs/workbench/electron-browser/integration.ts | 3 +++ .../workbench/test/node/api/extHostApiCommands.test.ts | 3 +++ 4 files changed, 20 insertions(+) diff --git a/src/vs/platform/commands/common/commandService.ts b/src/vs/platform/commands/common/commandService.ts index c3844d25288..2821e462d41 100644 --- a/src/vs/platform/commands/common/commandService.ts +++ b/src/vs/platform/commands/common/commandService.ts @@ -37,4 +37,14 @@ export class CommandService implements ICommandService { } }); } + + isKnownCommand(commandId: string): boolean { + const command = CommandsRegistry.getCommand(commandId); + + if (!command) { + return false; + } + + return true; + } } diff --git a/src/vs/platform/commands/common/commands.ts b/src/vs/platform/commands/common/commands.ts index 0dbb3c3b313..1c4542c9595 100644 --- a/src/vs/platform/commands/common/commands.ts +++ b/src/vs/platform/commands/common/commands.ts @@ -14,6 +14,7 @@ export interface ICommandService { serviceId: ServiceIdentifier; executeCommand(commandId: string, ...args: any[]): TPromise; executeCommand(commandId: string, ...args: any[]): TPromise; + isKnownCommand(commandId: string): boolean; } export interface ICommandsMap { @@ -99,5 +100,8 @@ export const NullCommandService: ICommandService = { serviceId: undefined, executeCommand() { return TPromise.as(undefined); + }, + isKnownCommand() { + return false; } }; \ No newline at end of file diff --git a/src/vs/workbench/electron-browser/integration.ts b/src/vs/workbench/electron-browser/integration.ts index faaa4c2d47e..8576845fb54 100644 --- a/src/vs/workbench/electron-browser/integration.ts +++ b/src/vs/workbench/electron-browser/integration.ts @@ -172,6 +172,9 @@ export class ElectronIntegration { private resolveKeybindings(actionIds: string[]): TPromise<{ id: string; binding: number; }[]> { return this.partService.joinCreation().then(() => { return arrays.coalesce(actionIds.map((id) => { + if (!this.commandService.isKnownCommand(id)) { + console.warn('Menu uses unknown command: ' + id); + } let bindings = this.keybindingService.lookupKeybindings(id); // return the first binding that can be represented by electron diff --git a/src/vs/workbench/test/node/api/extHostApiCommands.test.ts b/src/vs/workbench/test/node/api/extHostApiCommands.test.ts index ccf5af8b225..dc5b8b05625 100644 --- a/src/vs/workbench/test/node/api/extHostApiCommands.test.ts +++ b/src/vs/workbench/test/node/api/extHostApiCommands.test.ts @@ -64,6 +64,9 @@ suite('ExtHostLanguageFeatureCommands', function() { executeCommand(id, args): any { let {handler} = CommandsRegistry.getCommands()[id]; return TPromise.as(instantiationService.invokeFunction(handler, args)); + }, + isKnownCommand(id) { + return true; } }); services.set(IMarkerService, new MarkerService()); -- GitLab