diff --git a/addons/xterm-addon-web-links/src/WebLinksAddon.ts b/addons/xterm-addon-web-links/src/WebLinksAddon.ts index a1b77c30..c56910ad 100644 --- a/addons/xterm-addon-web-links/src/WebLinksAddon.ts +++ b/addons/xterm-addon-web-links/src/WebLinksAddon.ts @@ -43,7 +43,8 @@ export class WebLinksAddon implements ITerminalAddon { constructor( private _handler: (event: MouseEvent, uri: string) => void = handleLink, - private _options: ILinkMatcherOptions = {} + private _options: ILinkMatcherOptions = {}, + private _useLinkProvider: boolean = false ) { this._options.matchIndex = 1; } @@ -51,10 +52,12 @@ export class WebLinksAddon implements ITerminalAddon { public activate(terminal: Terminal): void { this._terminal = terminal; - if ('registerLinkProvider' in this._terminal) { + if (this._useLinkProvider && 'registerLinkProvider' in this._terminal) { + console.log('link provider'); this._linkProvider = this._terminal.registerLinkProvider(new WebLinkProvider(this._terminal, strictUrlRegex, this._handler)); } else { - // HACK: This is an older version of xterm.js, use registerLinkMatcher + console.log('link matcher'); + // TODO: This should be removed eventually this._linkMatcherId = (this._terminal).registerLinkMatcher(strictUrlRegex, this._handler, this._options); } } diff --git a/demo/client.ts b/demo/client.ts index 6174216c..b009a534 100644 --- a/demo/client.ts +++ b/demo/client.ts @@ -152,7 +152,8 @@ function createTerminal(): void { addons.serialize.instance = new SerializeAddon(); addons.fit.instance = new FitAddon(); addons.unicode11.instance = new Unicode11Addon(); - addons['web-links'].instance = new WebLinksAddon(); + // TODO: Remove arguments when link provider API is the default + addons['web-links'].instance = new WebLinksAddon(undefined, undefined, true); typedTerm.loadAddon(addons.fit.instance); typedTerm.loadAddon(addons.search.instance); typedTerm.loadAddon(addons.serialize.instance); diff --git a/src/browser/Linkifier2.ts b/src/browser/Linkifier2.ts index 38bd12ac..2eeec1df 100644 --- a/src/browser/Linkifier2.ts +++ b/src/browser/Linkifier2.ts @@ -173,7 +173,7 @@ export class Linkifier2 implements ILinkifier2 { // Add listener for rerendering if (this._renderService) { - this._linkCacheDisposables.push(this._renderService.onRender((e: { start: number, end: number }) => { + this._linkCacheDisposables.push(this._renderService.onRender(e => { this._clearCurrentLink(e.start + 1 + this._bufferService.buffer.ydisp, e.end + 1 + this._bufferService.buffer.ydisp); })); }