Remove link caching

This commit is contained in:
Jon Bockhorst
2019-11-05 13:01:53 -06:00
parent fdfadfefbc
commit 28c43ac2bf
4 changed files with 17 additions and 31 deletions
@@ -1,6 +1,6 @@
import { ILinkProvider, IBufferCellPosition, ILink, Terminal, IBuffer } from 'xterm';
export default class WebLinkProvider implements ILinkProvider {
export class WebLinkProvider implements ILinkProvider {
constructor(
private readonly _terminal: Terminal,
@@ -3,8 +3,8 @@
* @license MIT
*/
import { Terminal, ILinkMatcherOptions, ITerminalAddon, ILinkProvider } from 'xterm';
import WebLinkProvider from './WebLinkProvider';
import { Terminal, ILinkMatcherOptions, ITerminalAddon, ILinkProvider, IDisposable } from 'xterm';
import { WebLinkProvider } from './WebLinkProvider';
const protocolClause = '(https?:\\/\\/)';
const domainCharacterSet = '[\\da-z\\.-]+';
@@ -33,7 +33,7 @@ function handleLink(event: MouseEvent, uri: string): void {
export class WebLinksAddon implements ITerminalAddon {
private _linkMatcherId: number | undefined;
private _terminal: Terminal | undefined;
private _linkProvider: ILinkProvider | undefined;
private _linkProvider: IDisposable | undefined;
constructor(
private _handler: (event: MouseEvent, uri: string) => void = handleLink,
@@ -46,8 +46,7 @@ export class WebLinksAddon implements ITerminalAddon {
this._terminal = terminal;
if ('registerLinkProvider' in this._terminal as any) {
this._linkProvider = new WebLinkProvider(this._terminal, strictUrlRegex, this._handler);
this._terminal.registerLinkProvider(this._linkProvider);
this._linkProvider = this._terminal.registerLinkProvider(new WebLinkProvider(this._terminal, strictUrlRegex, this._handler));
} else {
this._linkMatcherId = this._terminal.registerLinkMatcher(strictUrlRegex, this._handler, this._options);
}
@@ -57,5 +56,9 @@ export class WebLinksAddon implements ITerminalAddon {
if (this._linkMatcherId !== undefined && this._terminal !== undefined) {
this._terminal.deregisterLinkMatcher(this._linkMatcherId);
}
if (this._linkProvider) {
this._linkProvider.dispose();
}
}
}