@opensumi/ide-terminal-next 3.7.2-next-1740052080.0 → 3.7.2-next-1740054042.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/lib/browser/component/resize.delegate.d.ts +14 -0
- package/lib/browser/component/resize.delegate.d.ts.map +1 -0
- package/lib/browser/component/resize.delegate.js +46 -0
- package/lib/browser/component/resize.delegate.js.map +1 -0
- package/lib/browser/component/resize.module.less +77 -0
- package/lib/browser/component/resize.view.d.ts +16 -0
- package/lib/browser/component/resize.view.d.ts.map +1 -0
- package/lib/browser/component/resize.view.js +55 -0
- package/lib/browser/component/resize.view.js.map +1 -0
- package/lib/browser/component/search.module.less +61 -0
- package/lib/browser/component/search.view.d.ts +3 -0
- package/lib/browser/component/search.view.d.ts.map +1 -0
- package/lib/browser/component/search.view.js +89 -0
- package/lib/browser/component/search.view.js.map +1 -0
- package/lib/browser/component/tab.item.d.ts +7 -0
- package/lib/browser/component/tab.item.d.ts.map +1 -0
- package/lib/browser/component/tab.item.js +121 -0
- package/lib/browser/component/tab.item.js.map +1 -0
- package/lib/browser/component/tab.module.less +174 -0
- package/lib/browser/component/tab.view.d.ts +4 -0
- package/lib/browser/component/tab.view.d.ts.map +1 -0
- package/lib/browser/component/tab.view.js +65 -0
- package/lib/browser/component/tab.view.js.map +1 -0
- package/lib/browser/component/terminal.module.less +50 -0
- package/lib/browser/component/terminal.variable.d.ts +8 -0
- package/lib/browser/component/terminal.variable.d.ts.map +1 -0
- package/lib/browser/component/terminal.variable.js +44 -0
- package/lib/browser/component/terminal.variable.js.map +1 -0
- package/lib/browser/component/terminal.view.d.ts +5 -0
- package/lib/browser/component/terminal.view.d.ts.map +1 -0
- package/lib/browser/component/terminal.view.js +63 -0
- package/lib/browser/component/terminal.view.js.map +1 -0
- package/lib/browser/component/terminal.widget.d.ts +10 -0
- package/lib/browser/component/terminal.widget.d.ts.map +1 -0
- package/lib/browser/component/terminal.widget.js +65 -0
- package/lib/browser/component/terminal.widget.js.map +1 -0
- package/lib/browser/component/variable.module.less +15 -0
- package/lib/browser/contribution/index.d.ts.map +1 -0
- package/lib/browser/contribution/index.js +11 -0
- package/lib/browser/contribution/index.js.map +1 -0
- package/lib/browser/contribution/terminal.command.js +328 -0
- package/lib/browser/contribution/terminal.keybinding.js +87 -0
- package/lib/browser/contribution/terminal.lifecycle.js +52 -0
- package/lib/browser/contribution/terminal.menu.js +168 -0
- package/lib/browser/contribution/terminal.network.js +44 -0
- package/lib/browser/contribution/terminal.preference.js +43 -0
- package/lib/browser/contribution/terminal.view.js +57 -0
- package/lib/browser/index.js +124 -0
- package/lib/browser/links/base.d.ts +8 -0
- package/lib/browser/links/base.d.ts.map +1 -0
- package/lib/browser/links/base.js +13 -0
- package/lib/browser/links/base.js.map +1 -0
- package/lib/browser/links/external-link-provider-adapter.d.ts +21 -0
- package/lib/browser/links/external-link-provider-adapter.d.ts.map +1 -0
- package/lib/browser/links/external-link-provider-adapter.js +74 -0
- package/lib/browser/links/external-link-provider-adapter.js.map +1 -0
- package/lib/browser/links/helpers.d.ts +7 -0
- package/lib/browser/links/helpers.d.ts.map +1 -0
- package/lib/browser/links/helpers.js +128 -0
- package/lib/browser/links/helpers.js.map +1 -0
- package/lib/browser/links/link-manager.d.ts +92 -0
- package/lib/browser/links/link-manager.d.ts.map +1 -0
- package/lib/browser/links/link-manager.js +342 -0
- package/lib/browser/links/link-manager.js.map +1 -0
- package/lib/browser/links/link.d.ts +31 -0
- package/lib/browser/links/link.d.ts.map +1 -0
- package/lib/browser/links/link.js +136 -0
- package/lib/browser/links/link.js.map +1 -0
- package/lib/browser/links/protocol-link-provider.d.ts +14 -0
- package/lib/browser/links/protocol-link-provider.d.ts.map +1 -0
- package/lib/browser/links/protocol-link-provider.js +71 -0
- package/lib/browser/links/protocol-link-provider.js.map +1 -0
- package/lib/browser/links/validated-local-link-provider.d.ts +41 -0
- package/lib/browser/links/validated-local-link-provider.d.ts.map +1 -0
- package/lib/browser/links/validated-local-link-provider.js +235 -0
- package/lib/browser/links/validated-local-link-provider.js.map +1 -0
- package/lib/browser/links/word-link-provider.d.ts +29 -0
- package/lib/browser/links/word-link-provider.d.ts.map +1 -0
- package/lib/browser/links/word-link-provider.js +153 -0
- package/lib/browser/links/word-link-provider.js.map +1 -0
- package/lib/browser/terminal.addon.js +83 -0
- package/lib/browser/terminal.api.js +162 -0
- package/lib/browser/terminal.client.js +680 -0
- package/lib/browser/terminal.color.js +240 -0
- package/lib/browser/terminal.context-key.js +29 -0
- package/lib/browser/terminal.context-menu.js +96 -0
- package/lib/browser/terminal.controller.js +669 -0
- package/lib/browser/terminal.environment.service.js +153 -0
- package/lib/browser/terminal.error.js +61 -0
- package/lib/browser/terminal.ext.host.proxy.js +108 -0
- package/lib/browser/terminal.hover.manager.js +85 -0
- package/lib/browser/terminal.input.js +32 -0
- package/lib/browser/terminal.internal.service.js +107 -0
- package/lib/browser/terminal.network.js +150 -0
- package/lib/browser/terminal.preference.js +136 -0
- package/lib/browser/terminal.profile.internal.js +104 -0
- package/lib/browser/terminal.profile.js +211 -0
- package/lib/browser/terminal.render.js +25 -0
- package/lib/browser/terminal.restore.js +49 -0
- package/lib/browser/terminal.search.js +109 -0
- package/lib/browser/terminal.service.js +163 -0
- package/lib/common/api.d.ts +22 -0
- package/lib/common/api.d.ts.map +1 -0
- package/lib/common/api.js +5 -0
- package/lib/common/api.js.map +1 -0
- package/lib/common/client.d.ts +199 -0
- package/lib/common/client.d.ts.map +1 -0
- package/lib/common/client.js +6 -0
- package/lib/common/client.js.map +1 -0
- package/lib/common/controller.d.ts +149 -0
- package/lib/common/controller.d.ts.map +1 -0
- package/lib/common/controller.js +8 -0
- package/lib/common/controller.js.map +1 -0
- package/lib/common/environmentVariable.d.ts +116 -0
- package/lib/common/environmentVariable.d.ts.map +1 -0
- package/lib/common/environmentVariable.js +30 -0
- package/lib/common/environmentVariable.js.map +1 -0
- package/lib/common/environmentVariableCollection.d.ts +9 -0
- package/lib/common/environmentVariableCollection.d.ts.map +1 -0
- package/lib/common/environmentVariableCollection.js +140 -0
- package/lib/common/environmentVariableCollection.js.map +1 -0
- package/lib/common/error.d.ts +41 -0
- package/lib/common/error.d.ts.map +1 -0
- package/lib/common/error.js +13 -0
- package/lib/common/error.js.map +1 -0
- package/lib/common/extension.d.ts +139 -0
- package/lib/common/extension.d.ts.map +1 -0
- package/lib/common/extension.js +57 -0
- package/lib/common/extension.js.map +1 -0
- package/lib/common/index.d.ts +17 -0
- package/lib/common/index.d.ts.map +1 -0
- package/lib/common/index.js +20 -0
- package/lib/common/index.js.map +1 -0
- package/lib/common/link-computer.d.ts +56 -0
- package/lib/common/link-computer.d.ts.map +1 -0
- package/lib/common/link-computer.js +282 -0
- package/lib/common/link-computer.js.map +1 -0
- package/lib/common/network.d.ts +48 -0
- package/lib/common/network.d.ts.map +1 -0
- package/lib/common/network.js +10 -0
- package/lib/common/network.js.map +1 -0
- package/lib/common/preference.d.ts +134 -0
- package/lib/common/preference.d.ts.map +1 -0
- package/lib/common/preference.js +199 -0
- package/lib/common/preference.js.map +1 -0
- package/lib/common/process.d.ts +8 -0
- package/lib/common/process.d.ts.map +1 -0
- package/lib/common/process.js +3 -0
- package/lib/common/process.js.map +1 -0
- package/lib/common/profile.d.ts +99 -0
- package/lib/common/profile.d.ts.map +1 -0
- package/lib/common/profile.js +27 -0
- package/lib/common/profile.js.map +1 -0
- package/lib/common/pty.d.ts +525 -0
- package/lib/common/pty.d.ts.map +1 -0
- package/lib/common/pty.js +28 -0
- package/lib/common/pty.js.map +1 -0
- package/lib/common/render.d.ts +29 -0
- package/lib/common/render.d.ts.map +1 -0
- package/lib/common/render.js +10 -0
- package/lib/common/render.js.map +1 -0
- package/lib/common/resize.d.ts +43 -0
- package/lib/common/resize.d.ts.map +1 -0
- package/lib/common/resize.js +3 -0
- package/lib/common/resize.js.map +1 -0
- package/lib/common/restore.d.ts +6 -0
- package/lib/common/restore.d.ts.map +1 -0
- package/lib/common/restore.js +5 -0
- package/lib/common/restore.js.map +1 -0
- package/lib/common/service.d.ts +96 -0
- package/lib/common/service.d.ts.map +1 -0
- package/lib/common/service.js +6 -0
- package/lib/common/service.js.map +1 -0
- package/lib/common/shell.d.ts +11 -0
- package/lib/common/shell.d.ts.map +1 -0
- package/lib/common/shell.js +14 -0
- package/lib/common/shell.js.map +1 -0
- package/lib/common/theme.d.ts +6 -0
- package/lib/common/theme.d.ts.map +1 -0
- package/lib/common/theme.js +5 -0
- package/lib/common/theme.js.map +1 -0
- package/lib/common/utils.d.ts +4 -0
- package/lib/common/utils.d.ts.map +1 -0
- package/lib/common/utils.js +15 -0
- package/lib/common/utils.js.map +1 -0
- package/lib/common/xterm.d.ts +27 -0
- package/lib/common/xterm.d.ts.map +1 -0
- package/lib/common/xterm.js +10 -0
- package/lib/common/xterm.js.map +1 -0
- package/lib/index.js +5 -0
- package/lib/node/data-store.d.ts +13 -0
- package/lib/node/data-store.d.ts.map +1 -0
- package/lib/node/data-store.js +6 -0
- package/lib/node/data-store.js.map +1 -0
- package/lib/node/index.d.ts +10 -0
- package/lib/node/index.d.ts.map +1 -0
- package/lib/node/index.js +64 -0
- package/lib/node/index.js.map +1 -0
- package/lib/node/pty.d.ts +42 -0
- package/lib/node/pty.d.ts.map +1 -0
- package/lib/node/pty.js +277 -0
- package/lib/node/pty.js.map +1 -0
- package/lib/node/pty.manager.d.ts +52 -0
- package/lib/node/pty.manager.d.ts.map +1 -0
- package/lib/node/pty.manager.js +157 -0
- package/lib/node/pty.manager.js.map +1 -0
- package/lib/node/pty.manager.remote.d.ts +23 -0
- package/lib/node/pty.manager.remote.d.ts.map +1 -0
- package/lib/node/pty.manager.remote.js +124 -0
- package/lib/node/pty.manager.remote.js.map +1 -0
- package/lib/node/pty.proxy.d.ts +45 -0
- package/lib/node/pty.proxy.d.ts.map +1 -0
- package/lib/node/pty.proxy.js +277 -0
- package/lib/node/pty.proxy.js.map +1 -0
- package/lib/node/pty.proxy.remote.exec.d.ts +2 -0
- package/lib/node/pty.proxy.remote.exec.d.ts.map +1 -0
- package/lib/node/pty.proxy.remote.exec.js +7 -0
- package/lib/node/pty.proxy.remote.exec.js.map +1 -0
- package/lib/node/shell-integration.service.d.ts +24 -0
- package/lib/node/shell-integration.service.d.ts.map +1 -0
- package/lib/node/shell-integration.service.js +187 -0
- package/lib/node/shell-integration.service.js.map +1 -0
- package/lib/node/shell.d.ts +20 -0
- package/lib/node/shell.d.ts.map +1 -0
- package/lib/node/shell.js +199 -0
- package/lib/node/shell.js.map +1 -0
- package/lib/node/terminal.process.service.d.ts +5 -0
- package/lib/node/terminal.process.service.d.ts.map +1 -0
- package/lib/node/terminal.process.service.js +15 -0
- package/lib/node/terminal.process.service.js.map +1 -0
- package/lib/node/terminal.profile.service.d.ts +19 -0
- package/lib/node/terminal.profile.service.d.ts.map +1 -0
- package/lib/node/terminal.profile.service.js +228 -0
- package/lib/node/terminal.profile.service.js.map +1 -0
- package/lib/node/terminal.service.client.d.ts +51 -0
- package/lib/node/terminal.service.client.d.ts.map +1 -0
- package/lib/node/terminal.service.client.js +159 -0
- package/lib/node/terminal.service.client.js.map +1 -0
- package/lib/node/terminal.service.d.ts +30 -0
- package/lib/node/terminal.service.d.ts.map +1 -0
- package/lib/node/terminal.service.js +246 -0
- package/lib/node/terminal.service.js.map +1 -0
- package/package.json +18 -18
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TerminalLinkManager = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const xterm_1 = require("@xterm/xterm");
|
|
6
|
+
const di_1 = require("@opensumi/di");
|
|
7
|
+
const ide_core_browser_1 = require("@opensumi/ide-core-browser");
|
|
8
|
+
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
9
|
+
const common_1 = require("@opensumi/ide-editor/lib/common");
|
|
10
|
+
const ide_file_service_1 = require("@opensumi/ide-file-service");
|
|
11
|
+
const common_2 = require("../../common");
|
|
12
|
+
const terminal_client_1 = require("../terminal.client");
|
|
13
|
+
const external_link_provider_adapter_1 = require("./external-link-provider-adapter");
|
|
14
|
+
const protocol_link_provider_1 = require("./protocol-link-provider");
|
|
15
|
+
const validated_local_link_provider_1 = require("./validated-local-link-provider");
|
|
16
|
+
const word_link_provider_1 = require("./word-link-provider");
|
|
17
|
+
const { posix, win32 } = ide_core_common_1.path;
|
|
18
|
+
/**
|
|
19
|
+
* An object responsible for managing registration of link matchers and link providers.
|
|
20
|
+
*/
|
|
21
|
+
let TerminalLinkManager = class TerminalLinkManager extends ide_core_common_1.Disposable {
|
|
22
|
+
constructor(_xterm, _client) {
|
|
23
|
+
super();
|
|
24
|
+
this._xterm = _xterm;
|
|
25
|
+
this._client = _client;
|
|
26
|
+
this._standardLinkProviders = [];
|
|
27
|
+
this._standardLinkProvidersDisposables = new ide_core_common_1.DisposableCollection();
|
|
28
|
+
// Protocol links
|
|
29
|
+
const wrappedActivateCallback = this._wrapLinkHandler((_, link) => this._handleProtocolLink(link));
|
|
30
|
+
const protocolProvider = this.injector.get(protocol_link_provider_1.TerminalProtocolLinkProvider, [
|
|
31
|
+
this._xterm,
|
|
32
|
+
wrappedActivateCallback,
|
|
33
|
+
this._tooltipCallback.bind(this),
|
|
34
|
+
]);
|
|
35
|
+
this._standardLinkProviders.push(protocolProvider);
|
|
36
|
+
// Validated local links
|
|
37
|
+
const wrappedTextLinkActivateCallback = this._wrapLinkHandler((_, link) => this._handleLocalLink(link));
|
|
38
|
+
const validatedProvider = this.injector.get(validated_local_link_provider_1.TerminalValidatedLocalLinkProvider, [
|
|
39
|
+
this._xterm,
|
|
40
|
+
this._client,
|
|
41
|
+
wrappedTextLinkActivateCallback,
|
|
42
|
+
this._wrapLinkHandler.bind(this),
|
|
43
|
+
this._tooltipCallback.bind(this),
|
|
44
|
+
async (link, cb) => cb(await this._resolvePath(link)),
|
|
45
|
+
]);
|
|
46
|
+
this._standardLinkProviders.push(validatedProvider);
|
|
47
|
+
const wordLinkProvider = this.injector.get(word_link_provider_1.TerminalWordLinkProvider, [
|
|
48
|
+
this._xterm,
|
|
49
|
+
async (link, cb) => cb(await this._resolvePath(link)),
|
|
50
|
+
wrappedTextLinkActivateCallback,
|
|
51
|
+
]);
|
|
52
|
+
this._standardLinkProviders.push(wordLinkProvider);
|
|
53
|
+
this._registerStandardLinkProviders();
|
|
54
|
+
}
|
|
55
|
+
set processCwd(processCwd) {
|
|
56
|
+
this._processCwd = processCwd;
|
|
57
|
+
}
|
|
58
|
+
// user may change the terminal cwd, so we need to get it from the service
|
|
59
|
+
async getTerminalCwd() {
|
|
60
|
+
const cwd = await this.terminalService.getCwd(this._client.id);
|
|
61
|
+
return cwd || this._processCwd;
|
|
62
|
+
}
|
|
63
|
+
_registerStandardLinkProviders() {
|
|
64
|
+
this._standardLinkProvidersDisposables.dispose();
|
|
65
|
+
this._standardLinkProvidersDisposables = new ide_core_common_1.DisposableCollection();
|
|
66
|
+
for (const p of this._standardLinkProviders) {
|
|
67
|
+
this._standardLinkProvidersDisposables.push(this._xterm.registerLinkProvider(p));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
_tooltipCallback(link, viewportRange, modifierDownCallback, modifierUpCallback) {
|
|
71
|
+
const core = this._xterm._core;
|
|
72
|
+
const cellDimensions = {
|
|
73
|
+
width: core._renderService.dimensions.css.cell.width,
|
|
74
|
+
height: core._renderService.dimensions.css.cell.height,
|
|
75
|
+
};
|
|
76
|
+
const terminalDimensions = {
|
|
77
|
+
width: this._xterm.cols,
|
|
78
|
+
height: this._xterm.rows,
|
|
79
|
+
};
|
|
80
|
+
const boundingClientRect = core.element.getBoundingClientRect();
|
|
81
|
+
// Don't pass the mouse event as this avoids the modifier check
|
|
82
|
+
return this._showHover({
|
|
83
|
+
viewportRange,
|
|
84
|
+
cellDimensions,
|
|
85
|
+
terminalDimensions,
|
|
86
|
+
boundingClientRect,
|
|
87
|
+
modifierDownCallback,
|
|
88
|
+
modifierUpCallback,
|
|
89
|
+
}, this._getLinkHoverString(link.text, link.label), (text) => link.activate(undefined, text), link);
|
|
90
|
+
}
|
|
91
|
+
_showHover(targetOptions, text, linkHandler, link) {
|
|
92
|
+
const attached = this._hoverManager.showHover(targetOptions, text, linkHandler);
|
|
93
|
+
link === null || link === void 0 ? void 0 : link.onInvalidated(() => attached.dispose());
|
|
94
|
+
return ide_core_common_1.Disposable.create(() => attached.dispose());
|
|
95
|
+
}
|
|
96
|
+
registerExternalLinkProvider(instance, linkProvider) {
|
|
97
|
+
const wrappedLinkProvider = this.injector.get(external_link_provider_adapter_1.TerminalExternalLinkProviderAdapter, [
|
|
98
|
+
this._xterm,
|
|
99
|
+
instance,
|
|
100
|
+
linkProvider,
|
|
101
|
+
this._wrapLinkHandler.bind(this),
|
|
102
|
+
this._tooltipCallback.bind(this),
|
|
103
|
+
]);
|
|
104
|
+
const newLinkProvider = this._xterm.registerLinkProvider(wrappedLinkProvider);
|
|
105
|
+
// Re-register the standard link providers so they are a lower priority that the new one
|
|
106
|
+
this._registerStandardLinkProviders();
|
|
107
|
+
return newLinkProvider;
|
|
108
|
+
}
|
|
109
|
+
_wrapLinkHandler(handler) {
|
|
110
|
+
return async (event, link) => {
|
|
111
|
+
// Prevent default electron link handling so Alt+Click mode works normally
|
|
112
|
+
event === null || event === void 0 ? void 0 : event.preventDefault();
|
|
113
|
+
// Require correct modifier on click
|
|
114
|
+
if (event && !this._isLinkActivationModifierDown(event)) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
// Just call the handler if there is no before listener
|
|
118
|
+
handler(event, link);
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
get _localLinkRegex() {
|
|
122
|
+
const baseLocalLinkClause = this._client.os === ide_core_common_1.OperatingSystem.Windows ? validated_local_link_provider_1.winLocalLinkClause : validated_local_link_provider_1.unixLocalLinkClause;
|
|
123
|
+
// Append line and column number regex
|
|
124
|
+
return new RegExp(`${baseLocalLinkClause}(${validated_local_link_provider_1.lineAndColumnClause})`);
|
|
125
|
+
}
|
|
126
|
+
async _handleLocalLink(link) {
|
|
127
|
+
// TODO: This gets resolved again but doesn't need to as it's already validated
|
|
128
|
+
const resolvedLink = await this._resolvePath(link);
|
|
129
|
+
if (!resolvedLink) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const lineColumnInfo = this.extractLineColumnInfo(link);
|
|
133
|
+
const range = {
|
|
134
|
+
startLineNumber: lineColumnInfo.lineNumber,
|
|
135
|
+
endLineNumber: lineColumnInfo.lineNumber,
|
|
136
|
+
startColumn: lineColumnInfo.columnNumber,
|
|
137
|
+
endColumn: lineColumnInfo.columnNumber,
|
|
138
|
+
};
|
|
139
|
+
await this._editorService.open(resolvedLink.uri, { range });
|
|
140
|
+
}
|
|
141
|
+
_handleHypertextLink(url) {
|
|
142
|
+
this._openerService.open(url);
|
|
143
|
+
}
|
|
144
|
+
async _handleProtocolLink(link) {
|
|
145
|
+
// Check if it's a file:/// link, hand off to local link handler so to open an editor and
|
|
146
|
+
// respect line/col attachment
|
|
147
|
+
const uri = ide_core_common_1.URI.parse(link);
|
|
148
|
+
if (uri.scheme === ide_core_common_1.Schemes.file) {
|
|
149
|
+
// Just using fsPath here is unsafe: https://github.com/microsoft/vscode/issues/109076
|
|
150
|
+
// fsPath 是基于当前环境判断 sep 的,连接远程服务时,如果当前系统为 Windows,
|
|
151
|
+
// 而 uri 来自远程 Linux,则会出现生成的链接 sep 不正确,导致打开文件失败。
|
|
152
|
+
const fsPath = ide_core_common_1.FileUri.fsPath(uri);
|
|
153
|
+
this._handleLocalLink(this._client.os !== ide_core_common_1.OperatingSystem.Windows && ide_core_common_1.isWindows ? fsPath.replace(/\\/g, posix.sep) : fsPath);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
// Open as a web link if it's not a file
|
|
157
|
+
this._handleHypertextLink(link);
|
|
158
|
+
}
|
|
159
|
+
_isLinkActivationModifierDown(event) {
|
|
160
|
+
return ide_core_common_1.isOSX ? event.metaKey : event.ctrlKey;
|
|
161
|
+
}
|
|
162
|
+
get osPath() {
|
|
163
|
+
if (this._client.os === ide_core_common_1.OperatingSystem.Windows) {
|
|
164
|
+
return win32;
|
|
165
|
+
}
|
|
166
|
+
return posix;
|
|
167
|
+
}
|
|
168
|
+
_getLinkHoverString(uri, label) {
|
|
169
|
+
const multiCursorModifier = this.preferenceService.get('editor.multiCursorModifier');
|
|
170
|
+
let clickLabel = '';
|
|
171
|
+
if (multiCursorModifier === 'ctrlCmd') {
|
|
172
|
+
if (ide_core_common_1.isMacintosh) {
|
|
173
|
+
clickLabel = (0, ide_core_common_1.localize)('terminalLinkHandler.followLinkAlt.mac', 'option + click');
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
clickLabel = (0, ide_core_common_1.localize)('terminalLinkHandler.followLinkAlt', 'alt + click');
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
if (ide_core_common_1.isMacintosh) {
|
|
181
|
+
clickLabel = (0, ide_core_common_1.localize)('terminalLinkHandler.followLinkCmd', 'cmd + click');
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
clickLabel = (0, ide_core_common_1.localize)('terminalLinkHandler.followLinkCtrl', 'ctrl + click');
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const fallbackLabel = (0, ide_core_common_1.localize)('followLink', 'Follow link');
|
|
188
|
+
label = label || fallbackLabel;
|
|
189
|
+
return `${label} (${clickLabel})`;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* 获取用户目录
|
|
193
|
+
*/
|
|
194
|
+
async _getUserHomeDir() {
|
|
195
|
+
const homeDirStat = await this._fileSystem.getCurrentUserHome();
|
|
196
|
+
if (!homeDirStat) {
|
|
197
|
+
throw new Error('Unable to get user home directory');
|
|
198
|
+
}
|
|
199
|
+
const homeDirPath = await this._fileSystem.getFsPath(homeDirStat.uri);
|
|
200
|
+
return homeDirPath;
|
|
201
|
+
}
|
|
202
|
+
_getUserHomeDirOnce() {
|
|
203
|
+
if (!this._getHomeDirPromise) {
|
|
204
|
+
this._getHomeDirPromise = this._getUserHomeDir();
|
|
205
|
+
}
|
|
206
|
+
return this._getHomeDirPromise;
|
|
207
|
+
}
|
|
208
|
+
async _preprocessPath(link) {
|
|
209
|
+
if (link.charAt(0) === '~') {
|
|
210
|
+
// Resolve ~ -> userHome
|
|
211
|
+
const userHome = await this._getUserHomeDirOnce();
|
|
212
|
+
if (!userHome) {
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
link = this.osPath.join(userHome, link.substring(1));
|
|
216
|
+
}
|
|
217
|
+
else if (link.charAt(0) !== '/' && link.charAt(0) !== '~') {
|
|
218
|
+
const cwd = await this.getTerminalCwd();
|
|
219
|
+
// Resolve workspace path . | .. | <relative_path> -> <path>/. | <path>/.. | <path>/<relative_path>
|
|
220
|
+
if (this._client.os === ide_core_common_1.OperatingSystem.Windows) {
|
|
221
|
+
if (!link.match('^' + validated_local_link_provider_1.winDrivePrefix) && !link.startsWith('\\\\?\\')) {
|
|
222
|
+
if (!cwd) {
|
|
223
|
+
// Abort if no workspace is open
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
link = this.osPath.join(cwd, link);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
// Remove \\?\ from paths so that they share the same underlying
|
|
230
|
+
// uri and don't open multiple tabs for the same file
|
|
231
|
+
link = link.replace(/^\\\\\?\\/, '');
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
if (!cwd) {
|
|
236
|
+
// Abort if no workspace is open
|
|
237
|
+
return null;
|
|
238
|
+
}
|
|
239
|
+
link = this.osPath.join(cwd, link);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
link = this.osPath.normalize(link);
|
|
243
|
+
return link;
|
|
244
|
+
}
|
|
245
|
+
async _resolvePath(link) {
|
|
246
|
+
const preprocessedLink = await this._preprocessPath(link);
|
|
247
|
+
if (!preprocessedLink) {
|
|
248
|
+
return undefined;
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
const uri = ide_core_common_1.URI.file(preprocessedLink);
|
|
252
|
+
const stat = await this._fileService.getFileStat(uri.toString());
|
|
253
|
+
if (stat) {
|
|
254
|
+
return { uri, isDirectory: stat.isDirectory };
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
catch (_e) {
|
|
258
|
+
// Errors in parsing the path
|
|
259
|
+
return undefined;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Returns line and column number of URl if that is present.
|
|
264
|
+
*
|
|
265
|
+
* @param link Url link which may contain line and column number.
|
|
266
|
+
*/
|
|
267
|
+
extractLineColumnInfo(link) {
|
|
268
|
+
const matches = this._localLinkRegex.exec(link);
|
|
269
|
+
const lineColumnInfo = {
|
|
270
|
+
lineNumber: 1,
|
|
271
|
+
columnNumber: 1,
|
|
272
|
+
};
|
|
273
|
+
if (!matches) {
|
|
274
|
+
return lineColumnInfo;
|
|
275
|
+
}
|
|
276
|
+
const lineAndColumnMatchIndex = this._client.os === ide_core_common_1.OperatingSystem.Windows ? validated_local_link_provider_1.winLineAndColumnMatchIndex : validated_local_link_provider_1.unixLineAndColumnMatchIndex;
|
|
277
|
+
for (let i = 0; i < validated_local_link_provider_1.lineAndColumnClause.length; i++) {
|
|
278
|
+
const lineMatchIndex = lineAndColumnMatchIndex + validated_local_link_provider_1.lineAndColumnClauseGroupCount * i;
|
|
279
|
+
const rowNumber = matches[lineMatchIndex];
|
|
280
|
+
if (rowNumber) {
|
|
281
|
+
lineColumnInfo['lineNumber'] = parseInt(rowNumber, 10);
|
|
282
|
+
// Check if column number exists
|
|
283
|
+
const columnNumber = matches[lineMatchIndex + 2];
|
|
284
|
+
if (columnNumber) {
|
|
285
|
+
lineColumnInfo['columnNumber'] = parseInt(columnNumber, 10);
|
|
286
|
+
}
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return lineColumnInfo;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Returns url from link as link may contain line and column information.
|
|
294
|
+
*
|
|
295
|
+
* @param link url link which may contain line and column number.
|
|
296
|
+
*/
|
|
297
|
+
extractLinkUrl(link) {
|
|
298
|
+
const matches = this._localLinkRegex.exec(link);
|
|
299
|
+
if (!matches) {
|
|
300
|
+
return null;
|
|
301
|
+
}
|
|
302
|
+
return matches[1];
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
exports.TerminalLinkManager = TerminalLinkManager;
|
|
306
|
+
tslib_1.__decorate([
|
|
307
|
+
(0, di_1.Autowired)(di_1.INJECTOR_TOKEN),
|
|
308
|
+
tslib_1.__metadata("design:type", di_1.Injector)
|
|
309
|
+
], TerminalLinkManager.prototype, "injector", void 0);
|
|
310
|
+
tslib_1.__decorate([
|
|
311
|
+
(0, di_1.Autowired)(common_2.ITerminalService),
|
|
312
|
+
tslib_1.__metadata("design:type", Object)
|
|
313
|
+
], TerminalLinkManager.prototype, "terminalService", void 0);
|
|
314
|
+
tslib_1.__decorate([
|
|
315
|
+
(0, di_1.Autowired)(),
|
|
316
|
+
tslib_1.__metadata("design:type", common_1.WorkbenchEditorService)
|
|
317
|
+
], TerminalLinkManager.prototype, "_editorService", void 0);
|
|
318
|
+
tslib_1.__decorate([
|
|
319
|
+
(0, di_1.Autowired)(ide_core_browser_1.IOpenerService),
|
|
320
|
+
tslib_1.__metadata("design:type", Object)
|
|
321
|
+
], TerminalLinkManager.prototype, "_openerService", void 0);
|
|
322
|
+
tslib_1.__decorate([
|
|
323
|
+
(0, di_1.Autowired)(ide_file_service_1.IFileServiceClient),
|
|
324
|
+
tslib_1.__metadata("design:type", Object)
|
|
325
|
+
], TerminalLinkManager.prototype, "_fileService", void 0);
|
|
326
|
+
tslib_1.__decorate([
|
|
327
|
+
(0, di_1.Autowired)(ide_file_service_1.IFileServiceClient),
|
|
328
|
+
tslib_1.__metadata("design:type", Object)
|
|
329
|
+
], TerminalLinkManager.prototype, "_fileSystem", void 0);
|
|
330
|
+
tslib_1.__decorate([
|
|
331
|
+
(0, di_1.Autowired)(ide_core_browser_1.PreferenceService),
|
|
332
|
+
tslib_1.__metadata("design:type", Object)
|
|
333
|
+
], TerminalLinkManager.prototype, "preferenceService", void 0);
|
|
334
|
+
tslib_1.__decorate([
|
|
335
|
+
(0, di_1.Autowired)(common_2.ITerminalHoverManagerService),
|
|
336
|
+
tslib_1.__metadata("design:type", Object)
|
|
337
|
+
], TerminalLinkManager.prototype, "_hoverManager", void 0);
|
|
338
|
+
exports.TerminalLinkManager = TerminalLinkManager = tslib_1.__decorate([
|
|
339
|
+
(0, di_1.Injectable)({ multiple: true }),
|
|
340
|
+
tslib_1.__metadata("design:paramtypes", [xterm_1.Terminal, terminal_client_1.TerminalClient])
|
|
341
|
+
], TerminalLinkManager);
|
|
342
|
+
//# sourceMappingURL=link-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-manager.js","sourceRoot":"","sources":["../../../src/browser/links/link-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Disposable, Event, IDisposable } from '@opensumi/ide-core-common';
|
|
2
|
+
import type { IBufferRange, ILink, ILinkDecorations, IViewportRange, Terminal } from '@xterm/xterm';
|
|
3
|
+
export declare const OPEN_FILE_LABEL: string;
|
|
4
|
+
export declare const FOLDER_IN_WORKSPACE_LABEL: string;
|
|
5
|
+
export declare const FOLDER_NOT_IN_WORKSPACE_LABEL: string;
|
|
6
|
+
export declare class TerminalLink extends Disposable implements ILink {
|
|
7
|
+
private readonly _xterm;
|
|
8
|
+
readonly range: IBufferRange;
|
|
9
|
+
readonly text: string;
|
|
10
|
+
private readonly _viewportY;
|
|
11
|
+
private readonly _activateCallback;
|
|
12
|
+
private readonly _tooltipCallback;
|
|
13
|
+
private readonly _isHighConfidenceLink;
|
|
14
|
+
readonly label: string | undefined;
|
|
15
|
+
decorations: ILinkDecorations;
|
|
16
|
+
private readonly preferenceService;
|
|
17
|
+
private _tooltipScheduler;
|
|
18
|
+
private _hoverListeners;
|
|
19
|
+
private _tooltipDisposable;
|
|
20
|
+
private readonly _onInvalidated;
|
|
21
|
+
get onInvalidated(): Event<void>;
|
|
22
|
+
constructor(_xterm: Terminal, range: IBufferRange, text: string, _viewportY: number, _activateCallback: (event: MouseEvent | undefined, uri: string) => void, _tooltipCallback: (link: TerminalLink, viewportRange: IViewportRange, modifierDownCallback?: () => void, modifierUpCallback?: () => void) => IDisposable, _isHighConfidenceLink: boolean, label: string | undefined);
|
|
23
|
+
dispose(): void;
|
|
24
|
+
activate(event: MouseEvent | undefined, text: string): void;
|
|
25
|
+
hover(event: MouseEvent, text: string): void;
|
|
26
|
+
leave(): void;
|
|
27
|
+
private _enableDecorations;
|
|
28
|
+
private _disableDecorations;
|
|
29
|
+
private _isModifierDown;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/browser/links/link.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EAGV,KAAK,EACL,WAAW,EAIZ,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKpG,eAAO,MAAM,eAAe,QAAuD,CAAC;AACpF,eAAO,MAAM,yBAAyB,QAA+D,CAAC;AACtG,eAAO,MAAM,6BAA6B,QAA+D,CAAC;AAE1G,qBACa,YAAa,SAAQ,UAAW,YAAW,KAAK;IAgBzD,OAAO,CAAC,QAAQ,CAAC,MAAM;aACP,KAAK,EAAE,YAAY;aACnB,IAAI,EAAE,MAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAMjC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IA3BpC,WAAW,EAAE,gBAAgB,CAAC;IAG9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAEtD,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,kBAAkB,CAA0B;IAEpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,IAAW,aAAa,IAAI,KAAK,CAAC,IAAI,CAAC,CAEtC;gBAGkB,MAAM,EAAE,QAAQ,EACjB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,EACvE,gBAAgB,EAAE,CACjC,IAAI,EAAE,YAAY,EAClB,aAAa,EAAE,cAAc,EAC7B,oBAAoB,CAAC,EAAE,MAAM,IAAI,EACjC,kBAAkB,CAAC,EAAE,MAAM,IAAI,KAC5B,WAAW,EACC,qBAAqB,EAAE,OAAO,EACtC,KAAK,EAAE,MAAM,GAAG,SAAS;IASpC,OAAO,IAAI,IAAI;IAUf,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3D,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAoE5C,KAAK,IAAI,IAAI;IASb,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,eAAe;CAGxB"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TerminalLink = exports.FOLDER_NOT_IN_WORKSPACE_LABEL = exports.FOLDER_IN_WORKSPACE_LABEL = exports.OPEN_FILE_LABEL = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const di_1 = require("@opensumi/di");
|
|
6
|
+
const ide_core_browser_1 = require("@opensumi/ide-core-browser");
|
|
7
|
+
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
8
|
+
const helpers_1 = require("./helpers");
|
|
9
|
+
// default delay time (ms) for showing tooltip when mouse is over a link
|
|
10
|
+
const DEFAULT_HOVER_DELAY = 500;
|
|
11
|
+
exports.OPEN_FILE_LABEL = (0, ide_core_common_1.localize)('terminal.openFile', 'Open file in editor');
|
|
12
|
+
exports.FOLDER_IN_WORKSPACE_LABEL = (0, ide_core_common_1.localize)('terminal.focusFolder', 'Focus folder in explorer');
|
|
13
|
+
exports.FOLDER_NOT_IN_WORKSPACE_LABEL = (0, ide_core_common_1.localize)('terminal.openFolder', 'Open folder in new window');
|
|
14
|
+
let TerminalLink = class TerminalLink extends ide_core_common_1.Disposable {
|
|
15
|
+
get onInvalidated() {
|
|
16
|
+
return this._onInvalidated.event;
|
|
17
|
+
}
|
|
18
|
+
constructor(_xterm, range, text, _viewportY, _activateCallback, _tooltipCallback, _isHighConfidenceLink, label) {
|
|
19
|
+
super();
|
|
20
|
+
this._xterm = _xterm;
|
|
21
|
+
this.range = range;
|
|
22
|
+
this.text = text;
|
|
23
|
+
this._viewportY = _viewportY;
|
|
24
|
+
this._activateCallback = _activateCallback;
|
|
25
|
+
this._tooltipCallback = _tooltipCallback;
|
|
26
|
+
this._isHighConfidenceLink = _isHighConfidenceLink;
|
|
27
|
+
this.label = label;
|
|
28
|
+
this._onInvalidated = new ide_core_common_1.Emitter();
|
|
29
|
+
this.decorations = {
|
|
30
|
+
pointerCursor: false,
|
|
31
|
+
underline: this._isHighConfidenceLink,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
dispose() {
|
|
35
|
+
var _a, _b, _c;
|
|
36
|
+
super.dispose();
|
|
37
|
+
(_a = this._hoverListeners) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
38
|
+
this._hoverListeners = undefined;
|
|
39
|
+
(_b = this._tooltipScheduler) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
40
|
+
this._tooltipScheduler = undefined;
|
|
41
|
+
(_c = this._tooltipDisposable) === null || _c === void 0 ? void 0 : _c.dispose();
|
|
42
|
+
this._tooltipDisposable = undefined;
|
|
43
|
+
}
|
|
44
|
+
activate(event, text) {
|
|
45
|
+
this._activateCallback(event, text);
|
|
46
|
+
}
|
|
47
|
+
hover(event, text) {
|
|
48
|
+
// Listen for modifier before handing it off to the hover to handle so it gets disposed correctly
|
|
49
|
+
this._hoverListeners = new ide_core_common_1.DisposableCollection();
|
|
50
|
+
this._hoverListeners.push((0, ide_core_browser_1.addDisposableListener)(document, 'keydown', (e) => {
|
|
51
|
+
if (!e.repeat && this._isModifierDown(e)) {
|
|
52
|
+
this._enableDecorations();
|
|
53
|
+
}
|
|
54
|
+
}));
|
|
55
|
+
this._hoverListeners.push((0, ide_core_browser_1.addDisposableListener)(document, 'keyup', (e) => {
|
|
56
|
+
if (!e.repeat && !this._isModifierDown(e)) {
|
|
57
|
+
this._disableDecorations();
|
|
58
|
+
}
|
|
59
|
+
}));
|
|
60
|
+
// Listen for when the terminal renders on the same line as the link
|
|
61
|
+
this._hoverListeners.push(this._xterm.onRender((e) => {
|
|
62
|
+
const viewportRangeY = this.range.start.y - this._viewportY;
|
|
63
|
+
if (viewportRangeY >= e.start && viewportRangeY <= e.end) {
|
|
64
|
+
this._onInvalidated.fire();
|
|
65
|
+
}
|
|
66
|
+
}));
|
|
67
|
+
// Only show the tooltip and highlight for high confidence links (not word/search workspace
|
|
68
|
+
// links). Feedback was that this makes using the terminal overly noisy.
|
|
69
|
+
if (this._isHighConfidenceLink) {
|
|
70
|
+
this._tooltipScheduler = new ide_core_common_1.RunOnceScheduler(() => {
|
|
71
|
+
var _a;
|
|
72
|
+
this._tooltipDisposable = this._tooltipCallback(this, (0, helpers_1.convertBufferRangeToViewport)(this.range, this._viewportY), this._isHighConfidenceLink ? () => this._enableDecorations() : undefined, this._isHighConfidenceLink ? () => this._disableDecorations() : undefined);
|
|
73
|
+
// Clear out scheduler until next hover event
|
|
74
|
+
(_a = this._tooltipScheduler) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
75
|
+
this._tooltipScheduler = undefined;
|
|
76
|
+
}, this.preferenceService.get('editor.hover.delay') || DEFAULT_HOVER_DELAY);
|
|
77
|
+
this._tooltipScheduler.schedule();
|
|
78
|
+
}
|
|
79
|
+
const origin = { x: event.pageX, y: event.pageY };
|
|
80
|
+
this._hoverListeners.push((0, ide_core_browser_1.addDisposableListener)(document, 'mousemove', (e) => {
|
|
81
|
+
var _a;
|
|
82
|
+
// Update decorations
|
|
83
|
+
if (this._isModifierDown(e)) {
|
|
84
|
+
this._enableDecorations();
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
this._disableDecorations();
|
|
88
|
+
}
|
|
89
|
+
// Reset the scheduler if the mouse moves too much
|
|
90
|
+
if (Math.abs(e.pageX - origin.x) > window.devicePixelRatio * 2 ||
|
|
91
|
+
Math.abs(e.pageY - origin.y) > window.devicePixelRatio * 2) {
|
|
92
|
+
origin.x = e.pageX;
|
|
93
|
+
origin.y = e.pageY;
|
|
94
|
+
(_a = this._tooltipScheduler) === null || _a === void 0 ? void 0 : _a.schedule();
|
|
95
|
+
}
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
leave() {
|
|
99
|
+
var _a, _b, _c;
|
|
100
|
+
(_a = this._hoverListeners) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
101
|
+
this._hoverListeners = undefined;
|
|
102
|
+
(_b = this._tooltipScheduler) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
103
|
+
this._tooltipScheduler = undefined;
|
|
104
|
+
(_c = this._tooltipDisposable) === null || _c === void 0 ? void 0 : _c.dispose();
|
|
105
|
+
this._tooltipDisposable = undefined;
|
|
106
|
+
}
|
|
107
|
+
_enableDecorations() {
|
|
108
|
+
if (!this.decorations.pointerCursor) {
|
|
109
|
+
this.decorations.pointerCursor = true;
|
|
110
|
+
}
|
|
111
|
+
if (!this.decorations.underline) {
|
|
112
|
+
this.decorations.underline = true;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
_disableDecorations() {
|
|
116
|
+
if (this.decorations.pointerCursor) {
|
|
117
|
+
this.decorations.pointerCursor = false;
|
|
118
|
+
}
|
|
119
|
+
if (this.decorations.underline !== this._isHighConfidenceLink) {
|
|
120
|
+
this.decorations.underline = this._isHighConfidenceLink;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
_isModifierDown(event) {
|
|
124
|
+
return ide_core_common_1.isOSX ? event.metaKey : event.ctrlKey;
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
exports.TerminalLink = TerminalLink;
|
|
128
|
+
tslib_1.__decorate([
|
|
129
|
+
(0, di_1.Autowired)(ide_core_browser_1.PreferenceService),
|
|
130
|
+
tslib_1.__metadata("design:type", Object)
|
|
131
|
+
], TerminalLink.prototype, "preferenceService", void 0);
|
|
132
|
+
exports.TerminalLink = TerminalLink = tslib_1.__decorate([
|
|
133
|
+
(0, di_1.Injectable)({ multiple: true }),
|
|
134
|
+
tslib_1.__metadata("design:paramtypes", [Function, Object, String, Number, Function, Function, Boolean, Object])
|
|
135
|
+
], TerminalLink);
|
|
136
|
+
//# sourceMappingURL=link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/browser/links/link.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IDisposable } from '@opensumi/ide-core-common';
|
|
2
|
+
import { TerminalBaseLinkProvider } from './base';
|
|
3
|
+
import { TerminalLink } from './link';
|
|
4
|
+
import type { IViewportRange, Terminal } from '@xterm/xterm';
|
|
5
|
+
export declare class TerminalProtocolLinkProvider extends TerminalBaseLinkProvider {
|
|
6
|
+
private readonly _xterm;
|
|
7
|
+
private readonly _activateCallback;
|
|
8
|
+
private readonly _tooltipCallback;
|
|
9
|
+
private _linkComputerTarget;
|
|
10
|
+
private readonly injector;
|
|
11
|
+
constructor(_xterm: Terminal, _activateCallback: (event: MouseEvent | undefined, uri: string) => void, _tooltipCallback: (link: TerminalLink, viewportRange: IViewportRange, modifierDownCallback?: () => void, modifierUpCallback?: () => void) => IDisposable);
|
|
12
|
+
protected _provideLinks(y: number): TerminalLink[];
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=protocol-link-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol-link-provider.d.ts","sourceRoot":"","sources":["../../../src/browser/links/protocol-link-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAe,cAAc,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE1E,qBACa,4BAA6B,SAAQ,wBAAwB;IAOtE,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IARnC,OAAO,CAAC,mBAAmB,CAAkC;IAG7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAGjB,MAAM,EAAE,QAAQ,EAChB,iBAAiB,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,EACvE,gBAAgB,EAAE,CACjC,IAAI,EAAE,YAAY,EAClB,aAAa,EAAE,cAAc,EAC7B,oBAAoB,CAAC,EAAE,MAAM,IAAI,EACjC,kBAAkB,CAAC,EAAE,MAAM,IAAI,KAC5B,WAAW;IAKlB,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;CAmCnD"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TerminalProtocolLinkProvider = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const di_1 = require("@opensumi/di");
|
|
6
|
+
const common_1 = require("../../common");
|
|
7
|
+
const base_1 = require("./base");
|
|
8
|
+
const helpers_1 = require("./helpers");
|
|
9
|
+
const link_1 = require("./link");
|
|
10
|
+
let TerminalProtocolLinkProvider = class TerminalProtocolLinkProvider extends base_1.TerminalBaseLinkProvider {
|
|
11
|
+
constructor(_xterm, _activateCallback, _tooltipCallback) {
|
|
12
|
+
super();
|
|
13
|
+
this._xterm = _xterm;
|
|
14
|
+
this._activateCallback = _activateCallback;
|
|
15
|
+
this._tooltipCallback = _tooltipCallback;
|
|
16
|
+
}
|
|
17
|
+
_provideLinks(y) {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
let startLine = y - 1;
|
|
20
|
+
let endLine = startLine;
|
|
21
|
+
const lines = [this._xterm.buffer.active.getLine(startLine)];
|
|
22
|
+
while (startLine >= 0 && ((_a = this._xterm.buffer.active.getLine(startLine)) === null || _a === void 0 ? void 0 : _a.isWrapped)) {
|
|
23
|
+
lines.unshift(this._xterm.buffer.active.getLine(startLine - 1));
|
|
24
|
+
startLine--;
|
|
25
|
+
}
|
|
26
|
+
while (endLine < this._xterm.buffer.active.length && ((_b = this._xterm.buffer.active.getLine(endLine + 1)) === null || _b === void 0 ? void 0 : _b.isWrapped)) {
|
|
27
|
+
lines.push(this._xterm.buffer.active.getLine(endLine + 1));
|
|
28
|
+
endLine++;
|
|
29
|
+
}
|
|
30
|
+
this._linkComputerTarget = new TerminalLinkAdapter(this._xterm, startLine, endLine);
|
|
31
|
+
const links = common_1.LinkComputer.computeLinks(this._linkComputerTarget);
|
|
32
|
+
return links.map((link) => {
|
|
33
|
+
var _a;
|
|
34
|
+
const range = (0, helpers_1.convertLinkRangeToBuffer)(lines, this._xterm.cols, link.range, startLine);
|
|
35
|
+
// Check if the link if within the mouse position
|
|
36
|
+
return this.injector.get(link_1.TerminalLink, [
|
|
37
|
+
this._xterm,
|
|
38
|
+
range,
|
|
39
|
+
((_a = link.url) === null || _a === void 0 ? void 0 : _a.toString()) || '',
|
|
40
|
+
this._xterm.buffer.active.viewportY,
|
|
41
|
+
this._activateCallback,
|
|
42
|
+
this._tooltipCallback,
|
|
43
|
+
true,
|
|
44
|
+
undefined,
|
|
45
|
+
]);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
exports.TerminalProtocolLinkProvider = TerminalProtocolLinkProvider;
|
|
50
|
+
tslib_1.__decorate([
|
|
51
|
+
(0, di_1.Autowired)(di_1.INJECTOR_TOKEN),
|
|
52
|
+
tslib_1.__metadata("design:type", di_1.Injector)
|
|
53
|
+
], TerminalProtocolLinkProvider.prototype, "injector", void 0);
|
|
54
|
+
exports.TerminalProtocolLinkProvider = TerminalProtocolLinkProvider = tslib_1.__decorate([
|
|
55
|
+
(0, di_1.Injectable)({ multiple: true }),
|
|
56
|
+
tslib_1.__metadata("design:paramtypes", [Function, Function, Function])
|
|
57
|
+
], TerminalProtocolLinkProvider);
|
|
58
|
+
class TerminalLinkAdapter {
|
|
59
|
+
constructor(_xterm, _lineStart, _lineEnd) {
|
|
60
|
+
this._xterm = _xterm;
|
|
61
|
+
this._lineStart = _lineStart;
|
|
62
|
+
this._lineEnd = _lineEnd;
|
|
63
|
+
}
|
|
64
|
+
getLineCount() {
|
|
65
|
+
return 1;
|
|
66
|
+
}
|
|
67
|
+
getLineContent() {
|
|
68
|
+
return (0, helpers_1.getXtermLineContent)(this._xterm.buffer.active, this._lineStart, this._lineEnd, this._xterm.cols);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=protocol-link-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol-link-provider.js","sourceRoot":"","sources":["../../../src/browser/links/protocol-link-provider.ts"],"names":[],"mappings":"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"}
|