@opensumi/ide-terminal-next 3.8.3-next-1747817292.0 → 3.8.3-next-1747818383.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 +0 -2
- package/lib/browser/links/link-manager.d.ts.map +1 -1
- package/lib/browser/links/link-manager.js +22 -18
- package/lib/browser/links/link-manager.js.map +1 -1
- package/lib/browser/links/link.d.ts +1 -14
- package/lib/browser/links/link.d.ts.map +1 -1
- package/lib/browser/links/link.js +3 -4
- package/lib/browser/links/link.js.map +1 -1
- package/lib/browser/links/validated-local-link-provider.d.ts +12 -2
- package/lib/browser/links/validated-local-link-provider.d.ts.map +1 -1
- package/lib/browser/links/validated-local-link-provider.js +57 -22
- package/lib/browser/links/validated-local-link-provider.js.map +1 -1
- package/package.json +18 -18
- package/src/browser/links/link-manager.ts +35 -26
- package/src/browser/links/link.ts +2 -19
- package/src/browser/links/validated-local-link-provider.ts +64 -36
- package/lib/common/terminal-link.d.ts +0 -28
- package/lib/common/terminal-link.d.ts.map +0 -1
- package/lib/common/terminal-link.js +0 -164
- package/lib/common/terminal-link.js.map +0 -1
- package/src/common/terminal-link.ts +0 -183
|
@@ -74,7 +74,6 @@ 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;
|
|
78
77
|
/**
|
|
79
78
|
* Returns line and column number of URl if that is present.
|
|
80
79
|
*
|
|
@@ -89,7 +88,6 @@ export declare class TerminalLinkManager extends Disposable {
|
|
|
89
88
|
extractLinkUrl(link: string): string | null;
|
|
90
89
|
}
|
|
91
90
|
export interface LineColumnInfo {
|
|
92
|
-
filePath: string;
|
|
93
91
|
lineNumber: number;
|
|
94
92
|
columnNumber: number;
|
|
95
93
|
}
|
|
@@ -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,7 +9,6 @@ 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");
|
|
13
12
|
const terminal_client_1 = require("../terminal.client");
|
|
14
13
|
const external_link_provider_adapter_1 = require("./external-link-provider-adapter");
|
|
15
14
|
const protocol_link_provider_1 = require("./protocol-link-provider");
|
|
@@ -124,23 +123,24 @@ let TerminalLinkManager = class TerminalLinkManager extends ide_core_common_1.Di
|
|
|
124
123
|
};
|
|
125
124
|
}
|
|
126
125
|
get _localLinkRegex() {
|
|
127
|
-
const baseLocalLinkClause = this._client.os === ide_core_common_1.OperatingSystem.Windows ?
|
|
126
|
+
const baseLocalLinkClause = this._client.os === ide_core_common_1.OperatingSystem.Windows ? validated_local_link_provider_1.winLocalLinkClause : validated_local_link_provider_1.unixLocalLinkClause;
|
|
128
127
|
// Append line and column number regex
|
|
129
|
-
return new RegExp(`${baseLocalLinkClause}(${
|
|
128
|
+
return new RegExp(`${baseLocalLinkClause}(${validated_local_link_provider_1.lineAndColumnClause})`);
|
|
130
129
|
}
|
|
131
130
|
async _handleLocalLink(link) {
|
|
132
|
-
|
|
133
|
-
const resolvedLink = await this._resolvePath(
|
|
131
|
+
// TODO: This gets resolved again but doesn't need to as it's already validated
|
|
132
|
+
const resolvedLink = await this._resolvePath(link);
|
|
134
133
|
if (!resolvedLink) {
|
|
135
134
|
return;
|
|
136
135
|
}
|
|
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 });
|
|
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('^' + validated_local_link_provider_1.winDrivePrefix) && !link.startsWith('\\\\?\\')) {
|
|
226
226
|
if (!cwd) {
|
|
227
227
|
// Abort if no workspace is open
|
|
228
228
|
return null;
|
|
@@ -263,31 +263,35 @@ 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
|
-
}
|
|
269
266
|
/**
|
|
270
267
|
* Returns line and column number of URl if that is present.
|
|
271
268
|
*
|
|
272
269
|
* @param link Url link which may contain line and column number.
|
|
273
270
|
*/
|
|
274
271
|
extractLineColumnInfo(link) {
|
|
275
|
-
var _a, _b, _c;
|
|
276
272
|
const matches = this._localLinkRegex.exec(link);
|
|
277
273
|
const lineColumnInfo = {
|
|
278
274
|
lineNumber: 1,
|
|
279
275
|
columnNumber: 1,
|
|
280
|
-
filePath: link,
|
|
281
276
|
};
|
|
282
277
|
if (!matches) {
|
|
283
278
|
return lineColumnInfo;
|
|
284
279
|
}
|
|
285
|
-
const
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
280
|
+
const lineAndColumnMatchIndex = this._client.os === ide_core_common_1.OperatingSystem.Windows ? validated_local_link_provider_1.winLineAndColumnMatchIndex : validated_local_link_provider_1.unixLineAndColumnMatchIndex;
|
|
281
|
+
for (let i = 0; i < validated_local_link_provider_1.lineAndColumnClause.length; i++) {
|
|
282
|
+
const lineMatchIndex = lineAndColumnMatchIndex + validated_local_link_provider_1.lineAndColumnClauseGroupCount * i;
|
|
283
|
+
const rowNumber = matches[lineMatchIndex];
|
|
284
|
+
if (rowNumber) {
|
|
285
|
+
lineColumnInfo['lineNumber'] = parseInt(rowNumber, 10);
|
|
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;
|
|
291
295
|
}
|
|
292
296
|
/**
|
|
293
297
|
* 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,7 +12,6 @@ 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?;
|
|
16
15
|
decorations: ILinkDecorations;
|
|
17
16
|
private readonly preferenceService;
|
|
18
17
|
private _tooltipScheduler;
|
|
@@ -20,19 +19,7 @@ export declare class TerminalLink extends Disposable implements ILink {
|
|
|
20
19
|
private _tooltipDisposable;
|
|
21
20
|
private readonly _onInvalidated;
|
|
22
21
|
get onInvalidated(): Event<void>;
|
|
23
|
-
constructor(_xterm: Terminal, range: IBufferRange, text: string, _viewportY: number, _activateCallback: (event: MouseEvent | undefined, uri: string,
|
|
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);
|
|
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 | undefined, _isHighConfidenceLink: boolean, label: string | undefined);
|
|
36
23
|
dispose(): void;
|
|
37
24
|
activate(event: MouseEvent | undefined, text: string): void;
|
|
38
25
|
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;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,GAAG,SAAS,EACX,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"}
|
|
@@ -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) {
|
|
19
19
|
super();
|
|
20
20
|
this._xterm = _xterm;
|
|
21
21
|
this.range = range;
|
|
@@ -25,7 +25,6 @@ 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;
|
|
29
28
|
this._onInvalidated = new ide_core_common_1.Emitter();
|
|
30
29
|
this.decorations = {
|
|
31
30
|
pointerCursor: false,
|
|
@@ -43,7 +42,7 @@ let TerminalLink = class TerminalLink extends ide_core_common_1.Disposable {
|
|
|
43
42
|
this._tooltipDisposable = undefined;
|
|
44
43
|
}
|
|
45
44
|
activate(event, text) {
|
|
46
|
-
this._activateCallback(event, text
|
|
45
|
+
this._activateCallback(event, text);
|
|
47
46
|
}
|
|
48
47
|
hover(event, text) {
|
|
49
48
|
// Listen for modifier before handing it off to the hover to handle so it gets disposed correctly
|
|
@@ -132,6 +131,6 @@ tslib_1.__decorate([
|
|
|
132
131
|
], TerminalLink.prototype, "preferenceService", void 0);
|
|
133
132
|
exports.TerminalLink = TerminalLink = tslib_1.__decorate([
|
|
134
133
|
(0, di_1.Injectable)({ multiple: true }),
|
|
135
|
-
tslib_1.__metadata("design:paramtypes", [Function, Object, String, Number, Function, Function, Boolean, Object
|
|
134
|
+
tslib_1.__metadata("design:paramtypes", [Function, Object, String, Number, Function, Function, Boolean, Object])
|
|
136
135
|
], TerminalLink);
|
|
137
136
|
//# 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,6 +5,17 @@ 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;
|
|
8
19
|
export declare class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider {
|
|
9
20
|
private readonly _xterm;
|
|
10
21
|
private readonly _client;
|
|
@@ -22,9 +33,8 @@ export declare class TerminalValidatedLocalLinkProvider extends TerminalBaseLink
|
|
|
22
33
|
isDirectory: boolean;
|
|
23
34
|
} | undefined) => void) => void);
|
|
24
35
|
protected _provideLinks(y: number): Promise<TerminalLink[]>;
|
|
25
|
-
private _extractLineInfoFromMatch;
|
|
26
|
-
protected get _localLinkRegex(): RegExp;
|
|
27
36
|
private detectLocalLink;
|
|
37
|
+
protected get _localLinkRegex(): RegExp;
|
|
28
38
|
private _handleLocalFolderLink;
|
|
29
39
|
private _isDirectoryInsideWorkspace;
|
|
30
40
|
}
|
|
@@ -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,EAAkB,WAAW,EAAmB,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAG9F,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;AAO1E,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,QASvB,CAAC;AAEV,eAAO,MAAM,cAAc,kCAAkC,CAAC;AAI9D,8FAA8F;AAC9F,eAAO,MAAM,kBAAkB,QAStB,CAAC;AAEV;mEACmE;AACnE,eAAO,MAAM,mBAAmB,QASE,CAAC;AAGnC,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAG9C,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAI/C,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;YAmEnD,eAAe;IAgE7B,SAAS,KAAK,eAAe,IAAI,MAAM,CAItC;YAEa,sBAAsB;YAatB,2BAA2B;CAS1C"}
|
|
@@ -5,17 +5,63 @@
|
|
|
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 = void 0;
|
|
8
|
+
exports.TerminalValidatedLocalLinkProvider = exports.lineAndColumnClauseGroupCount = exports.unixLineAndColumnMatchIndex = exports.winLineAndColumnMatchIndex = exports.lineAndColumnClause = exports.winLocalLinkClause = exports.winDrivePrefix = exports.unixLocalLinkClause = 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");
|
|
16
15
|
const base_1 = require("./base");
|
|
17
16
|
const helpers_1 = require("./helpers");
|
|
18
17
|
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;
|
|
19
65
|
let TerminalValidatedLocalLinkProvider = class TerminalValidatedLocalLinkProvider extends base_1.TerminalBaseLinkProvider {
|
|
20
66
|
constructor(_xterm, _client, _activateFileCallback, _wrapLinkHandler, _tooltipCallback, _validationCallback) {
|
|
21
67
|
super();
|
|
@@ -41,7 +87,7 @@ let TerminalValidatedLocalLinkProvider = class TerminalValidatedLocalLinkProvide
|
|
|
41
87
|
endLine++;
|
|
42
88
|
}
|
|
43
89
|
const text = (0, helpers_1.getXtermLineContent)(this._xterm.buffer.active, startLine, endLine, this._xterm.cols);
|
|
44
|
-
if (text.length >
|
|
90
|
+
if (text.length > MAX_LENGTH) {
|
|
45
91
|
return [];
|
|
46
92
|
}
|
|
47
93
|
// clone regex to do a global search on text
|
|
@@ -76,32 +122,17 @@ let TerminalValidatedLocalLinkProvider = class TerminalValidatedLocalLinkProvide
|
|
|
76
122
|
link = link.substring(2);
|
|
77
123
|
stringIndex += 2;
|
|
78
124
|
}
|
|
79
|
-
|
|
80
|
-
const lineInfo = this._extractLineInfoFromMatch(match);
|
|
81
|
-
const validatedLinks = await this.detectLocalLink(link, lines, startLine, stringIndex, 1, lineInfo);
|
|
125
|
+
const validatedLinks = await this.detectLocalLink(link, lines, startLine, stringIndex, 1);
|
|
82
126
|
if (validatedLinks.length > 0) {
|
|
83
127
|
result.push(...validatedLinks);
|
|
84
128
|
}
|
|
85
129
|
}
|
|
86
130
|
return result;
|
|
87
131
|
}
|
|
88
|
-
|
|
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) {
|
|
132
|
+
async detectLocalLink(text, bufferLines, startLine, stringIndex, offset) {
|
|
97
133
|
const result = [];
|
|
98
134
|
const validatedLink = await new Promise((r) => {
|
|
99
|
-
|
|
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) => {
|
|
135
|
+
this._validationCallback(text, async (result) => {
|
|
105
136
|
if (result) {
|
|
106
137
|
const label = result.isDirectory
|
|
107
138
|
? (await this._isDirectoryInsideWorkspace(result.uri))
|
|
@@ -133,7 +164,6 @@ let TerminalValidatedLocalLinkProvider = class TerminalValidatedLocalLinkProvide
|
|
|
133
164
|
tooltipCallback,
|
|
134
165
|
true,
|
|
135
166
|
label,
|
|
136
|
-
lineInfo,
|
|
137
167
|
]));
|
|
138
168
|
}
|
|
139
169
|
else {
|
|
@@ -146,6 +176,11 @@ let TerminalValidatedLocalLinkProvider = class TerminalValidatedLocalLinkProvide
|
|
|
146
176
|
}
|
|
147
177
|
return result;
|
|
148
178
|
}
|
|
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
|
+
}
|
|
149
184
|
async _handleLocalFolderLink(uri) {
|
|
150
185
|
// If the folder is within one of the window's workspaces, focus it in the explorer
|
|
151
186
|
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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensumi/ide-terminal-next",
|
|
3
|
-
"version": "3.8.3-next-
|
|
3
|
+
"version": "3.8.3-next-1747818383.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.8.3-next-
|
|
21
|
-
"@opensumi/ide-core-common": "3.8.3-next-
|
|
22
|
-
"@opensumi/ide-core-node": "3.8.3-next-
|
|
23
|
-
"@opensumi/ide-file-service": "3.8.3-next-
|
|
24
|
-
"@opensumi/ide-utils": "3.8.3-next-
|
|
20
|
+
"@opensumi/ide-connection": "3.8.3-next-1747818383.0",
|
|
21
|
+
"@opensumi/ide-core-common": "3.8.3-next-1747818383.0",
|
|
22
|
+
"@opensumi/ide-core-node": "3.8.3-next-1747818383.0",
|
|
23
|
+
"@opensumi/ide-file-service": "3.8.3-next-1747818383.0",
|
|
24
|
+
"@opensumi/ide-utils": "3.8.3-next-1747818383.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.8.3-next-
|
|
35
|
-
"@opensumi/ide-core-browser": "3.8.3-next-
|
|
36
|
-
"@opensumi/ide-dev-tool": "3.8.3-next-
|
|
37
|
-
"@opensumi/ide-editor": "3.8.3-next-
|
|
38
|
-
"@opensumi/ide-main-layout": "3.8.3-next-
|
|
39
|
-
"@opensumi/ide-monaco": "3.8.3-next-
|
|
40
|
-
"@opensumi/ide-overlay": "3.8.3-next-
|
|
41
|
-
"@opensumi/ide-status-bar": "3.8.3-next-
|
|
42
|
-
"@opensumi/ide-theme": "3.8.3-next-
|
|
43
|
-
"@opensumi/ide-variable": "3.8.3-next-
|
|
44
|
-
"@opensumi/ide-workspace": "3.8.3-next-
|
|
34
|
+
"@opensumi/ide-components": "3.8.3-next-1747818383.0",
|
|
35
|
+
"@opensumi/ide-core-browser": "3.8.3-next-1747818383.0",
|
|
36
|
+
"@opensumi/ide-dev-tool": "3.8.3-next-1747818383.0",
|
|
37
|
+
"@opensumi/ide-editor": "3.8.3-next-1747818383.0",
|
|
38
|
+
"@opensumi/ide-main-layout": "3.8.3-next-1747818383.0",
|
|
39
|
+
"@opensumi/ide-monaco": "3.8.3-next-1747818383.0",
|
|
40
|
+
"@opensumi/ide-overlay": "3.8.3-next-1747818383.0",
|
|
41
|
+
"@opensumi/ide-status-bar": "3.8.3-next-1747818383.0",
|
|
42
|
+
"@opensumi/ide-theme": "3.8.3-next-1747818383.0",
|
|
43
|
+
"@opensumi/ide-variable": "3.8.3-next-1747818383.0",
|
|
44
|
+
"@opensumi/ide-workspace": "3.8.3-next-1747818383.0",
|
|
45
45
|
"@types/http-proxy": "^1.17.2",
|
|
46
46
|
"http-proxy": "^1.18.0"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "5eaa172d18dc527bce2fb31fbf7d901aebc2c70a"
|
|
49
49
|
}
|
|
@@ -25,21 +25,22 @@ 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';
|
|
36
28
|
import { XTermCore } from '../../common/xterm-private';
|
|
37
29
|
import { TerminalClient } from '../terminal.client';
|
|
38
30
|
|
|
39
31
|
import { TerminalExternalLinkProviderAdapter } from './external-link-provider-adapter';
|
|
40
32
|
import { TerminalLink } from './link';
|
|
41
33
|
import { TerminalProtocolLinkProvider } from './protocol-link-provider';
|
|
42
|
-
import {
|
|
34
|
+
import {
|
|
35
|
+
TerminalValidatedLocalLinkProvider,
|
|
36
|
+
lineAndColumnClause,
|
|
37
|
+
lineAndColumnClauseGroupCount,
|
|
38
|
+
unixLineAndColumnMatchIndex,
|
|
39
|
+
unixLocalLinkClause,
|
|
40
|
+
winDrivePrefix,
|
|
41
|
+
winLineAndColumnMatchIndex,
|
|
42
|
+
winLocalLinkClause,
|
|
43
|
+
} from './validated-local-link-provider';
|
|
43
44
|
import { TerminalWordLinkProvider } from './word-link-provider';
|
|
44
45
|
|
|
45
46
|
const { posix, win32 } = path;
|
|
@@ -248,22 +249,23 @@ export class TerminalLinkManager extends Disposable {
|
|
|
248
249
|
protected get _localLinkRegex(): RegExp {
|
|
249
250
|
const baseLocalLinkClause = this._client.os === OperatingSystem.Windows ? winLocalLinkClause : unixLocalLinkClause;
|
|
250
251
|
// Append line and column number regex
|
|
251
|
-
return new RegExp(`${baseLocalLinkClause}(${
|
|
252
|
+
return new RegExp(`${baseLocalLinkClause}(${lineAndColumnClause})`);
|
|
252
253
|
}
|
|
253
254
|
|
|
254
255
|
private async _handleLocalLink(link: string): Promise<void> {
|
|
255
|
-
|
|
256
|
-
const resolvedLink = await this._resolvePath(
|
|
256
|
+
// TODO: This gets resolved again but doesn't need to as it's already validated
|
|
257
|
+
const resolvedLink = await this._resolvePath(link);
|
|
257
258
|
if (!resolvedLink) {
|
|
258
259
|
return;
|
|
259
260
|
}
|
|
261
|
+
const lineColumnInfo: LineColumnInfo = this.extractLineColumnInfo(link);
|
|
260
262
|
const range: ITextEditorSelection = {
|
|
261
263
|
startLineNumber: lineColumnInfo.lineNumber,
|
|
262
264
|
endLineNumber: lineColumnInfo.lineNumber,
|
|
263
265
|
startColumn: lineColumnInfo.columnNumber,
|
|
264
266
|
endColumn: lineColumnInfo.columnNumber,
|
|
265
267
|
};
|
|
266
|
-
await this._editorService.open(resolvedLink.uri, { range
|
|
268
|
+
await this._editorService.open(resolvedLink.uri, { range });
|
|
267
269
|
}
|
|
268
270
|
|
|
269
271
|
private _handleHypertextLink(url: string): void {
|
|
@@ -397,31 +399,39 @@ export class TerminalLinkManager extends Disposable {
|
|
|
397
399
|
}
|
|
398
400
|
}
|
|
399
401
|
|
|
400
|
-
private _extractLineInfoFromMatch(match: RegExpExecArray): ILinkInfo {
|
|
401
|
-
return extractLineInfoFromMatch(match);
|
|
402
|
-
}
|
|
403
|
-
|
|
404
402
|
/**
|
|
405
403
|
* Returns line and column number of URl if that is present.
|
|
406
404
|
*
|
|
407
405
|
* @param link Url link which may contain line and column number.
|
|
408
406
|
*/
|
|
409
407
|
public extractLineColumnInfo(link: string): LineColumnInfo {
|
|
410
|
-
const matches:
|
|
408
|
+
const matches: string[] | null = this._localLinkRegex.exec(link);
|
|
411
409
|
const lineColumnInfo: LineColumnInfo = {
|
|
412
410
|
lineNumber: 1,
|
|
413
411
|
columnNumber: 1,
|
|
414
|
-
filePath: link,
|
|
415
412
|
};
|
|
413
|
+
|
|
416
414
|
if (!matches) {
|
|
417
415
|
return lineColumnInfo;
|
|
418
416
|
}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
417
|
+
|
|
418
|
+
const lineAndColumnMatchIndex =
|
|
419
|
+
this._client.os === OperatingSystem.Windows ? winLineAndColumnMatchIndex : unixLineAndColumnMatchIndex;
|
|
420
|
+
for (let i = 0; i < lineAndColumnClause.length; i++) {
|
|
421
|
+
const lineMatchIndex = lineAndColumnMatchIndex + lineAndColumnClauseGroupCount * i;
|
|
422
|
+
const rowNumber = matches[lineMatchIndex];
|
|
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;
|
|
425
435
|
}
|
|
426
436
|
|
|
427
437
|
/**
|
|
@@ -439,7 +449,6 @@ export class TerminalLinkManager extends Disposable {
|
|
|
439
449
|
}
|
|
440
450
|
|
|
441
451
|
export interface LineColumnInfo {
|
|
442
|
-
filePath: string;
|
|
443
452
|
lineNumber: number;
|
|
444
453
|
columnNumber: number;
|
|
445
454
|
}
|
|
@@ -43,17 +43,7 @@ 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: (
|
|
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,
|
|
46
|
+
private readonly _activateCallback: (event: MouseEvent | undefined, uri: string) => void,
|
|
57
47
|
private readonly _tooltipCallback: (
|
|
58
48
|
link: TerminalLink,
|
|
59
49
|
viewportRange: IViewportRange,
|
|
@@ -62,13 +52,6 @@ export class TerminalLink extends Disposable implements ILink {
|
|
|
62
52
|
) => IDisposable | undefined,
|
|
63
53
|
private readonly _isHighConfidenceLink: boolean,
|
|
64
54
|
readonly label: string | undefined,
|
|
65
|
-
private readonly _lineInfo?: {
|
|
66
|
-
filePath?: string;
|
|
67
|
-
line?: number;
|
|
68
|
-
column?: number;
|
|
69
|
-
endLine?: number;
|
|
70
|
-
endColumn?: number;
|
|
71
|
-
},
|
|
72
55
|
) {
|
|
73
56
|
super();
|
|
74
57
|
this.decorations = {
|
|
@@ -88,7 +71,7 @@ export class TerminalLink extends Disposable implements ILink {
|
|
|
88
71
|
}
|
|
89
72
|
|
|
90
73
|
activate(event: MouseEvent | undefined, text: string): void {
|
|
91
|
-
this._activateCallback(event, text
|
|
74
|
+
this._activateCallback(event, text);
|
|
92
75
|
}
|
|
93
76
|
|
|
94
77
|
hover(event: MouseEvent, text: string): void {
|
|
@@ -7,18 +7,9 @@
|
|
|
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,
|
|
10
|
+
import { CommandService, 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
|
-
|
|
22
13
|
import { TerminalBaseLinkProvider } from './base';
|
|
23
14
|
import { convertLinkRangeToBuffer, getXtermLineContent } from './helpers';
|
|
24
15
|
import { FOLDER_IN_WORKSPACE_LABEL, FOLDER_NOT_IN_WORKSPACE_LABEL, OPEN_FILE_LABEL, TerminalLink } from './link';
|
|
@@ -27,6 +18,61 @@ import { XtermLinkMatcherHandler } from './link-manager';
|
|
|
27
18
|
import type { TerminalClient } from '../terminal.client';
|
|
28
19
|
import type { IBufferLine, IViewportRange, Terminal } from '@xterm/xterm';
|
|
29
20
|
|
|
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
|
+
|
|
30
76
|
@Injectable({ multiple: true })
|
|
31
77
|
export class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider {
|
|
32
78
|
@Autowired(INJECTOR_TOKEN)
|
|
@@ -122,9 +168,7 @@ export class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider
|
|
|
122
168
|
link = link.substring(2);
|
|
123
169
|
stringIndex += 2;
|
|
124
170
|
}
|
|
125
|
-
|
|
126
|
-
const lineInfo = this._extractLineInfoFromMatch(match);
|
|
127
|
-
const validatedLinks = await this.detectLocalLink(link, lines, startLine, stringIndex, 1, lineInfo);
|
|
171
|
+
const validatedLinks = await this.detectLocalLink(link, lines, startLine, stringIndex, 1);
|
|
128
172
|
|
|
129
173
|
if (validatedLinks.length > 0) {
|
|
130
174
|
result.push(...validatedLinks);
|
|
@@ -134,33 +178,16 @@ export class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider
|
|
|
134
178
|
return result;
|
|
135
179
|
}
|
|
136
180
|
|
|
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
|
-
|
|
147
181
|
private async detectLocalLink(
|
|
148
182
|
text: string,
|
|
149
183
|
bufferLines: IBufferLine[],
|
|
150
184
|
startLine: number,
|
|
151
185
|
stringIndex: number,
|
|
152
186
|
offset,
|
|
153
|
-
lineInfo?: ILinkInfo,
|
|
154
187
|
) {
|
|
155
188
|
const result: TerminalLink[] = [];
|
|
156
|
-
|
|
157
189
|
const validatedLink = await new Promise<TerminalLink | undefined>((r) => {
|
|
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) => {
|
|
190
|
+
this._validationCallback(text, async (result) => {
|
|
164
191
|
if (result) {
|
|
165
192
|
const label = result.isDirectory
|
|
166
193
|
? (await this._isDirectoryInsideWorkspace(result.uri))
|
|
@@ -174,7 +201,6 @@ export class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider
|
|
|
174
201
|
this._activateFileCallback(event, text);
|
|
175
202
|
}
|
|
176
203
|
});
|
|
177
|
-
|
|
178
204
|
// Convert the link text's string index into a wrapped buffer range
|
|
179
205
|
const bufferRange = convertLinkRangeToBuffer(
|
|
180
206
|
bufferLines,
|
|
@@ -187,14 +213,12 @@ export class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider
|
|
|
187
213
|
},
|
|
188
214
|
startLine,
|
|
189
215
|
);
|
|
190
|
-
|
|
191
216
|
const tooltipCallback = (
|
|
192
217
|
link: TerminalLink,
|
|
193
218
|
viewportRange: IViewportRange,
|
|
194
219
|
modifierDownCallback?: () => void,
|
|
195
220
|
modifierUpCallback?: () => void,
|
|
196
221
|
) => this._tooltipCallback(link, viewportRange, modifierDownCallback, modifierUpCallback);
|
|
197
|
-
|
|
198
222
|
r(
|
|
199
223
|
this.injector.get(TerminalLink, [
|
|
200
224
|
this._xterm,
|
|
@@ -205,7 +229,6 @@ export class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider
|
|
|
205
229
|
tooltipCallback,
|
|
206
230
|
true,
|
|
207
231
|
label,
|
|
208
|
-
lineInfo,
|
|
209
232
|
]),
|
|
210
233
|
);
|
|
211
234
|
} else {
|
|
@@ -213,13 +236,18 @@ export class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider
|
|
|
213
236
|
}
|
|
214
237
|
});
|
|
215
238
|
});
|
|
216
|
-
|
|
217
239
|
if (validatedLink) {
|
|
218
240
|
result.push(validatedLink);
|
|
219
241
|
}
|
|
220
242
|
return result;
|
|
221
243
|
}
|
|
222
244
|
|
|
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
|
+
|
|
223
251
|
private async _handleLocalFolderLink(uri: URI): Promise<void> {
|
|
224
252
|
// If the folder is within one of the window's workspaces, focus it in the explorer
|
|
225
253
|
if (await this._isDirectoryInsideWorkspace(uri)) {
|
|
@@ -1,28 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,164 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-link.js","sourceRoot":"","sources":["../../src/common/terminal-link.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,183 +0,0 @@
|
|
|
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
|
-
}
|