Support link position in hover tooltip callback

This commit is contained in:
Jon Bockhorst
2019-10-14 14:25:02 -05:00
parent e224b865fd
commit 040f9f49d9
3 changed files with 37 additions and 4 deletions
+1 -1
View File
@@ -306,7 +306,7 @@ export class Linkifier implements ILinkifier {
e => {
this._onLinkTooltip.fire(this._createLinkHoverEvent(x1, y1, x2, y2, fg));
if (matcher.hoverTooltipCallback) {
matcher.hoverTooltipCallback(e, uri);
matcher.hoverTooltipCallback(e, uri, { startRow: y1, startColumn: x1, endRow: y2, endColumn: x2 });
}
},
() => {
+10 -2
View File
@@ -43,14 +43,22 @@ export interface IViewport extends IDisposable {
onThemeChange(colors: IColorSet): void;
}
export interface ILinkLocation {
startColumn: number;
startRow: number;
endColumn: number;
endRow: number;
}
export type LinkMatcherHandler = (event: MouseEvent, uri: string) => void;
export type LinkMatcherHoverTooltipCallback = (event: MouseEvent, uri: string, position: ILinkLocation) => void;
export type LinkMatcherValidationCallback = (uri: string, callback: (isValid: boolean) => void) => void;
export interface ILinkMatcher {
id: number;
regex: RegExp;
handler: LinkMatcherHandler;
hoverTooltipCallback?: LinkMatcherHandler;
hoverTooltipCallback?: LinkMatcherHoverTooltipCallback;
hoverLeaveCallback?: () => void;
matchIndex?: number;
validationCallback?: LinkMatcherValidationCallback;
@@ -96,7 +104,7 @@ export interface ILinkMatcherOptions {
/**
* A callback that fires when the mouse hovers over a link.
*/
tooltipCallback?: LinkMatcherHandler;
tooltipCallback?: LinkMatcherHoverTooltipCallback;
/**
* A callback that fires when the mouse leaves a link that was hovered.
*/
+26 -1
View File
@@ -269,7 +269,7 @@ declare module 'xterm' {
/**
* A callback that fires when the mouse hovers over a link for a moment.
*/
tooltipCallback?: (event: MouseEvent, uri: string) => boolean | void;
tooltipCallback?: (event: MouseEvent, uri: string, location: ILinkLocation) => boolean | void;
/**
* A callback that fires when the mouse leaves a link. Note that this can
@@ -842,6 +842,31 @@ declare module 'xterm' {
endRow: number;
}
/**
* An object representing a link location within the terminal.
*/
interface ILinkLocation {
/**
* The start column of the link.
*/
startColumn: number;
/**
* The start row of the link.
*/
startRow: number;
/**
* The end column of the link.
*/
endColumn: number;
/**
* The end row of the link.
*/
endRow: number;
}
/**
* Represents a terminal buffer.
*/