Skip to content

Commit

Permalink
vscode: provide error feedback for vscode.open command (#12284)
Browse files Browse the repository at this point in the history
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 <fernando.ascencio.cama@ericsson.com>
  • Loading branch information
FernandoAscencio authored Apr 10, 2023
1 parent 8f0755d commit 09457be
Showing 1 changed file with 10 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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<boolean> {
if (!resource) {
Expand Down Expand Up @@ -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);
}
}
});
Expand Down

0 comments on commit 09457be

Please sign in to comment.