From a354eb8b2283d37a6a1baa73ccccb73815740ec1 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Sun, 12 Apr 2020 15:35:00 -0700 Subject: [PATCH] Rename to validated --- .../browser/links/terminalLinkManager.ts | 6 +++-- ... => terminalValidatedLocalLinkProvider.ts} | 22 +------------------ ...erminalValidatedLocalLinkProvider.test.ts} | 6 ++--- 3 files changed, 8 insertions(+), 26 deletions(-) rename src/vs/workbench/contrib/terminal/browser/links/{terminalRegexLocalLinkProvider.ts => terminalValidatedLocalLinkProvider.ts} (88%) rename src/vs/workbench/contrib/terminal/test/browser/links/{terminalRegexLocalLinkProvider.test.ts => terminalValidatedLocalLinkProvider.test.ts} (94%) diff --git a/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts b/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts index 2e16150ca34..ce2668f1724 100644 --- a/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts +++ b/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts @@ -22,7 +22,7 @@ import { IMarkdownString, MarkdownString } from 'vs/base/common/htmlContent'; import { Emitter, Event } from 'vs/base/common/event'; import { ILogService } from 'vs/platform/log/common/log'; import { TerminalWebLinkProvider } from 'vs/workbench/contrib/terminal/browser/links/terminalWebLinkProvider'; -import { TerminalRegexLocalLinkProvider } from 'vs/workbench/contrib/terminal/browser/links/terminalRegexLocalLinkProvider'; +import { TerminalValidatedLocalLinkProvider } from 'vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider'; const pathPrefix = '(\\.\\.?|\\~)'; const pathSeparatorClause = '\\/'; @@ -83,6 +83,7 @@ export class TerminalLinkManager extends DisposableStore { private _linkMatchers: number[] = []; private _webLinksAddon: ITerminalAddon | undefined; private _linkProvider: IDisposable | undefined; + private _linkProvider2: IDisposable | undefined; private _hasBeforeHandleLinkListeners = false; protected static _LINK_INTERCEPT_THRESHOLD = LINK_INTERCEPT_THRESHOLD; @@ -174,6 +175,7 @@ export class TerminalLinkManager extends DisposableStore { this.registerLinkProvider(); } else { this._linkProvider?.dispose(); + this._linkProvider2?.dispose(); this._registerLinkMatchers(); } } @@ -292,7 +294,7 @@ export class TerminalLinkManager extends DisposableStore { this._tooltipCallback(event, link, location, this._handleLocalLink.bind(this, link)); }; const wrappedLinkActivateCallback = this._wrapLinkHandler(this._handleLocalLink.bind(this)); - this._linkProvider = this._xterm.registerLinkProvider(new TerminalRegexLocalLinkProvider(this._xterm, this._processManager.os || OS, wrappedLinkActivateCallback, tooltipLinkCallback, this._leaveCallback, this._validateLocalLink.bind(this))); + this._linkProvider2 = this._xterm.registerLinkProvider(new TerminalValidatedLocalLinkProvider(this._xterm, this._processManager.os || OS, wrappedLinkActivateCallback, tooltipLinkCallback, this._leaveCallback, this._validateLocalLink.bind(this))); } protected _wrapLinkHandler(handler: (link: string) => void): XtermLinkMatcherHandler { diff --git a/src/vs/workbench/contrib/terminal/browser/links/terminalRegexLocalLinkProvider.ts b/src/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.ts similarity index 88% rename from src/vs/workbench/contrib/terminal/browser/links/terminalRegexLocalLinkProvider.ts rename to src/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.ts index 37305aa6b89..852e9e5da4d 100644 --- a/src/vs/workbench/contrib/terminal/browser/links/terminalRegexLocalLinkProvider.ts +++ b/src/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.ts @@ -33,14 +33,7 @@ const lineAndColumnClause = [ '(([^:\\s\\(\\)<>\'\"\\[\\]]*)(:(\\d+))?(:(\\d+))?)' // (file path):336, (file path):336:9 ].join('|').replace(/ /g, `[${'\u00A0'} ]`); -// Changing any regex may effect this value, hence changes this as well if required. -// const winLineAndColumnMatchIndex = 12; -// const unixLineAndColumnMatchIndex = 11; - -// Each line and column clause have 6 groups (ie no. of expressions in round brackets) -// const lineAndColumnClauseGroupCount = 6; - -export class TerminalRegexLocalLinkProvider implements ILinkProvider { +export class TerminalValidatedLocalLinkProvider implements ILinkProvider { constructor( private readonly _xterm: Terminal, private readonly _processOperatingSystem: OperatingSystem, @@ -139,17 +132,4 @@ export class TerminalRegexLocalLinkProvider implements ILinkProvider { // Append line and column number regex return new RegExp(`${baseLocalLinkClause}(${lineAndColumnClause})`); } - - // private _positionIsInRange(position: IBufferCellPosition, range: IBufferRange): boolean { - // if (position.y < range.start.y || position.y > range.end.y) { - // return false; - // } - // if (position.y === range.start.y && position.x < range.start.x) { - // return false; - // } - // if (position.y === range.end.y && position.x > range.end.x) { - // return false; - // } - // return true; - // } } diff --git a/src/vs/workbench/contrib/terminal/test/browser/links/terminalRegexLocalLinkProvider.test.ts b/src/vs/workbench/contrib/terminal/test/browser/links/terminalValidatedLocalLinkProvider.test.ts similarity index 94% rename from src/vs/workbench/contrib/terminal/test/browser/links/terminalRegexLocalLinkProvider.test.ts rename to src/vs/workbench/contrib/terminal/test/browser/links/terminalValidatedLocalLinkProvider.test.ts index d84ac7762e0..68d60c0d6b9 100644 --- a/src/vs/workbench/contrib/terminal/test/browser/links/terminalRegexLocalLinkProvider.test.ts +++ b/src/vs/workbench/contrib/terminal/test/browser/links/terminalValidatedLocalLinkProvider.test.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as assert from 'assert'; -import { TerminalRegexLocalLinkProvider } from 'vs/workbench/contrib/terminal/browser/links/terminalRegexLocalLinkProvider'; +import { TerminalValidatedLocalLinkProvider } from 'vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider'; import { Terminal, ILink, IBufferRange, IBufferCellPosition } from 'xterm'; import { OperatingSystem } from 'vs/base/common/platform'; import { format } from 'vs/base/common/strings'; @@ -63,11 +63,11 @@ const supportedLinkFormats: LinkFormatInfo[] = [ { urlFormat: '{0}",{1}', line: '5' } ]; -suite('Workbench - TerminalRegexLocalLinkProvider', () => { +suite('Workbench - TerminalValidatedLocalLinkProvider', () => { async function assertLink(text: string, os: OperatingSystem, expected: { text: string, range: [number, number][] }) { const xterm = new Terminal(); // TODO: Test process manager - const provider = new TerminalRegexLocalLinkProvider(xterm, os, () => { }, () => { }, () => { }, (_, cb) => { cb(true); }); + const provider = new TerminalValidatedLocalLinkProvider(xterm, os, () => { }, () => { }, () => { }, (_, cb) => { cb(true); }); // Write the text and wait for the parser to finish await new Promise(r => xterm.write(text, r)); -- GitLab