mirror of
https://github.com/microsoft/vscode.git
synced 2026-07-25 15:35:43 +01:00
OpenerService#open should return a boolean
This commit is contained in:
@@ -23,15 +23,24 @@ export class OpenerService implements IOpenerService {
|
||||
//
|
||||
}
|
||||
|
||||
open(resource: URI, options?: { openToSide?: boolean }): Promise<any> {
|
||||
open(resource: URI, options?: { openToSide?: boolean }): Promise<boolean> {
|
||||
|
||||
const { scheme, path, query, fragment } = resource;
|
||||
let promise: Promise<any> | undefined = undefined;
|
||||
|
||||
if (scheme === Schemas.http || scheme === Schemas.https || scheme === Schemas.mailto) {
|
||||
if (!scheme) {
|
||||
// no scheme ?!?
|
||||
return Promise.resolve(false);
|
||||
|
||||
} else if (scheme === Schemas.http || scheme === Schemas.https || scheme === Schemas.mailto) {
|
||||
// open http or default mail application
|
||||
dom.windowOpenNoOpener(resource.toString(true));
|
||||
} else if (scheme === 'command' && CommandsRegistry.getCommand(path)) {
|
||||
return Promise.resolve(true);
|
||||
|
||||
} else if (scheme === Schemas.command) {
|
||||
// run command or bail out if command isn't known
|
||||
if (!CommandsRegistry.getCommand(path)) {
|
||||
return Promise.reject(`command '${path}' NOT known`);
|
||||
}
|
||||
// execute as command
|
||||
let args: any = [];
|
||||
try {
|
||||
@@ -42,13 +51,10 @@ export class OpenerService implements IOpenerService {
|
||||
} catch (e) {
|
||||
//
|
||||
}
|
||||
promise = this._commandService.executeCommand(path, ...args);
|
||||
return this._commandService.executeCommand(path, ...args).then(() => true);
|
||||
|
||||
} else {
|
||||
let selection: {
|
||||
startLineNumber: number;
|
||||
startColumn: number;
|
||||
} | undefined = undefined;
|
||||
let selection: { startLineNumber: number; startColumn: number; } | undefined = undefined;
|
||||
const match = /^L?(\d+)(?:,(\d+))?/.exec(fragment);
|
||||
if (match) {
|
||||
// support file:///some/file.js#73,84
|
||||
@@ -61,16 +67,15 @@ export class OpenerService implements IOpenerService {
|
||||
resource = resource.with({ fragment: '' });
|
||||
}
|
||||
|
||||
if (!resource.scheme) {
|
||||
// we cannot handle those
|
||||
return Promise.resolve(undefined);
|
||||
|
||||
} else if (resource.scheme === Schemas.file) {
|
||||
if (resource.scheme === Schemas.file) {
|
||||
resource = resources.normalizePath(resource); // workaround for non-normalized paths (https://github.com/Microsoft/vscode/issues/12954)
|
||||
}
|
||||
promise = this._editorService.openCodeEditor({ resource, options: { selection, } }, this._editorService.getFocusedCodeEditor(), options && options.openToSide);
|
||||
}
|
||||
|
||||
return Promise.resolve(promise);
|
||||
return this._editorService.openCodeEditor(
|
||||
{ resource, options: { selection, } },
|
||||
this._editorService.getFocusedCodeEditor(),
|
||||
options && options.openToSide
|
||||
).then(() => true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ export interface IOpenerService {
|
||||
* @param resource A resource
|
||||
* @return A promise that resolves when the opening is done.
|
||||
*/
|
||||
open(resource: URI, options?: { openToSide?: boolean }): Promise<any>;
|
||||
open(resource: URI, options?: { openToSide?: boolean }): Promise<boolean>;
|
||||
}
|
||||
|
||||
export const NullOpenerService: IOpenerService = Object.freeze({
|
||||
|
||||
Reference in New Issue
Block a user