mirror of
https://github.com/microsoft/vscode.git
synced 2026-07-11 14:04:49 -05:00
@@ -9,6 +9,7 @@ import { TerminalLink } from 'vs/workbench/contrib/terminal/browser/links/termin
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { TerminalBaseLinkProvider } from 'vs/workbench/contrib/terminal/browser/links/terminalBaseLinkProvider';
|
||||
import { ITerminalExternalLinkProvider, ITerminalInstance } from 'vs/workbench/contrib/terminal/browser/terminal';
|
||||
import { XtermLinkMatcherHandler } from 'vs/workbench/contrib/terminal/browser/links/terminalLinkManager';
|
||||
|
||||
/**
|
||||
* An adapter to convert a simple external link provider into an internal link provider that
|
||||
@@ -20,6 +21,7 @@ export class TerminalExternalLinkProviderAdapter extends TerminalBaseLinkProvide
|
||||
private readonly _xterm: Terminal,
|
||||
private readonly _instance: ITerminalInstance,
|
||||
private readonly _externalLinkProvider: ITerminalExternalLinkProvider,
|
||||
private readonly _wrapLinkHandler: (handler: (event: MouseEvent | undefined, link: string) => void) => XtermLinkMatcherHandler,
|
||||
private readonly _tooltipCallback: (link: TerminalLink, viewportRange: IViewportRange, modifierDownCallback?: () => void, modifierUpCallback?: () => void) => void,
|
||||
@IInstantiationService private readonly _instantiationService: IInstantiationService
|
||||
) {
|
||||
@@ -58,7 +60,8 @@ export class TerminalExternalLinkProviderAdapter extends TerminalBaseLinkProvide
|
||||
endLineNumber: 1
|
||||
}, startLine);
|
||||
const matchingText = lineContent.substr(link.startIndex, link.length) || '';
|
||||
return this._instantiationService.createInstance(TerminalLink, bufferRange, matchingText, this._xterm.buffer.active.viewportY, (_, text) => link.activate(text), this._tooltipCallback, true, link.label);
|
||||
const activateLink = this._wrapLinkHandler((_, text) => link.activate(text));
|
||||
return this._instantiationService.createInstance(TerminalLink, bufferRange, matchingText, this._xterm.buffer.active.viewportY, activateLink, this._tooltipCallback, true, link.label);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,7 +156,7 @@ export class TerminalLinkManager extends DisposableStore {
|
||||
}
|
||||
|
||||
public registerExternalLinkProvider(instance: ITerminalInstance, linkProvider: ITerminalExternalLinkProvider): IDisposable {
|
||||
const wrappedLinkProvider = this._instantiationService.createInstance(TerminalExternalLinkProviderAdapter, this._xterm, instance, linkProvider, this._tooltipCallback2.bind(this));
|
||||
const wrappedLinkProvider = this._instantiationService.createInstance(TerminalExternalLinkProviderAdapter, this._xterm, instance, linkProvider, this._wrapLinkHandler.bind(this), this._tooltipCallback2.bind(this));
|
||||
const newLinkProvider = this._xterm.registerLinkProvider(wrappedLinkProvider);
|
||||
// Re-register the standard link providers so they are a lower priority that the new one
|
||||
this._registerStandardLinkProviders();
|
||||
|
||||
Reference in New Issue
Block a user