Skip to content

Commit 76384da

Browse files
committed
Working OSC hyperlinks
Part of microsoft#39278
1 parent 9332731 commit 76384da

File tree

8 files changed

+51
-17
lines changed

8 files changed

+51
-17
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
"vscode-proxy-agent": "^0.12.0",
8787
"vscode-regexpp": "^3.1.0",
8888
"vscode-textmate": "7.0.1",
89-
"xterm": "5.0.0-beta.44",
89+
"xterm": "5.0.0-beta.47",
9090
"xterm-addon-canvas": "0.2.0-beta.21",
9191
"xterm-addon-search": "0.10.0-beta.5",
9292
"xterm-addon-serialize": "0.8.0-beta.5",
@@ -123,8 +123,8 @@
123123
"@types/winreg": "^1.2.30",
124124
"@types/yauzl": "^2.9.1",
125125
"@types/yazl": "^2.4.2",
126-
"@typescript-eslint/experimental-utils": "^5.10.0",
127126
"@typescript-eslint/eslint-plugin": "^5.10.0",
127+
"@typescript-eslint/experimental-utils": "^5.10.0",
128128
"@typescript-eslint/parser": "^5.10.0",
129129
"@vscode/telemetry-extractor": "^1.9.8",
130130
"@vscode/test-web": "^0.0.29",

remote/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"vscode-proxy-agent": "^0.12.0",
2525
"vscode-regexpp": "^3.1.0",
2626
"vscode-textmate": "7.0.1",
27-
"xterm": "5.0.0-beta.44",
27+
"xterm": "5.0.0-beta.47",
2828
"xterm-addon-canvas": "0.2.0-beta.21",
2929
"xterm-addon-search": "0.10.0-beta.5",
3030
"xterm-addon-serialize": "0.8.0-beta.5",

remote/web/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"tas-client-umd": "0.1.6",
1212
"vscode-oniguruma": "1.6.1",
1313
"vscode-textmate": "7.0.1",
14-
"xterm": "5.0.0-beta.44",
14+
"xterm": "5.0.0-beta.47",
1515
"xterm-addon-canvas": "0.2.0-beta.21",
1616
"xterm-addon-search": "0.10.0-beta.5",
1717
"xterm-addon-unicode11": "0.4.0-beta.5",

remote/web/yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ [email protected]:
8888
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.13.0-beta.45.tgz#f1f3c08e2a819970c1af0362eeb61185babcb6fc"
8989
integrity sha512-TXq5mxvG2alo5hSj/aFqHDzR2RSV2HH4is7R7kVmSCVPnl2RgDfAPilXOEJyYFLF09EgiGiG5UZASYJjvJfMRg==
9090

91-
92-
version "5.0.0-beta.44"
93-
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.0.0-beta.44.tgz#854ed16c06808295777afc4ef7b78ccd55e59d4a"
94-
integrity sha512-raKvoikUjKZTO9duYliDp5hSKAwYia9P51QCumHY30V/bRZ2fq9ryyKQ65PxW8LzGYK8o7x7vNRUHVWbS073Tw==
91+
92+
version "5.0.0-beta.47"
93+
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.0.0-beta.47.tgz#c2f865cb150dd649432d2f03749a2e03afa5b630"
94+
integrity sha512-XgaKHn+/OGzfK4d40f3ebs6q/5+v/i6Y1HI64/9IcxYuwtZQUqdhY6fgdwpJxphQKe1lB29JvZghDVKq15LxBA==

remote/yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -818,10 +818,10 @@ [email protected]:
818818
resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-5.0.0-beta.5.tgz#e29b6c5081f31f887122b7263ba996b0c46b3c22"
819819
integrity sha512-CMQ1+prBNF92oBMeZzc2rfTcmOaCGfwwSaoPYNTjyziZT6mZsEg7amajYkb0YAnqJ29MFm4kPGZbU78/dX4k2A==
820820

821-
822-
version "5.0.0-beta.44"
823-
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.0.0-beta.44.tgz#854ed16c06808295777afc4ef7b78ccd55e59d4a"
824-
integrity sha512-raKvoikUjKZTO9duYliDp5hSKAwYia9P51QCumHY30V/bRZ2fq9ryyKQ65PxW8LzGYK8o7x7vNRUHVWbS073Tw==
821+
822+
version "5.0.0-beta.47"
823+
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.0.0-beta.47.tgz#c2f865cb150dd649432d2f03749a2e03afa5b630"
824+
integrity sha512-XgaKHn+/OGzfK4d40f3ebs6q/5+v/i6Y1HI64/9IcxYuwtZQUqdhY6fgdwpJxphQKe1lB29JvZghDVKq15LxBA==
825825

