From 09457be0dd44ba1e0121d85dd43feb196261c684 Mon Sep 17 00:00:00 2001 From: FernandoAscencio <48699277+FernandoAscencio@users.noreply.github.com> Date: Mon, 10 Apr 2023 14:50:14 -0400 Subject: [PATCH] vscode: provide error feedback for `vscode.open` command (#12284) The commit adds error feedback when the `vscode.open` fails, and reports the error to end-users. The handling will warn to end-users regarding the command, and log additional information. Signed-off-by: FernandoAscencio --- .../browser/plugin-vscode-commands-contribution.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/plugin-ext-vscode/src/browser/plugin-vscode-commands-contribution.ts b/packages/plugin-ext-vscode/src/browser/plugin-vscode-commands-contribution.ts index 8a32c4303ba15..a385a09fd1d30 100755 --- a/packages/plugin-ext-vscode/src/browser/plugin-vscode-commands-contribution.ts +++ b/packages/plugin-ext-vscode/src/browser/plugin-vscode-commands-contribution.ts @@ -14,7 +14,7 @@ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 // ***************************************************************************** -import { Command, CommandContribution, CommandRegistry, environment, isOSX, CancellationTokenSource } from '@theia/core'; +import { Command, CommandContribution, CommandRegistry, environment, isOSX, CancellationTokenSource, MessageService } from '@theia/core'; import { ApplicationShell, CommonCommands, @@ -178,6 +178,8 @@ export class PluginVscodeCommandsContribution implements CommandContribution { protected readonly textModelService: MonacoTextModelService; @inject(WindowService) protected readonly windowService: WindowService; + @inject(MessageService) + protected readonly messageService: MessageService; private async openWith(commandId: string, resource: URI, columnOrOptions?: ViewColumn | TextDocumentShowOptions, openerId?: string): Promise { if (!resource) { @@ -228,9 +230,13 @@ export class PluginVscodeCommandsContribution implements CommandContribution { commands.registerCommand(VscodeCommands.OPEN, { isVisible: () => false, execute: async (resource: URI, columnOrOptions?: ViewColumn | TextDocumentShowOptions) => { - const result = await this.openWith(VscodeCommands.OPEN.id, resource, columnOrOptions); - if (!result) { - throw new Error(`Could not find an editor for ${resource}`); + try { + await this.openWith(VscodeCommands.OPEN.id, resource, columnOrOptions); + } catch (error) { + const message = nls.localizeByDefault("Unable to open '{0}'", resource.path); + const reason = nls.localizeByDefault('Error: {0}', error.message); + this.messageService.error(`${message}\n${reason}`); + console.warn(error); } } });