mirror of
https://github.com/Microsoft/vscode
synced 2024-10-12 22:37:41 +00:00
editor link detector uses URL
This commit is contained in:
parent
3816ecfe24
commit
d891b0d349
|
@ -14,6 +14,18 @@ import { CommandsRegistry } from 'vs/platform/commands/common/commands';
|
||||||
import { isDisposable, Disposable } from 'vs/base/common/lifecycle';
|
import { isDisposable, Disposable } from 'vs/base/common/lifecycle';
|
||||||
import { coalesce } from 'vs/base/common/arrays';
|
import { coalesce } from 'vs/base/common/arrays';
|
||||||
|
|
||||||
|
// in IE11 there is URL but a constructor
|
||||||
|
// https://developer.mozilla.org/en-US/docs/Web/API/URL/URL#Browser_compatibility
|
||||||
|
const canUseUrl = (function () {
|
||||||
|
try {
|
||||||
|
// tslint:disable-next-line: no-unused-expression
|
||||||
|
new URL('some://thing');
|
||||||
|
return true;
|
||||||
|
} catch {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
export class Link implements ILink {
|
export class Link implements ILink {
|
||||||
|
|
||||||
private _link: ILink;
|
private _link: ILink;
|
||||||
|
@ -44,13 +56,15 @@ export class Link implements ILink {
|
||||||
return this._link.tooltip;
|
return this._link.tooltip;
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve(token: CancellationToken): Promise<URI> {
|
async resolve(token: CancellationToken): Promise<URI | URL> {
|
||||||
if (this._link.url) {
|
if (this._link.url) {
|
||||||
try {
|
try {
|
||||||
if (typeof this._link.url === 'string') {
|
if (URI.isUri(this._link.url)) {
|
||||||
return Promise.resolve(URI.parse(this._link.url));
|
return this._link.url;
|
||||||
|
} else if (!canUseUrl) {
|
||||||
|
return URI.parse(this._link.url);
|
||||||
} else {
|
} else {
|
||||||
return Promise.resolve(this._link.url);
|
return new URL(this._link.url);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return Promise.reject(new Error('invalid'));
|
return Promise.reject(new Error('invalid'));
|
||||||
|
|
Loading…
Reference in a new issue