826826
yallist@^4.0.0:
827827
version "4.0.0"

src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import { ITerminalCapabilityStore, TerminalCapability } from 'vs/platform/termin
3232
import { ITerminalConfiguration, ITerminalProcessManager, TERMINAL_CONFIG_SECTION } from 'vs/workbench/contrib/terminal/common/terminal';
3333
import { IHoverAction } from 'vs/workbench/services/hover/browser/hover';
3434
import type { ILink, ILinkProvider, IViewportRange, Terminal } from 'xterm';
35+
import { convertBufferRangeToViewport } from 'vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers';
3536

3637
export type XtermLinkMatcherHandler = (event: MouseEvent | undefined, link: string) => Promise<void>;
3738
export type XtermLinkMatcherValidationCallback = (uri: string, callback: (isValid: boolean) => void) => void;
@@ -92,6 +93,36 @@ export class TerminalLinkManager extends DisposableStore {
9293
this._openers.set(TerminalBuiltinLinkType.Url, this._instantiationService.createInstance(TerminalUrlLinkOpener, !!this._processManager.remoteAuthority));
9394

9495
this._registerStandardLinkProviders();
96+
97+
this._xterm.options.linkHandler = {
98+
activate: (e, text) => {
99+
this._openers.get(TerminalBuiltinLinkType.Url)?.open({
100+
type: TerminalBuiltinLinkType.Url,
101+
text,
102+
bufferRange: null!,
103+
uri: URI.parse(text)
104+
});
105+
},
106+
hover: (e, text, range) => {
107+
const core = (this._xterm as any)._core as IXtermCore;
108+
const cellDimensions = {
109+
width: core._renderService.dimensions.actualCellWidth,
110+
height: core._renderService.dimensions.actualCellHeight
111+
};
112+
const terminalDimensions = {
113+
width: this._xterm.cols,
114+
height: this._xterm.rows
115+
};
116+
this._showHover({
117+
viewportRange: convertBufferRangeToViewport(range, this._xterm.buffer.active.viewportY),
118+
cellDimensions,
119+
terminalDimensions
120+
}, this._getLinkHoverString(text, text), undefined, (text) => this._xterm.options.linkHandler!.activate(e, text, range));
121+
},
122+
leave: (e, text) => {
123+
console.log('leave');
124+
}
125+
};
95126
}
96127

97128
private _setupLinkDetector(id: string, detector: ITerminalLinkDetector, isExternal: boolean = false): ILinkProvider {

src/vs/workbench/contrib/terminal/browser/media/xterm.css

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,10 @@
5555
.xterm .xterm-helpers {
5656
position: absolute;
5757
top: 0;
58-
/* The z-index of the helpers must be higher than the canvases in order for IMEs to appear on top. */
58+
/**
59+
* The z-index of the helpers must be higher than the canvases in order for
60+
* IMEs to appear on top.
61+
*/
5962
z-index: 5;
6063
}
6164

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11542,10 +11542,10 @@ [email protected]:
1154211542
resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-5.0.0-beta.5.tgz#e29b6c5081f31f887122b7263ba996b0c46b3c22"
1154311543
integrity sha512-CMQ1+prBNF92oBMeZzc2rfTcmOaCGfwwSaoPYNTjyziZT6mZsEg7amajYkb0YAnqJ29MFm4kPGZbU78/dX4k2A==
1154411544

11545-
11546-
version "5.0.0-beta.44"
11547-
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.0.0-beta.44.tgz#854ed16c06808295777afc4ef7b78ccd55e59d4a"
11548-
integrity sha512-raKvoikUjKZTO9duYliDp5hSKAwYia9P51QCumHY30V/bRZ2fq9ryyKQ65PxW8LzGYK8o7x7vNRUHVWbS073Tw==
11545+
11546+
version "5.0.0-beta.47"
11547+
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.0.0-beta.47.tgz#c2f865cb150dd649432d2f03749a2e03afa5b630"
11548+
integrity sha512-XgaKHn+/OGzfK4d40f3ebs6q/5+v/i6Y1HI64/9IcxYuwtZQUqdhY6fgdwpJxphQKe1lB29JvZghDVKq15LxBA==
1154911549

1155011550
y18n@^3.2.1:
1155111551
version "3.2.2"

0 commit comments

Comments
 (0)