提交 e910e4e6 编写于 作者: J Johannes Rieken

OpenerService#open should return a boolean

上级 1d4bed79
......@@ -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({
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册