@opensumi/ide-terminal-next 3.8.3-next-1747648050.0 → 3.9.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/lib/browser/links/link-manager.d.ts +2 -0
- package/lib/browser/links/link-manager.d.ts.map +1 -1
- package/lib/browser/links/link-manager.js +18 -22
- package/lib/browser/links/link-manager.js.map +1 -1
- package/lib/browser/links/link.d.ts +14 -1
- package/lib/browser/links/link.d.ts.map +1 -1
- package/lib/browser/links/link.js +4 -3
- package/lib/browser/links/link.js.map +1 -1
- package/lib/browser/links/validated-local-link-provider.d.ts +2 -12
- package/lib/browser/links/validated-local-link-provider.d.ts.map +1 -1
- package/lib/browser/links/validated-local-link-provider.js +22 -57
- package/lib/browser/links/validated-local-link-provider.js.map +1 -1
- package/lib/common/terminal-link.d.ts +28 -0
- package/lib/common/terminal-link.d.ts.map +1 -0
- package/lib/common/terminal-link.js +164 -0
- package/lib/common/terminal-link.js.map +1 -0
- package/package.json +18 -18
- package/src/browser/links/link-manager.ts +26 -35
- package/src/browser/links/link.ts +19 -2
- package/src/browser/links/validated-local-link-provider.ts +36 -64
- package/src/common/terminal-link.ts +183 -0
|
@@ -74,6 +74,7 @@ export declare class TerminalLinkManager extends Disposable {
|
|
|
74
74
|
private _getUserHomeDirOnce;
|
|
75
75
|
protected _preprocessPath(link: string): Promise<string | null>;
|
|
76
76
|
private _resolvePath;
|
|
77
|
+
private _extractLineInfoFromMatch;
|
|
77
78
|
/**
|
|
78
79
|
* Returns line and column number of URl if that is present.
|
|
79
80
|
*
|
|
@@ -88,6 +89,7 @@ export declare class TerminalLinkManager extends Disposable {
|
|
|
88
89
|
extractLinkUrl(link: string): string | null;
|
|
89
90
|
}
|
|
90
91
|
export interface LineColumnInfo {
|
|
92
|
+
filePath: string;
|
|
91
93
|
lineNumber: number;
|
|
92
94
|
columnNumber: number;
|
|
93
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-manager.d.ts","sourceRoot":"","sources":["../../../src/browser/links/link-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIvE,OAAO,EACL,UAAU,EAGV,WAAW,EASZ,MAAM,2BAA2B,CAAC;AAInC,OAAO,EACL,eAAe,EACf,6BAA6B,EAG9B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"link-manager.d.ts","sourceRoot":"","sources":["../../../src/browser/links/link-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
|
9
9
|
const common_1 = require("@opensumi/ide-editor/lib/common");
|
|
10
10
|
const ide_file_service_1 = require("@opensumi/ide-file-service");
|
|
11
11
|
const common_2 = require("../../common");
|
|
12
|
+
const terminal_link_1 = require("../../common/terminal-link");
|
|
12
13
|
const terminal_client_1 = require("../terminal.client");
|
|
13
14
|
const external_link_provider_adapter_1 = require("./external-link-provider-adapter");
|
|
14
15
|
const protocol_link_provider_1 = require("./protocol-link-provider");
|
|
@@ -123,24 +124,23 @@ let TerminalLinkManager = class TerminalLinkManager extends ide_core_common_1.Di
|
|
|
123
124
|
};
|
|
124
125
|
}
|
|
125
126
|
get _localLinkRegex() {
|
|
126
|
-
const baseLocalLinkClause = this._client.os === ide_core_common_1.OperatingSystem.Windows ?
|
|
127
|
+
const baseLocalLinkClause = this._client.os === ide_core_common_1.OperatingSystem.Windows ? terminal_link_1.winLocalLinkClause : terminal_link_1.unixLocalLinkClause;
|
|
127
128
|
// Append line and column number regex
|
|
128
|
-
return new RegExp(`${baseLocalLinkClause}(${
|
|
129
|
+
return new RegExp(`${baseLocalLinkClause}(${(0, terminal_link_1.getLineAndColumnClause)()})`);
|
|
129
130
|
}
|
|
130
131
|
async _handleLocalLink(link) {
|
|
131
|
-
|
|
132
|
-
const resolvedLink = await this._resolvePath(
|
|
132
|
+
const lineColumnInfo = this.extractLineColumnInfo(link);
|
|
133
|
+
const resolvedLink = await this._resolvePath(lineColumnInfo.filePath);
|
|
133
134
|
if (!resolvedLink) {
|
|
134
135
|
return;
|
|
135
136
|
}
|
|
136
|
-
const lineColumnInfo = this.extractLineColumnInfo(link);
|
|
137
137
|
const range = {
|
|
138
138
|
startLineNumber: lineColumnInfo.lineNumber,
|
|
139
139
|
endLineNumber: lineColumnInfo.lineNumber,
|
|
140
140
|
startColumn: lineColumnInfo.columnNumber,
|
|
141
141
|
endColumn: lineColumnInfo.columnNumber,
|
|
142
142
|
};
|
|
143
|
-
await this._editorService.open(resolvedLink.uri, { range });
|
|
143
|
+
await this._editorService.open(resolvedLink.uri, { range, focus: true });
|
|
144
144
|
}
|
|
145
145
|
_handleHypertextLink(url) {
|
|
146
146
|
this._openerService.open(url);
|
|
@@ -222,7 +222,7 @@ let TerminalLinkManager = class TerminalLinkManager extends ide_core_common_1.Di
|
|
|
222
222
|
const cwd = await this.getTerminalCwd();
|
|
223
223
|
// Resolve workspace path . | .. | <relative_path> -> <path>/. | <path>/.. | <path>/<relative_path>
|
|
224
224
|
if (this._client.os === ide_core_common_1.OperatingSystem.Windows) {
|
|
225
|
-
if (!link.match('^' +
|
|
225
|
+
if (!link.match('^' + terminal_link_1.winDrivePrefix) && !link.startsWith('\\\\?\\')) {
|
|
226
226
|
if (!cwd) {
|
|
227
227
|
// Abort if no workspace is open
|
|
228
228
|
return null;
|
|
@@ -263,35 +263,31 @@ let TerminalLinkManager = class TerminalLinkManager extends ide_core_common_1.Di
|
|
|
263
263
|
return undefined;
|
|
264
264
|
}
|
|
265
265
|
}
|
|
266
|
+
_extractLineInfoFromMatch(match) {
|
|
267
|
+
return (0, terminal_link_1.extractLineInfoFromMatch)(match);
|
|
268
|
+
}
|
|
266
269
|
/**
|
|
267
270
|
* Returns line and column number of URl if that is present.
|
|
268
271
|
*
|
|
269
272
|
* @param link Url link which may contain line and column number.
|
|
270
273
|
*/
|
|
271
274
|
extractLineColumnInfo(link) {
|
|
275
|
+
var _a, _b, _c;
|
|
272
276
|
const matches = this._localLinkRegex.exec(link);
|
|
273
277
|
const lineColumnInfo = {
|
|
274
278
|
lineNumber: 1,
|
|
275
279
|
columnNumber: 1,
|
|
280
|
+
filePath: link,
|
|
276
281
|
};
|
|
277
282
|
if (!matches) {
|
|
278
283
|
return lineColumnInfo;
|
|
279
284
|
}
|
|
280
|
-
const
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
// Check if column number exists
|
|
287
|
-
const columnNumber = matches[lineMatchIndex + 2];
|
|
288
|
-
if (columnNumber) {
|
|
289
|
-
lineColumnInfo['columnNumber'] = parseInt(columnNumber, 10);
|
|
290
|
-
}
|
|
291
|
-
break;
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
return lineColumnInfo;
|
|
285
|
+
const lineInfo = this._extractLineInfoFromMatch(matches);
|
|
286
|
+
return {
|
|
287
|
+
filePath: (_a = lineInfo.filePath) !== null && _a !== void 0 ? _a : link,
|
|
288
|
+
lineNumber: (_b = lineInfo.line) !== null && _b !== void 0 ? _b : 1,
|
|
289
|
+
columnNumber: (_c = lineInfo.column) !== null && _c !== void 0 ? _c : 1,
|
|
290
|
+
};
|
|
295
291
|
}
|
|
296
292
|
/**
|
|
297
293
|
* Returns url from link as link may contain line and column information.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-manager.js","sourceRoot":"","sources":["../../../src/browser/links/link-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"link-manager.js","sourceRoot":"","sources":["../../../src/browser/links/link-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export declare class TerminalLink extends Disposable implements ILink {
|
|
|
12
12
|
private readonly _tooltipCallback;
|
|
13
13
|
private readonly _isHighConfidenceLink;
|
|
14
14
|
readonly label: string | undefined;
|
|
15
|
+
private readonly _lineInfo?;
|
|
15
16
|
decorations: ILinkDecorations;
|
|
16
17
|
private readonly preferenceService;
|
|
17
18
|
private _tooltipScheduler;
|
|
@@ -19,7 +20,19 @@ export declare class TerminalLink extends Disposable implements ILink {
|
|
|
19
20
|
private _tooltipDisposable;
|
|
20
21
|
private readonly _onInvalidated;
|
|
21
22
|
get onInvalidated(): Event<void>;
|
|
22
|
-
constructor(_xterm: Terminal, range: IBufferRange, text: string, _viewportY: number, _activateCallback: (event: MouseEvent | undefined, uri: string
|
|
23
|
+
constructor(_xterm: Terminal, range: IBufferRange, text: string, _viewportY: number, _activateCallback: (event: MouseEvent | undefined, uri: string, lineInfo?: {
|
|
24
|
+
filePath?: string;
|
|
25
|
+
line?: number;
|
|
26
|
+
column?: number;
|
|
27
|
+
endLine?: number;
|
|
28
|
+
endColumn?: number;
|
|
29
|
+
}) => void, _tooltipCallback: (link: TerminalLink, viewportRange: IViewportRange, modifierDownCallback?: () => void, modifierUpCallback?: () => void) => IDisposable | undefined, _isHighConfidenceLink: boolean, label: string | undefined, _lineInfo?: {
|
|
30
|
+
filePath?: string;
|
|
31
|
+
line?: number;
|
|
32
|
+
column?: number;
|
|
33
|
+
endLine?: number;
|
|
34
|
+
endColumn?: number;
|
|
35
|
+
} | undefined);
|
|
23
36
|
dispose(): void;
|
|
24
37
|
activate(event: MouseEvent | undefined, text: string): void;
|
|
25
38
|
hover(event: MouseEvent, text: string): void;
|
|
@@ -1 +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;
|
|
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;IAWlC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAMjC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAtC7B,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,CAClC,KAAK,EAAE,UAAU,GAAG,SAAS,EAC7B,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,KACE,IAAI,EACQ,gBAAgB,EAAE,CACjC,IAAI,EAAE,YAAY,EAClB,aAAa,EAAE,cAAc,EAC7B,oBAAoB,CAAC,EAAE,MAAM,IAAI,EACjC,kBAAkB,CAAC,EAAE,MAAM,IAAI,KAC5B,WAAW,GAAG,SAAS,EACX,qBAAqB,EAAE,OAAO,EACtC,KAAK,EAAE,MAAM,GAAG,SAAS,EACjB,SAAS,CAAC,EAAE;QAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,YAAA;IASH,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"}
|
|
@@ -15,7 +15,7 @@ let TerminalLink = class TerminalLink extends ide_core_common_1.Disposable {
|
|
|
15
15
|
get onInvalidated() {
|
|
16
16
|
return this._onInvalidated.event;
|
|
17
17
|
}
|
|
18
|
-
constructor(_xterm, range, text, _viewportY, _activateCallback, _tooltipCallback, _isHighConfidenceLink, label) {
|
|
18
|
+
constructor(_xterm, range, text, _viewportY, _activateCallback, _tooltipCallback, _isHighConfidenceLink, label, _lineInfo) {
|
|
19
19
|
super();
|
|
20
20
|
this._xterm = _xterm;
|
|
21
21
|
this.range = range;
|
|
@@ -25,6 +25,7 @@ let TerminalLink = class TerminalLink extends ide_core_common_1.Disposable {
|
|
|
25
25
|
this._tooltipCallback = _tooltipCallback;
|
|
26
26
|
this._isHighConfidenceLink = _isHighConfidenceLink;
|
|
27
27
|
this.label = label;
|
|
28
|
+
this._lineInfo = _lineInfo;
|
|
28
29
|
this._onInvalidated = new ide_core_common_1.Emitter();
|
|
29
30
|
this.decorations = {
|
|
30
31
|
pointerCursor: false,
|
|
@@ -42,7 +43,7 @@ let TerminalLink = class TerminalLink extends ide_core_common_1.Disposable {
|
|
|
42
43
|
this._tooltipDisposable = undefined;
|
|
43
44
|
}
|
|
44
45
|
activate(event, text) {
|
|
45
|
-
this._activateCallback(event, text);
|
|
46
|
+
this._activateCallback(event, text, this._lineInfo);
|
|
46
47
|
}
|
|
47
48
|
hover(event, text) {
|
|
48
49
|
// Listen for modifier before handing it off to the hover to handle so it gets disposed correctly
|
|
@@ -131,6 +132,6 @@ tslib_1.__decorate([
|
|
|
131
132
|
], TerminalLink.prototype, "preferenceService", void 0);
|
|
132
133
|
exports.TerminalLink = TerminalLink = tslib_1.__decorate([
|
|
133
134
|
(0, di_1.Injectable)({ multiple: true }),
|
|
134
|
-
tslib_1.__metadata("design:paramtypes", [Function, Object, String, Number, Function, Function, Boolean, Object])
|
|
135
|
+
tslib_1.__metadata("design:paramtypes", [Function, Object, String, Number, Function, Function, Boolean, Object, Object])
|
|
135
136
|
], TerminalLink);
|
|
136
137
|
//# sourceMappingURL=link.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/browser/links/link.ts"],"names":[],"mappings":";;;;AAAA,qCAAqD;AACrD,iEAAsF;AACtF,+DASmC;AAEnC,uCAAyD;AAIzD,wEAAwE;AACxE,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEnB,QAAA,eAAe,GAAG,IAAA,0BAAQ,EAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;AACvE,QAAA,yBAAyB,GAAG,IAAA,0BAAQ,EAAC,sBAAsB,EAAE,0BAA0B,CAAC,CAAC;AACzF,QAAA,6BAA6B,GAAG,IAAA,0BAAQ,EAAC,qBAAqB,EAAE,2BAA2B,CAAC,CAAC;AAGnG,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,4BAAU;IAW1C,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IACnC,CAAC;IAED,YACmB,MAAgB,EACjB,KAAmB,EACnB,IAAY,EACX,UAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/browser/links/link.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,17 +5,6 @@ import { TerminalLink } from './link';
|
|
|
5
5
|
import { XtermLinkMatcherHandler } from './link-manager';
|
|
6
6
|
import type { TerminalClient } from '../terminal.client';
|
|
7
7
|
import type { IViewportRange, Terminal } from '@xterm/xterm';
|
|
8
|
-
/** A regex that matches paths in the form /foo, ~/foo, ./foo, ../foo, foo/bar */
|
|
9
|
-
export declare const unixLocalLinkClause: string;
|
|
10
|
-
export declare const winDrivePrefix = "(?:\\\\\\\\\\?\\\\)?[a-zA-Z]:";
|
|
11
|
-
/** A regex that matches paths in the form \\?\c:\foo c:\foo, ~\foo, .\foo, ..\foo, foo\bar */
|
|
12
|
-
export declare const winLocalLinkClause: string;
|
|
13
|
-
/** As xterm reads from DOM, space in that case is nonbreaking char ASCII code - 160,
|
|
14
|
-
replacing space with nonBreakningSpace or space ASCII code - 32. */
|
|
15
|
-
export declare const lineAndColumnClause: string;
|
|
16
|
-
export declare const winLineAndColumnMatchIndex = 12;
|
|
17
|
-
export declare const unixLineAndColumnMatchIndex = 11;
|
|
18
|
-
export declare const lineAndColumnClauseGroupCount = 6;
|
|
19
8
|
export declare class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider {
|
|
20
9
|
private readonly _xterm;
|
|
21
10
|
private readonly _client;
|
|
@@ -33,8 +22,9 @@ export declare class TerminalValidatedLocalLinkProvider extends TerminalBaseLink
|
|
|
33
22
|
isDirectory: boolean;
|
|
34
23
|
} | undefined) => void) => void);
|
|
35
24
|
protected _provideLinks(y: number): Promise<TerminalLink[]>;
|
|
36
|
-
private
|
|
25
|
+
private _extractLineInfoFromMatch;
|
|
37
26
|
protected get _localLinkRegex(): RegExp;
|
|
27
|
+
private detectLocalLink;
|
|
38
28
|
private _handleLocalFolderLink;
|
|
39
29
|
private _isDirectoryInsideWorkspace;
|
|
40
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validated-local-link-provider.d.ts","sourceRoot":"","sources":["../../../src/browser/links/validated-local-link-provider.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,
|
|
1
|
+
{"version":3,"file":"validated-local-link-provider.d.ts","sourceRoot":"","sources":["../../../src/browser/links/validated-local-link-provider.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAA2B,WAAW,EAAmB,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAYvG,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAA6E,YAAY,EAAE,MAAM,QAAQ,CAAC;AACjH,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAe,cAAc,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE1E,qBACa,kCAAmC,SAAQ,wBAAwB;IAiB5E,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAGjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAMjC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IA3BtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IAGpC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;IAGjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAGhD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IAGrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAGnB,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,cAAc,EACvB,qBAAqB,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,EAC5E,gBAAgB,EAAE,CACjC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,KAC3D,uBAAuB,EACX,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,mBAAmB,EAAE,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,KAAK,IAAI,KACvE,IAAI;cAKK,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAqEjE,OAAO,CAAC,yBAAyB;IAIjC,SAAS,KAAK,eAAe,IAAI,MAAM,CAItC;YAEa,eAAe;YA4Ef,sBAAsB;YAatB,2BAA2B;CAS1C"}
|
|
@@ -5,63 +5,17 @@
|
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
6
|
// Some code copied and modified from https://github.com/microsoft/vscode/blob/1.63.2/src/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.ts
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.TerminalValidatedLocalLinkProvider =
|
|
8
|
+
exports.TerminalValidatedLocalLinkProvider = void 0;
|
|
9
9
|
const tslib_1 = require("tslib");
|
|
10
10
|
const di_1 = require("@opensumi/di");
|
|
11
11
|
const config_provider_1 = require("@opensumi/ide-core-browser/lib/react-providers/config-provider");
|
|
12
12
|
const window_1 = require("@opensumi/ide-core-browser/lib/window");
|
|
13
13
|
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
14
14
|
const workspace_interface_1 = require("@opensumi/ide-workspace/lib/common/workspace.interface");
|
|
15
|
+
const terminal_link_1 = require("../../common/terminal-link");
|
|
15
16
|
const base_1 = require("./base");
|
|
16
17
|
const helpers_1 = require("./helpers");
|
|
17
18
|
const link_1 = require("./link");
|
|
18
|
-
const pathPrefix = '(\\.\\.?|\\~)';
|
|
19
|
-
const pathSeparatorClause = '\\/';
|
|
20
|
-
// '":; are allowed in paths but they are often separators so ignore them
|
|
21
|
-
// Also disallow \\ to prevent a catastropic backtracking case #24795
|
|
22
|
-
const excludedPathCharactersClause = '[^\\0\\s!`&*()\\[\\]\'":;\\\\]';
|
|
23
|
-
/** A regex that matches paths in the form /foo, ~/foo, ./foo, ../foo, foo/bar */
|
|
24
|
-
exports.unixLocalLinkClause = '((' +
|
|
25
|
-
pathPrefix +
|
|
26
|
-
'|(' +
|
|
27
|
-
excludedPathCharactersClause +
|
|
28
|
-
')+)?(' +
|
|
29
|
-
pathSeparatorClause +
|
|
30
|
-
'(' +
|
|
31
|
-
excludedPathCharactersClause +
|
|
32
|
-
')+)+)';
|
|
33
|
-
exports.winDrivePrefix = '(?:\\\\\\\\\\?\\\\)?[a-zA-Z]:';
|
|
34
|
-
const winPathPrefix = '(' + exports.winDrivePrefix + '|\\.\\.?|\\~)';
|
|
35
|
-
const winPathSeparatorClause = '(\\\\|\\/)';
|
|
36
|
-
const winExcludedPathCharactersClause = '[^\\0<>\\?\\|\\/\\s!`&*()\\[\\]\'":;]';
|
|
37
|
-
/** A regex that matches paths in the form \\?\c:\foo c:\foo, ~\foo, .\foo, ..\foo, foo\bar */
|
|
38
|
-
exports.winLocalLinkClause = '((' +
|
|
39
|
-
winPathPrefix +
|
|
40
|
-
'|(' +
|
|
41
|
-
winExcludedPathCharactersClause +
|
|
42
|
-
')+)?(' +
|
|
43
|
-
winPathSeparatorClause +
|
|
44
|
-
'(' +
|
|
45
|
-
winExcludedPathCharactersClause +
|
|
46
|
-
')+)+)';
|
|
47
|
-
/** As xterm reads from DOM, space in that case is nonbreaking char ASCII code - 160,
|
|
48
|
-
replacing space with nonBreakningSpace or space ASCII code - 32. */
|
|
49
|
-
exports.lineAndColumnClause = [
|
|
50
|
-
'((\\S*)[\'"], line ((\\d+)( column (\\d+))?))', // "(file path)", line 45 [see #40468]
|
|
51
|
-
'((\\S*)[\'"],((\\d+)(:(\\d+))?))', // "(file path)",45 [see #78205]
|
|
52
|
-
'((\\S*) on line ((\\d+)(, column (\\d+))?))', // (file path) on line 8, column 13
|
|
53
|
-
'((\\S*):line ((\\d+)(, column (\\d+))?))', // (file path):line 8, column 13
|
|
54
|
-
'(([^\\s\\(\\)]*)(\\s?[\\(\\[](\\d+)(,\\s?(\\d+))?)[\\)\\]])', // (file path)(45), (file path) (45), (file path)(45,18), (file path) (45,18), (file path)(45, 18), (file path) (45, 18), also with []
|
|
55
|
-
'(([^:\\s\\(\\)<>\'"\\[\\]]*)(:(\\d+))?(:(\\d+))?)', // (file path):336, (file path):336:9
|
|
56
|
-
]
|
|
57
|
-
.join('|')
|
|
58
|
-
.replace(/ /g, `[${'\u00A0'} ]`);
|
|
59
|
-
// Changing any regex may effect this value, hence changes this as well if required.
|
|
60
|
-
exports.winLineAndColumnMatchIndex = 12;
|
|
61
|
-
exports.unixLineAndColumnMatchIndex = 11;
|
|
62
|
-
// Each line and column clause have 6 groups (ie no. of expressions in round brackets)
|
|
63
|
-
exports.lineAndColumnClauseGroupCount = 6;
|
|
64
|
-
const MAX_LENGTH = 2000;
|
|
65
19
|
let TerminalValidatedLocalLinkProvider = class TerminalValidatedLocalLinkProvider extends base_1.TerminalBaseLinkProvider {
|
|
66
20
|
constructor(_xterm, _client, _activateFileCallback, _wrapLinkHandler, _tooltipCallback, _validationCallback) {
|
|
67
21
|
super();
|
|
@@ -87,7 +41,7 @@ let TerminalValidatedLocalLinkProvider = class TerminalValidatedLocalLinkProvide
|
|
|
87
41
|
endLine++;
|
|
88
42
|
}
|
|
89
43
|
const text = (0, helpers_1.getXtermLineContent)(this._xterm.buffer.active, startLine, endLine, this._xterm.cols);
|
|
90
|
-
if (text.length > MAX_LENGTH) {
|
|
44
|
+
if (text.length > terminal_link_1.MAX_LENGTH) {
|
|
91
45
|
return [];
|
|
92
46
|
}
|
|
93
47
|
// clone regex to do a global search on text
|
|
@@ -122,17 +76,32 @@ let TerminalValidatedLocalLinkProvider = class TerminalValidatedLocalLinkProvide
|
|
|
122
76
|
link = link.substring(2);
|
|
123
77
|
stringIndex += 2;
|
|
124
78
|
}
|
|
125
|
-
|
|
79
|
+
// 从匹配结果中提取行号信息
|
|
80
|
+
const lineInfo = this._extractLineInfoFromMatch(match);
|
|
81
|
+
const validatedLinks = await this.detectLocalLink(link, lines, startLine, stringIndex, 1, lineInfo);
|
|
126
82
|
if (validatedLinks.length > 0) {
|
|
127
83
|
result.push(...validatedLinks);
|
|
128
84
|
}
|
|
129
85
|
}
|
|
130
86
|
return result;
|
|
131
87
|
}
|
|
132
|
-
|
|
88
|
+
_extractLineInfoFromMatch(match) {
|
|
89
|
+
return (0, terminal_link_1.extractLineInfoFromMatch)(match);
|
|
90
|
+
}
|
|
91
|
+
get _localLinkRegex() {
|
|
92
|
+
const baseLocalLinkClause = this._client.os === ide_core_common_1.OperatingSystem.Windows ? terminal_link_1.winLocalLinkClause : terminal_link_1.unixLocalLinkClause;
|
|
93
|
+
// Append line and column number regex
|
|
94
|
+
return new RegExp(`(${baseLocalLinkClause})(${(0, terminal_link_1.getLineAndColumnClause)()})?`);
|
|
95
|
+
}
|
|
96
|
+
async detectLocalLink(text, bufferLines, startLine, stringIndex, offset, lineInfo) {
|
|
133
97
|
const result = [];
|
|
134
98
|
const validatedLink = await new Promise((r) => {
|
|
135
|
-
|
|
99
|
+
var _a;
|
|
100
|
+
// 使用匹配到的文件路径
|
|
101
|
+
const filePath = ((_a = text.match(this._localLinkRegex)) === null || _a === void 0 ? void 0 : _a[1]) || text;
|
|
102
|
+
// 如果是 file:/// 协议,转换为本地路径
|
|
103
|
+
const localPath = filePath.startsWith('file://') ? ide_core_common_1.FileUri.fsPath(ide_core_common_1.URI.parse(filePath)) : filePath;
|
|
104
|
+
this._validationCallback(localPath, async (result) => {
|
|
136
105
|
if (result) {
|
|
137
106
|
const label = result.isDirectory
|
|
138
107
|
? (await this._isDirectoryInsideWorkspace(result.uri))
|
|
@@ -164,6 +133,7 @@ let TerminalValidatedLocalLinkProvider = class TerminalValidatedLocalLinkProvide
|
|
|
164
133
|
tooltipCallback,
|
|
165
134
|
true,
|
|
166
135
|
label,
|
|
136
|
+
lineInfo,
|
|
167
137
|
]));
|
|
168
138
|
}
|
|
169
139
|
else {
|
|
@@ -176,11 +146,6 @@ let TerminalValidatedLocalLinkProvider = class TerminalValidatedLocalLinkProvide
|
|
|
176
146
|
}
|
|
177
147
|
return result;
|
|
178
148
|
}
|
|
179
|
-
get _localLinkRegex() {
|
|
180
|
-
const baseLocalLinkClause = this._client.os === ide_core_common_1.OperatingSystem.Windows ? exports.winLocalLinkClause : exports.unixLocalLinkClause;
|
|
181
|
-
// Append line and column number regex
|
|
182
|
-
return new RegExp(`${baseLocalLinkClause}(${exports.lineAndColumnClause})`);
|
|
183
|
-
}
|
|
184
149
|
async _handleLocalFolderLink(uri) {
|
|
185
150
|
// If the folder is within one of the window's workspaces, focus it in the explorer
|
|
186
151
|
if (await this._isDirectoryInsideWorkspace(uri)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validated-local-link-provider.js","sourceRoot":"","sources":["../../../src/browser/links/validated-local-link-provider.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG,2KAA2K;;;;AAE3K,qCAA+E;AAC/E,oGAA2F;AAC3F,kEAAuE;AACvE,+
|
|
1
|
+
{"version":3,"file":"validated-local-link-provider.js","sourceRoot":"","sources":["../../../src/browser/links/validated-local-link-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare const pathPrefix = "(\\.\\.?|\\~)";
|
|
2
|
+
export declare const pathSeparatorClause = "\\/";
|
|
3
|
+
export declare const excludedPathCharactersClause = "[^\\0\\s!`&*()\\[\\]'\":;\\\\]";
|
|
4
|
+
export declare const winDrivePrefix = "(?:\\\\\\\\\\?\\\\)?[a-zA-Z]:";
|
|
5
|
+
export declare const winPathPrefix: string;
|
|
6
|
+
export declare const winPathSeparatorClause = "(\\\\|\\/)";
|
|
7
|
+
export declare const winExcludedPathCharactersClause = "[^\\0<>\\?\\|\\/\\s!`&*()\\[\\]'\":;]";
|
|
8
|
+
export declare const unixLocalLinkClause: string;
|
|
9
|
+
export declare const winLocalLinkClause: string;
|
|
10
|
+
/** As xterm reads from DOM, space in that case is nonbreaking char ASCII code - 160,
|
|
11
|
+
replacing space with nonBreakningSpace or space ASCII code - 32. */
|
|
12
|
+
export declare function getLineAndColumnClause(): string;
|
|
13
|
+
export declare const winLineAndColumnMatchIndex = 12;
|
|
14
|
+
export declare const unixLineAndColumnMatchIndex = 11;
|
|
15
|
+
export declare const lineAndColumnClauseGroupCount = 6;
|
|
16
|
+
export interface ILinkInfo {
|
|
17
|
+
filePath?: string;
|
|
18
|
+
line?: number;
|
|
19
|
+
column?: number;
|
|
20
|
+
endLine?: number;
|
|
21
|
+
endColumn?: number;
|
|
22
|
+
}
|
|
23
|
+
export declare const MAX_LENGTH = 2000;
|
|
24
|
+
/**
|
|
25
|
+
* 从正则匹配结果中提取行号信息
|
|
26
|
+
*/
|
|
27
|
+
export declare function extractLineInfoFromMatch(match: RegExpExecArray): ILinkInfo;
|
|
28
|
+
//# sourceMappingURL=terminal-link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-link.d.ts","sourceRoot":"","sources":["../../src/common/terminal-link.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,UAAU,kBAAkB,CAAC;AAC1C,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,4BAA4B,mCAAmC,CAAC;AAC7E,eAAO,MAAM,cAAc,kCAAkC,CAAC;AAC9D,eAAO,MAAM,aAAa,QAAyC,CAAC;AACpE,eAAO,MAAM,sBAAsB,eAAe,CAAC;AACnD,eAAO,MAAM,+BAA+B,0CAA0C,CAAC;AAGvF,eAAO,MAAM,mBAAmB,QASvB,CAAC;AAEV,eAAO,MAAM,kBAAkB,QAStB,CAAC;AAKV;mEACmE;AACnE,wBAAgB,sBAAsB,IAAI,MAAM,CA0D/C;AAGD,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAG9C,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAG/C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,eAAO,MAAM,UAAU,OAAO,CAAC;AAE/B;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,CAkC1E"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* ---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.MAX_LENGTH = exports.lineAndColumnClauseGroupCount = exports.unixLineAndColumnMatchIndex = exports.winLineAndColumnMatchIndex = exports.winLocalLinkClause = exports.unixLocalLinkClause = exports.winExcludedPathCharactersClause = exports.winPathSeparatorClause = exports.winPathPrefix = exports.winDrivePrefix = exports.excludedPathCharactersClause = exports.pathSeparatorClause = exports.pathPrefix = void 0;
|
|
8
|
+
exports.getLineAndColumnClause = getLineAndColumnClause;
|
|
9
|
+
exports.extractLineInfoFromMatch = extractLineInfoFromMatch;
|
|
10
|
+
// 行号和列号的正则生成函数
|
|
11
|
+
class LinkMatchCounters {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.ri = 0;
|
|
14
|
+
this.ci = 0;
|
|
15
|
+
this.rei = 0;
|
|
16
|
+
this.cei = 0;
|
|
17
|
+
}
|
|
18
|
+
r() {
|
|
19
|
+
return `(?<row${this.ri++}>\\d+)`;
|
|
20
|
+
}
|
|
21
|
+
c() {
|
|
22
|
+
return `(?<col${this.ci++}>\\d+)`;
|
|
23
|
+
}
|
|
24
|
+
re() {
|
|
25
|
+
return `(?<rowEnd${this.rei++}>\\d+)`;
|
|
26
|
+
}
|
|
27
|
+
ce() {
|
|
28
|
+
return `(?<colEnd${this.cei++}>\\d+)`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// 路径相关的正则表达式
|
|
32
|
+
exports.pathPrefix = '(\\.\\.?|\\~)';
|
|
33
|
+
exports.pathSeparatorClause = '\\/';
|
|
34
|
+
exports.excludedPathCharactersClause = '[^\\0\\s!`&*()\\[\\]\'":;\\\\]';
|
|
35
|
+
exports.winDrivePrefix = '(?:\\\\\\\\\\?\\\\)?[a-zA-Z]:';
|
|
36
|
+
exports.winPathPrefix = '(' + exports.winDrivePrefix + '|\\.\\.?|\\~)';
|
|
37
|
+
exports.winPathSeparatorClause = '(\\\\|\\/)';
|
|
38
|
+
exports.winExcludedPathCharactersClause = '[^\\0<>\\?\\|\\/\\s!`&*()\\[\\]\'":;]';
|
|
39
|
+
// Unix 和 Windows 的本地链接正则表达式
|
|
40
|
+
exports.unixLocalLinkClause = '((' +
|
|
41
|
+
exports.pathPrefix +
|
|
42
|
+
'|(' +
|
|
43
|
+
exports.excludedPathCharactersClause +
|
|
44
|
+
')+)?(' +
|
|
45
|
+
exports.pathSeparatorClause +
|
|
46
|
+
'(' +
|
|
47
|
+
exports.excludedPathCharactersClause +
|
|
48
|
+
')+)+)';
|
|
49
|
+
exports.winLocalLinkClause = '((' +
|
|
50
|
+
exports.winPathPrefix +
|
|
51
|
+
'|(' +
|
|
52
|
+
exports.winExcludedPathCharactersClause +
|
|
53
|
+
')+)?(' +
|
|
54
|
+
exports.winPathSeparatorClause +
|
|
55
|
+
'(' +
|
|
56
|
+
exports.winExcludedPathCharactersClause +
|
|
57
|
+
')+)+)';
|
|
58
|
+
// 行号和列号的匹配正则表达式
|
|
59
|
+
const eolSuffix = '';
|
|
60
|
+
/** As xterm reads from DOM, space in that case is nonbreaking char ASCII code - 160,
|
|
61
|
+
replacing space with nonBreakningSpace or space ASCII code - 32. */
|
|
62
|
+
function getLineAndColumnClause() {
|
|
63
|
+
const counters = new LinkMatchCounters();
|
|
64
|
+
return [
|
|
65
|
+
// foo:339
|
|
66
|
+
// foo:339:12
|
|
67
|
+
// foo:339:12-789
|
|
68
|
+
// foo:339:12-341.789
|
|
69
|
+
// foo:339.12
|
|
70
|
+
// foo 339
|
|
71
|
+
// foo 339:12 [#140780]
|
|
72
|
+
// foo 339.12
|
|
73
|
+
// foo#339
|
|
74
|
+
// foo#339:12 [#190288]
|
|
75
|
+
// foo#339.12
|
|
76
|
+
// foo, 339 [#217927]
|
|
77
|
+
// "foo",339
|
|
78
|
+
// "foo",339:12
|
|
79
|
+
// "foo",339.12
|
|
80
|
+
// "foo",339.12-789
|
|
81
|
+
// "foo",339.12-341.789
|
|
82
|
+
`(?::|#| |['"],|, )${counters.r()}([:.]${counters.c()}(?:-(?:${counters.re()}\\.)?${counters.ce()})?)?` + eolSuffix,
|
|
83
|
+
// The quotes below are optional [#171652]
|
|
84
|
+
// "foo", line 339 [#40468]
|
|
85
|
+
// "foo", line 339, col 12
|
|
86
|
+
// "foo", line 339, column 12
|
|
87
|
+
// "foo":line 339
|
|
88
|
+
// "foo":line 339, col 12
|
|
89
|
+
// "foo":line 339, column 12
|
|
90
|
+
// "foo": line 339
|
|
91
|
+
// "foo": line 339, col 12
|
|
92
|
+
// "foo": line 339, column 12
|
|
93
|
+
// "foo" on line 339
|
|
94
|
+
// "foo" on line 339, col 12
|
|
95
|
+
// "foo" on line 339, column 12
|
|
96
|
+
// "foo" line 339 column 12
|
|
97
|
+
// "foo", line 339, character 12 [#171880]
|
|
98
|
+
// "foo", line 339, characters 12-789 [#171880]
|
|
99
|
+
// "foo", lines 339-341 [#171880]
|
|
100
|
+
// "foo", lines 339-341, characters 12-789 [#178287]
|
|
101
|
+
`['"]?(?:,? |: ?| on )lines? ${counters.r()}(?:-${counters.re()})?(?:,? (?:col(?:umn)?|characters?) ${counters.c()}(?:-${counters.ce()})?)?` +
|
|
102
|
+
eolSuffix,
|
|
103
|
+
// () and [] are interchangeable
|
|
104
|
+
// foo(339)
|
|
105
|
+
// foo(339,12)
|
|
106
|
+
// foo(339, 12)
|
|
107
|
+
// foo (339)
|
|
108
|
+
// foo (339,12)
|
|
109
|
+
// foo (339, 12)
|
|
110
|
+
// foo: (339)
|
|
111
|
+
// foo: (339,12)
|
|
112
|
+
// foo: (339, 12)
|
|
113
|
+
// foo(339:12) [#229842]
|
|
114
|
+
// foo (339:12) [#229842]
|
|
115
|
+
`:? ?[\\[\\(]${counters.r()}(?:(?:, ?|:)${counters.c()})?[\\]\\)]` + eolSuffix,
|
|
116
|
+
]
|
|
117
|
+
.join('|')
|
|
118
|
+
.replace(/ /g, `[${'\u00A0'} ]`);
|
|
119
|
+
}
|
|
120
|
+
// 行号和列号匹配的索引
|
|
121
|
+
exports.winLineAndColumnMatchIndex = 12;
|
|
122
|
+
exports.unixLineAndColumnMatchIndex = 11;
|
|
123
|
+
// 行号和列号子句的组数
|
|
124
|
+
exports.lineAndColumnClauseGroupCount = 6;
|
|
125
|
+
// 最大长度限制
|
|
126
|
+
exports.MAX_LENGTH = 2000;
|
|
127
|
+
/**
|
|
128
|
+
* 从正则匹配结果中提取行号信息
|
|
129
|
+
*/
|
|
130
|
+
function extractLineInfoFromMatch(match) {
|
|
131
|
+
const result = {};
|
|
132
|
+
// 提取文件路径(第一个捕获组)
|
|
133
|
+
if (match[1]) {
|
|
134
|
+
result.filePath = match[1];
|
|
135
|
+
}
|
|
136
|
+
// 提取命名捕获组中的行号信息
|
|
137
|
+
if (match.groups) {
|
|
138
|
+
for (const [key, value] of Object.entries(match.groups)) {
|
|
139
|
+
if (!value) {
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (key.startsWith('row')) {
|
|
143
|
+
const index = key.replace('row', '');
|
|
144
|
+
if (index === 'End') {
|
|
145
|
+
result.endLine = parseInt(value, 10);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
result.line = parseInt(value, 10);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
else if (key.startsWith('col')) {
|
|
152
|
+
const index = key.replace('col', '');
|
|
153
|
+
if (index === 'End') {
|
|
154
|
+
result.endColumn = parseInt(value, 10);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
result.column = parseInt(value, 10);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return result;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=terminal-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-link.js","sourceRoot":"","sources":["../../src/common/terminal-link.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensumi/ide-terminal-next",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.9.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"lib",
|
|
6
6
|
"src"
|
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
"url": "git@github.com:opensumi/core.git"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@opensumi/ide-connection": "3.
|
|
21
|
-
"@opensumi/ide-core-common": "3.
|
|
22
|
-
"@opensumi/ide-core-node": "3.
|
|
23
|
-
"@opensumi/ide-file-service": "3.
|
|
24
|
-
"@opensumi/ide-utils": "3.
|
|
20
|
+
"@opensumi/ide-connection": "3.9.0",
|
|
21
|
+
"@opensumi/ide-core-common": "3.9.0",
|
|
22
|
+
"@opensumi/ide-core-node": "3.9.0",
|
|
23
|
+
"@opensumi/ide-file-service": "3.9.0",
|
|
24
|
+
"@opensumi/ide-utils": "3.9.0",
|
|
25
25
|
"@xterm/addon-canvas": "0.7.0",
|
|
26
26
|
"@xterm/addon-fit": "0.10.0",
|
|
27
27
|
"@xterm/addon-search": "0.15.0",
|
|
@@ -31,19 +31,19 @@
|
|
|
31
31
|
"os-locale": "^4.0.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@opensumi/ide-components": "3.
|
|
35
|
-
"@opensumi/ide-core-browser": "3.
|
|
36
|
-
"@opensumi/ide-dev-tool": "3.
|
|
37
|
-
"@opensumi/ide-editor": "3.
|
|
38
|
-
"@opensumi/ide-main-layout": "3.
|
|
39
|
-
"@opensumi/ide-monaco": "3.
|
|
40
|
-
"@opensumi/ide-overlay": "3.
|
|
41
|
-
"@opensumi/ide-status-bar": "3.
|
|
42
|
-
"@opensumi/ide-theme": "3.
|
|
43
|
-
"@opensumi/ide-variable": "3.
|
|
44
|
-
"@opensumi/ide-workspace": "3.
|
|
34
|
+
"@opensumi/ide-components": "3.9.0",
|
|
35
|
+
"@opensumi/ide-core-browser": "3.9.0",
|
|
36
|
+
"@opensumi/ide-dev-tool": "3.9.0",
|
|
37
|
+
"@opensumi/ide-editor": "3.9.0",
|
|
38
|
+
"@opensumi/ide-main-layout": "3.9.0",
|
|
39
|
+
"@opensumi/ide-monaco": "3.9.0",
|
|
40
|
+
"@opensumi/ide-overlay": "3.9.0",
|
|
41
|
+
"@opensumi/ide-status-bar": "3.9.0",
|
|
42
|
+
"@opensumi/ide-theme": "3.9.0",
|
|
43
|
+
"@opensumi/ide-variable": "3.9.0",
|
|
44
|
+
"@opensumi/ide-workspace": "3.9.0",
|
|
45
45
|
"@types/http-proxy": "^1.17.2",
|
|
46
46
|
"http-proxy": "^1.18.0"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "6791ce569a373e2f65df9486c6ff312f23d4707c"
|
|
49
49
|
}
|
|
@@ -25,22 +25,21 @@ import {
|
|
|
25
25
|
ITerminalHoverManagerService,
|
|
26
26
|
ITerminalService,
|
|
27
27
|
} from '../../common';
|
|
28
|
+
import {
|
|
29
|
+
ILinkInfo,
|
|
30
|
+
extractLineInfoFromMatch,
|
|
31
|
+
getLineAndColumnClause,
|
|
32
|
+
unixLocalLinkClause,
|
|
33
|
+
winDrivePrefix,
|
|
34
|
+
winLocalLinkClause,
|
|
35
|
+
} from '../../common/terminal-link';
|
|
28
36
|
import { XTermCore } from '../../common/xterm-private';
|
|
29
37
|
import { TerminalClient } from '../terminal.client';
|
|
30
38
|
|
|
31
39
|
import { TerminalExternalLinkProviderAdapter } from './external-link-provider-adapter';
|
|
32
40
|
import { TerminalLink } from './link';
|
|
33
41
|
import { TerminalProtocolLinkProvider } from './protocol-link-provider';
|
|
34
|
-
import {
|
|
35
|
-
TerminalValidatedLocalLinkProvider,
|
|
36
|
-
lineAndColumnClause,
|
|
37
|
-
lineAndColumnClauseGroupCount,
|
|
38
|
-
unixLineAndColumnMatchIndex,
|
|
39
|
-
unixLocalLinkClause,
|
|
40
|
-
winDrivePrefix,
|
|
41
|
-
winLineAndColumnMatchIndex,
|
|
42
|
-
winLocalLinkClause,
|
|
43
|
-
} from './validated-local-link-provider';
|
|
42
|
+
import { TerminalValidatedLocalLinkProvider } from './validated-local-link-provider';
|
|
44
43
|
import { TerminalWordLinkProvider } from './word-link-provider';
|
|
45
44
|
|
|
46
45
|
const { posix, win32 } = path;
|
|
@@ -249,23 +248,22 @@ export class TerminalLinkManager extends Disposable {
|
|
|
249
248
|
protected get _localLinkRegex(): RegExp {
|
|
250
249
|
const baseLocalLinkClause = this._client.os === OperatingSystem.Windows ? winLocalLinkClause : unixLocalLinkClause;
|
|
251
250
|
// Append line and column number regex
|
|
252
|
-
return new RegExp(`${baseLocalLinkClause}(${
|
|
251
|
+
return new RegExp(`${baseLocalLinkClause}(${getLineAndColumnClause()})`);
|
|
253
252
|
}
|
|
254
253
|
|
|
255
254
|
private async _handleLocalLink(link: string): Promise<void> {
|
|
256
|
-
|
|
257
|
-
const resolvedLink = await this._resolvePath(
|
|
255
|
+
const lineColumnInfo: LineColumnInfo = this.extractLineColumnInfo(link);
|
|
256
|
+
const resolvedLink = await this._resolvePath(lineColumnInfo.filePath);
|
|
258
257
|
if (!resolvedLink) {
|
|
259
258
|
return;
|
|
260
259
|
}
|
|
261
|
-
const lineColumnInfo: LineColumnInfo = this.extractLineColumnInfo(link);
|
|
262
260
|
const range: ITextEditorSelection = {
|
|
263
261
|
startLineNumber: lineColumnInfo.lineNumber,
|
|
264
262
|
endLineNumber: lineColumnInfo.lineNumber,
|
|
265
263
|
startColumn: lineColumnInfo.columnNumber,
|
|
266
264
|
endColumn: lineColumnInfo.columnNumber,
|
|
267
265
|
};
|
|
268
|
-
await this._editorService.open(resolvedLink.uri, { range });
|
|
266
|
+
await this._editorService.open(resolvedLink.uri, { range, focus: true });
|
|
269
267
|
}
|
|
270
268
|
|
|
271
269
|
private _handleHypertextLink(url: string): void {
|
|
@@ -399,39 +397,31 @@ export class TerminalLinkManager extends Disposable {
|
|
|
399
397
|
}
|
|
400
398
|
}
|
|
401
399
|
|
|
400
|
+
private _extractLineInfoFromMatch(match: RegExpExecArray): ILinkInfo {
|
|
401
|
+
return extractLineInfoFromMatch(match);
|
|
402
|
+
}
|
|
403
|
+
|
|
402
404
|
/**
|
|
403
405
|
* Returns line and column number of URl if that is present.
|
|
404
406
|
*
|
|
405
407
|
* @param link Url link which may contain line and column number.
|
|
406
408
|
*/
|
|
407
409
|
public extractLineColumnInfo(link: string): LineColumnInfo {
|
|
408
|
-
const matches:
|
|
410
|
+
const matches: RegExpExecArray | null = this._localLinkRegex.exec(link);
|
|
409
411
|
const lineColumnInfo: LineColumnInfo = {
|
|
410
412
|
lineNumber: 1,
|
|
411
413
|
columnNumber: 1,
|
|
414
|
+
filePath: link,
|
|
412
415
|
};
|
|
413
|
-
|
|
414
416
|
if (!matches) {
|
|
415
417
|
return lineColumnInfo;
|
|
416
418
|
}
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
if (rowNumber) {
|
|
424
|
-
lineColumnInfo['lineNumber'] = parseInt(rowNumber, 10);
|
|
425
|
-
// Check if column number exists
|
|
426
|
-
const columnNumber = matches[lineMatchIndex + 2];
|
|
427
|
-
if (columnNumber) {
|
|
428
|
-
lineColumnInfo['columnNumber'] = parseInt(columnNumber, 10);
|
|
429
|
-
}
|
|
430
|
-
break;
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
return lineColumnInfo;
|
|
419
|
+
const lineInfo = this._extractLineInfoFromMatch(matches);
|
|
420
|
+
return {
|
|
421
|
+
filePath: lineInfo.filePath ?? link,
|
|
422
|
+
lineNumber: lineInfo.line ?? 1,
|
|
423
|
+
columnNumber: lineInfo.column ?? 1,
|
|
424
|
+
};
|
|
435
425
|
}
|
|
436
426
|
|
|
437
427
|
/**
|
|
@@ -449,6 +439,7 @@ export class TerminalLinkManager extends Disposable {
|
|
|
449
439
|
}
|
|
450
440
|
|
|
451
441
|
export interface LineColumnInfo {
|
|
442
|
+
filePath: string;
|
|
452
443
|
lineNumber: number;
|
|
453
444
|
columnNumber: number;
|
|
454
445
|
}
|
|
@@ -43,7 +43,17 @@ export class TerminalLink extends Disposable implements ILink {
|
|
|
43
43
|
public readonly range: IBufferRange,
|
|
44
44
|
public readonly text: string,
|
|
45
45
|
private readonly _viewportY: number,
|
|
46
|
-
private readonly _activateCallback: (
|
|
46
|
+
private readonly _activateCallback: (
|
|
47
|
+
event: MouseEvent | undefined,
|
|
48
|
+
uri: string,
|
|
49
|
+
lineInfo?: {
|
|
50
|
+
filePath?: string;
|
|
51
|
+
line?: number;
|
|
52
|
+
column?: number;
|
|
53
|
+
endLine?: number;
|
|
54
|
+
endColumn?: number;
|
|
55
|
+
},
|
|
56
|
+
) => void,
|
|
47
57
|
private readonly _tooltipCallback: (
|
|
48
58
|
link: TerminalLink,
|
|
49
59
|
viewportRange: IViewportRange,
|
|
@@ -52,6 +62,13 @@ export class TerminalLink extends Disposable implements ILink {
|
|
|
52
62
|
) => IDisposable | undefined,
|
|
53
63
|
private readonly _isHighConfidenceLink: boolean,
|
|
54
64
|
readonly label: string | undefined,
|
|
65
|
+
private readonly _lineInfo?: {
|
|
66
|
+
filePath?: string;
|
|
67
|
+
line?: number;
|
|
68
|
+
column?: number;
|
|
69
|
+
endLine?: number;
|
|
70
|
+
endColumn?: number;
|
|
71
|
+
},
|
|
55
72
|
) {
|
|
56
73
|
super();
|
|
57
74
|
this.decorations = {
|
|
@@ -71,7 +88,7 @@ export class TerminalLink extends Disposable implements ILink {
|
|
|
71
88
|
}
|
|
72
89
|
|
|
73
90
|
activate(event: MouseEvent | undefined, text: string): void {
|
|
74
|
-
this._activateCallback(event, text);
|
|
91
|
+
this._activateCallback(event, text, this._lineInfo);
|
|
75
92
|
}
|
|
76
93
|
|
|
77
94
|
hover(event: MouseEvent, text: string): void {
|
|
@@ -7,9 +7,18 @@
|
|
|
7
7
|
import { Autowired, INJECTOR_TOKEN, Injectable, Injector } from '@opensumi/di';
|
|
8
8
|
import { AppConfig } from '@opensumi/ide-core-browser/lib/react-providers/config-provider';
|
|
9
9
|
import { IWindowService } from '@opensumi/ide-core-browser/lib/window';
|
|
10
|
-
import { CommandService, IDisposable, OperatingSystem, URI } from '@opensumi/ide-core-common';
|
|
10
|
+
import { CommandService, FileUri, IDisposable, OperatingSystem, URI } from '@opensumi/ide-core-common';
|
|
11
11
|
import { IWorkspaceService } from '@opensumi/ide-workspace/lib/common/workspace.interface';
|
|
12
12
|
|
|
13
|
+
import {
|
|
14
|
+
ILinkInfo,
|
|
15
|
+
MAX_LENGTH,
|
|
16
|
+
extractLineInfoFromMatch,
|
|
17
|
+
getLineAndColumnClause,
|
|
18
|
+
unixLocalLinkClause,
|
|
19
|
+
winLocalLinkClause,
|
|
20
|
+
} from '../../common/terminal-link';
|
|
21
|
+
|
|
13
22
|
import { TerminalBaseLinkProvider } from './base';
|
|
14
23
|
import { convertLinkRangeToBuffer, getXtermLineContent } from './helpers';
|
|
15
24
|
import { FOLDER_IN_WORKSPACE_LABEL, FOLDER_NOT_IN_WORKSPACE_LABEL, OPEN_FILE_LABEL, TerminalLink } from './link';
|
|
@@ -18,61 +27,6 @@ import { XtermLinkMatcherHandler } from './link-manager';
|
|
|
18
27
|
import type { TerminalClient } from '../terminal.client';
|
|
19
28
|
import type { IBufferLine, IViewportRange, Terminal } from '@xterm/xterm';
|
|
20
29
|
|
|
21
|
-
const pathPrefix = '(\\.\\.?|\\~)';
|
|
22
|
-
const pathSeparatorClause = '\\/';
|
|
23
|
-
// '":; are allowed in paths but they are often separators so ignore them
|
|
24
|
-
// Also disallow \\ to prevent a catastropic backtracking case #24795
|
|
25
|
-
const excludedPathCharactersClause = '[^\\0\\s!`&*()\\[\\]\'":;\\\\]';
|
|
26
|
-
/** A regex that matches paths in the form /foo, ~/foo, ./foo, ../foo, foo/bar */
|
|
27
|
-
export const unixLocalLinkClause =
|
|
28
|
-
'((' +
|
|
29
|
-
pathPrefix +
|
|
30
|
-
'|(' +
|
|
31
|
-
excludedPathCharactersClause +
|
|
32
|
-
')+)?(' +
|
|
33
|
-
pathSeparatorClause +
|
|
34
|
-
'(' +
|
|
35
|
-
excludedPathCharactersClause +
|
|
36
|
-
')+)+)';
|
|
37
|
-
|
|
38
|
-
export const winDrivePrefix = '(?:\\\\\\\\\\?\\\\)?[a-zA-Z]:';
|
|
39
|
-
const winPathPrefix = '(' + winDrivePrefix + '|\\.\\.?|\\~)';
|
|
40
|
-
const winPathSeparatorClause = '(\\\\|\\/)';
|
|
41
|
-
const winExcludedPathCharactersClause = '[^\\0<>\\?\\|\\/\\s!`&*()\\[\\]\'":;]';
|
|
42
|
-
/** A regex that matches paths in the form \\?\c:\foo c:\foo, ~\foo, .\foo, ..\foo, foo\bar */
|
|
43
|
-
export const winLocalLinkClause =
|
|
44
|
-
'((' +
|
|
45
|
-
winPathPrefix +
|
|
46
|
-
'|(' +
|
|
47
|
-
winExcludedPathCharactersClause +
|
|
48
|
-
')+)?(' +
|
|
49
|
-
winPathSeparatorClause +
|
|
50
|
-
'(' +
|
|
51
|
-
winExcludedPathCharactersClause +
|
|
52
|
-
')+)+)';
|
|
53
|
-
|
|
54
|
-
/** As xterm reads from DOM, space in that case is nonbreaking char ASCII code - 160,
|
|
55
|
-
replacing space with nonBreakningSpace or space ASCII code - 32. */
|
|
56
|
-
export const lineAndColumnClause = [
|
|
57
|
-
'((\\S*)[\'"], line ((\\d+)( column (\\d+))?))', // "(file path)", line 45 [see #40468]
|
|
58
|
-
'((\\S*)[\'"],((\\d+)(:(\\d+))?))', // "(file path)",45 [see #78205]
|
|
59
|
-
'((\\S*) on line ((\\d+)(, column (\\d+))?))', // (file path) on line 8, column 13
|
|
60
|
-
'((\\S*):line ((\\d+)(, column (\\d+))?))', // (file path):line 8, column 13
|
|
61
|
-
'(([^\\s\\(\\)]*)(\\s?[\\(\\[](\\d+)(,\\s?(\\d+))?)[\\)\\]])', // (file path)(45), (file path) (45), (file path)(45,18), (file path) (45,18), (file path)(45, 18), (file path) (45, 18), also with []
|
|
62
|
-
'(([^:\\s\\(\\)<>\'"\\[\\]]*)(:(\\d+))?(:(\\d+))?)', // (file path):336, (file path):336:9
|
|
63
|
-
]
|
|
64
|
-
.join('|')
|
|
65
|
-
.replace(/ /g, `[${'\u00A0'} ]`);
|
|
66
|
-
|
|
67
|
-
// Changing any regex may effect this value, hence changes this as well if required.
|
|
68
|
-
export const winLineAndColumnMatchIndex = 12;
|
|
69
|
-
export const unixLineAndColumnMatchIndex = 11;
|
|
70
|
-
|
|
71
|
-
// Each line and column clause have 6 groups (ie no. of expressions in round brackets)
|
|
72
|
-
export const lineAndColumnClauseGroupCount = 6;
|
|
73
|
-
|
|
74
|
-
const MAX_LENGTH = 2000;
|
|
75
|
-
|
|
76
30
|
@Injectable({ multiple: true })
|
|
77
31
|
export class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider {
|
|
78
32
|
@Autowired(INJECTOR_TOKEN)
|
|
@@ -168,7 +122,9 @@ export class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider
|
|
|
168
122
|
link = link.substring(2);
|
|
169
123
|
stringIndex += 2;
|
|
170
124
|
}
|
|
171
|
-
|
|
125
|
+
// 从匹配结果中提取行号信息
|
|
126
|
+
const lineInfo = this._extractLineInfoFromMatch(match);
|
|
127
|
+
const validatedLinks = await this.detectLocalLink(link, lines, startLine, stringIndex, 1, lineInfo);
|
|
172
128
|
|
|
173
129
|
if (validatedLinks.length > 0) {
|
|
174
130
|
result.push(...validatedLinks);
|
|
@@ -178,16 +134,33 @@ export class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider
|
|
|
178
134
|
return result;
|
|
179
135
|
}
|
|
180
136
|
|
|
137
|
+
private _extractLineInfoFromMatch(match: RegExpExecArray): ILinkInfo {
|
|
138
|
+
return extractLineInfoFromMatch(match);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
protected get _localLinkRegex(): RegExp {
|
|
142
|
+
const baseLocalLinkClause = this._client.os === OperatingSystem.Windows ? winLocalLinkClause : unixLocalLinkClause;
|
|
143
|
+
// Append line and column number regex
|
|
144
|
+
return new RegExp(`(${baseLocalLinkClause})(${getLineAndColumnClause()})?`);
|
|
145
|
+
}
|
|
146
|
+
|
|
181
147
|
private async detectLocalLink(
|
|
182
148
|
text: string,
|
|
183
149
|
bufferLines: IBufferLine[],
|
|
184
150
|
startLine: number,
|
|
185
151
|
stringIndex: number,
|
|
186
152
|
offset,
|
|
153
|
+
lineInfo?: ILinkInfo,
|
|
187
154
|
) {
|
|
188
155
|
const result: TerminalLink[] = [];
|
|
156
|
+
|
|
189
157
|
const validatedLink = await new Promise<TerminalLink | undefined>((r) => {
|
|
190
|
-
|
|
158
|
+
// 使用匹配到的文件路径
|
|
159
|
+
const filePath = text.match(this._localLinkRegex)?.[1] || text;
|
|
160
|
+
// 如果是 file:/// 协议,转换为本地路径
|
|
161
|
+
const localPath = filePath.startsWith('file://') ? FileUri.fsPath(URI.parse(filePath)) : filePath;
|
|
162
|
+
|
|
163
|
+
this._validationCallback(localPath, async (result) => {
|
|
191
164
|
if (result) {
|
|
192
165
|
const label = result.isDirectory
|
|
193
166
|
? (await this._isDirectoryInsideWorkspace(result.uri))
|
|
@@ -201,6 +174,7 @@ export class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider
|
|
|
201
174
|
this._activateFileCallback(event, text);
|
|
202
175
|
}
|
|
203
176
|
});
|
|
177
|
+
|
|
204
178
|
// Convert the link text's string index into a wrapped buffer range
|
|
205
179
|
const bufferRange = convertLinkRangeToBuffer(
|
|
206
180
|
bufferLines,
|
|
@@ -213,12 +187,14 @@ export class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider
|
|
|
213
187
|
},
|
|
214
188
|
startLine,
|
|
215
189
|
);
|
|
190
|
+
|
|
216
191
|
const tooltipCallback = (
|
|
217
192
|
link: TerminalLink,
|
|
218
193
|
viewportRange: IViewportRange,
|
|
219
194
|
modifierDownCallback?: () => void,
|
|
220
195
|
modifierUpCallback?: () => void,
|
|
221
196
|
) => this._tooltipCallback(link, viewportRange, modifierDownCallback, modifierUpCallback);
|
|
197
|
+
|
|
222
198
|
r(
|
|
223
199
|
this.injector.get(TerminalLink, [
|
|
224
200
|
this._xterm,
|
|
@@ -229,6 +205,7 @@ export class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider
|
|
|
229
205
|
tooltipCallback,
|
|
230
206
|
true,
|
|
231
207
|
label,
|
|
208
|
+
lineInfo,
|
|
232
209
|
]),
|
|
233
210
|
);
|
|
234
211
|
} else {
|
|
@@ -236,18 +213,13 @@ export class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider
|
|
|
236
213
|
}
|
|
237
214
|
});
|
|
238
215
|
});
|
|
216
|
+
|
|
239
217
|
if (validatedLink) {
|
|
240
218
|
result.push(validatedLink);
|
|
241
219
|
}
|
|
242
220
|
return result;
|
|
243
221
|
}
|
|
244
222
|
|
|
245
|
-
protected get _localLinkRegex(): RegExp {
|
|
246
|
-
const baseLocalLinkClause = this._client.os === OperatingSystem.Windows ? winLocalLinkClause : unixLocalLinkClause;
|
|
247
|
-
// Append line and column number regex
|
|
248
|
-
return new RegExp(`${baseLocalLinkClause}(${lineAndColumnClause})`);
|
|
249
|
-
}
|
|
250
|
-
|
|
251
223
|
private async _handleLocalFolderLink(uri: URI): Promise<void> {
|
|
252
224
|
// If the folder is within one of the window's workspaces, focus it in the explorer
|
|
253
225
|
if (await this._isDirectoryInsideWorkspace(uri)) {
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/* ---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
|
|
6
|
+
// 行号和列号的正则生成函数
|
|
7
|
+
class LinkMatchCounters {
|
|
8
|
+
private ri = 0;
|
|
9
|
+
private ci = 0;
|
|
10
|
+
private rei = 0;
|
|
11
|
+
private cei = 0;
|
|
12
|
+
|
|
13
|
+
r(): string {
|
|
14
|
+
return `(?<row${this.ri++}>\\d+)`;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
c(): string {
|
|
18
|
+
return `(?<col${this.ci++}>\\d+)`;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
re(): string {
|
|
22
|
+
return `(?<rowEnd${this.rei++}>\\d+)`;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
ce(): string {
|
|
26
|
+
return `(?<colEnd${this.cei++}>\\d+)`;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// 路径相关的正则表达式
|
|
31
|
+
export const pathPrefix = '(\\.\\.?|\\~)';
|
|
32
|
+
export const pathSeparatorClause = '\\/';
|
|
33
|
+
export const excludedPathCharactersClause = '[^\\0\\s!`&*()\\[\\]\'":;\\\\]';
|
|
34
|
+
export const winDrivePrefix = '(?:\\\\\\\\\\?\\\\)?[a-zA-Z]:';
|
|
35
|
+
export const winPathPrefix = '(' + winDrivePrefix + '|\\.\\.?|\\~)';
|
|
36
|
+
export const winPathSeparatorClause = '(\\\\|\\/)';
|
|
37
|
+
export const winExcludedPathCharactersClause = '[^\\0<>\\?\\|\\/\\s!`&*()\\[\\]\'":;]';
|
|
38
|
+
|
|
39
|
+
// Unix 和 Windows 的本地链接正则表达式
|
|
40
|
+
export const unixLocalLinkClause =
|
|
41
|
+
'((' +
|
|
42
|
+
pathPrefix +
|
|
43
|
+
'|(' +
|
|
44
|
+
excludedPathCharactersClause +
|
|
45
|
+
')+)?(' +
|
|
46
|
+
pathSeparatorClause +
|
|
47
|
+
'(' +
|
|
48
|
+
excludedPathCharactersClause +
|
|
49
|
+
')+)+)';
|
|
50
|
+
|
|
51
|
+
export const winLocalLinkClause =
|
|
52
|
+
'((' +
|
|
53
|
+
winPathPrefix +
|
|
54
|
+
'|(' +
|
|
55
|
+
winExcludedPathCharactersClause +
|
|
56
|
+
')+)?(' +
|
|
57
|
+
winPathSeparatorClause +
|
|
58
|
+
'(' +
|
|
59
|
+
winExcludedPathCharactersClause +
|
|
60
|
+
')+)+)';
|
|
61
|
+
|
|
62
|
+
// 行号和列号的匹配正则表达式
|
|
63
|
+
const eolSuffix = '';
|
|
64
|
+
|
|
65
|
+
/** As xterm reads from DOM, space in that case is nonbreaking char ASCII code - 160,
|
|
66
|
+
replacing space with nonBreakningSpace or space ASCII code - 32. */
|
|
67
|
+
export function getLineAndColumnClause(): string {
|
|
68
|
+
const counters = new LinkMatchCounters();
|
|
69
|
+
|
|
70
|
+
return [
|
|
71
|
+
// foo:339
|
|
72
|
+
// foo:339:12
|
|
73
|
+
// foo:339:12-789
|
|
74
|
+
// foo:339:12-341.789
|
|
75
|
+
// foo:339.12
|
|
76
|
+
// foo 339
|
|
77
|
+
// foo 339:12 [#140780]
|
|
78
|
+
// foo 339.12
|
|
79
|
+
// foo#339
|
|
80
|
+
// foo#339:12 [#190288]
|
|
81
|
+
// foo#339.12
|
|
82
|
+
// foo, 339 [#217927]
|
|
83
|
+
// "foo",339
|
|
84
|
+
// "foo",339:12
|
|
85
|
+
// "foo",339.12
|
|
86
|
+
// "foo",339.12-789
|
|
87
|
+
// "foo",339.12-341.789
|
|
88
|
+
`(?::|#| |['"],|, )${counters.r()}([:.]${counters.c()}(?:-(?:${counters.re()}\\.)?${counters.ce()})?)?` + eolSuffix,
|
|
89
|
+
// The quotes below are optional [#171652]
|
|
90
|
+
// "foo", line 339 [#40468]
|
|
91
|
+
// "foo", line 339, col 12
|
|
92
|
+
// "foo", line 339, column 12
|
|
93
|
+
// "foo":line 339
|
|
94
|
+
// "foo":line 339, col 12
|
|
95
|
+
// "foo":line 339, column 12
|
|
96
|
+
// "foo": line 339
|
|
97
|
+
// "foo": line 339, col 12
|
|
98
|
+
// "foo": line 339, column 12
|
|
99
|
+
// "foo" on line 339
|
|
100
|
+
// "foo" on line 339, col 12
|
|
101
|
+
// "foo" on line 339, column 12
|
|
102
|
+
// "foo" line 339 column 12
|
|
103
|
+
// "foo", line 339, character 12 [#171880]
|
|
104
|
+
// "foo", line 339, characters 12-789 [#171880]
|
|
105
|
+
// "foo", lines 339-341 [#171880]
|
|
106
|
+
// "foo", lines 339-341, characters 12-789 [#178287]
|
|
107
|
+
`['"]?(?:,? |: ?| on )lines? ${counters.r()}(?:-${counters.re()})?(?:,? (?:col(?:umn)?|characters?) ${counters.c()}(?:-${counters.ce()})?)?` +
|
|
108
|
+
eolSuffix,
|
|
109
|
+
// () and [] are interchangeable
|
|
110
|
+
// foo(339)
|
|
111
|
+
// foo(339,12)
|
|
112
|
+
// foo(339, 12)
|
|
113
|
+
// foo (339)
|
|
114
|
+
// foo (339,12)
|
|
115
|
+
// foo (339, 12)
|
|
116
|
+
// foo: (339)
|
|
117
|
+
// foo: (339,12)
|
|
118
|
+
// foo: (339, 12)
|
|
119
|
+
// foo(339:12) [#229842]
|
|
120
|
+
// foo (339:12) [#229842]
|
|
121
|
+
`:? ?[\\[\\(]${counters.r()}(?:(?:, ?|:)${counters.c()})?[\\]\\)]` + eolSuffix,
|
|
122
|
+
]
|
|
123
|
+
.join('|')
|
|
124
|
+
.replace(/ /g, `[${'\u00A0'} ]`);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// 行号和列号匹配的索引
|
|
128
|
+
export const winLineAndColumnMatchIndex = 12;
|
|
129
|
+
export const unixLineAndColumnMatchIndex = 11;
|
|
130
|
+
|
|
131
|
+
// 行号和列号子句的组数
|
|
132
|
+
export const lineAndColumnClauseGroupCount = 6;
|
|
133
|
+
|
|
134
|
+
// 链接信息接口
|
|
135
|
+
export interface ILinkInfo {
|
|
136
|
+
filePath?: string;
|
|
137
|
+
line?: number;
|
|
138
|
+
column?: number;
|
|
139
|
+
endLine?: number;
|
|
140
|
+
endColumn?: number;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// 最大长度限制
|
|
144
|
+
export const MAX_LENGTH = 2000;
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* 从正则匹配结果中提取行号信息
|
|
148
|
+
*/
|
|
149
|
+
export function extractLineInfoFromMatch(match: RegExpExecArray): ILinkInfo {
|
|
150
|
+
const result: any = {};
|
|
151
|
+
|
|
152
|
+
// 提取文件路径(第一个捕获组)
|
|
153
|
+
if (match[1]) {
|
|
154
|
+
result.filePath = match[1];
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// 提取命名捕获组中的行号信息
|
|
158
|
+
if (match.groups) {
|
|
159
|
+
for (const [key, value] of Object.entries(match.groups)) {
|
|
160
|
+
if (!value) {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (key.startsWith('row')) {
|
|
165
|
+
const index = key.replace('row', '');
|
|
166
|
+
if (index === 'End') {
|
|
167
|
+
result.endLine = parseInt(value, 10);
|
|
168
|
+
} else {
|
|
169
|
+
result.line = parseInt(value, 10);
|
|
170
|
+
}
|
|
171
|
+
} else if (key.startsWith('col')) {
|
|
172
|
+
const index = key.replace('col', '');
|
|
173
|
+
if (index === 'End') {
|
|
174
|
+
result.endColumn = parseInt(value, 10);
|
|
175
|
+
} else {
|
|
176
|
+
result.column = parseInt(value, 10);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return result;
|
|
183
|
+
}
|