From 27af7700683a7abdc9d4088e02addc3c721a1571 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 6 May 2020 06:16:36 -0700 Subject: [PATCH 1/2] Remove intersecting lower priority links Fixes #2848 --- src/browser/Linkifier2.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/browser/Linkifier2.ts b/src/browser/Linkifier2.ts index f468e4a4..14ee5f66 100644 --- a/src/browser/Linkifier2.ts +++ b/src/browser/Linkifier2.ts @@ -150,11 +150,39 @@ export class Linkifier2 extends Disposable implements ILinkifier2 { const linksWithState: ILinkWithState[] | undefined = links?.map(link => ({ link })); this._activeProviderReplies?.set(i, linksWithState); linkProvided = this._checkLinkProviderResult(i, position, linkProvided); + + // If all providers have responded, remove lower priority links that intersect ranges of + // higher priority links + if (this._activeProviderReplies?.size === this._linkProviders.length) { + this._removeIntersectingLinks(position.y, this._activeProviderReplies); + } }); } }); } + private _removeIntersectingLinks(y: number, replies: Map): void { + const occupiedCells = new Set(); + for (let i = 0; i < replies.size; i++) { + const providerReply = replies.get(i); + if (!providerReply) { + continue; + } + for (let i = 0; i < providerReply.length; i++) { + const linkWithState = providerReply[i]; + const startX = linkWithState.link.range.start.y < y ? 0 : linkWithState.link.range.start.x; + const endX = linkWithState.link.range.end.y > y ? this._bufferService.cols : linkWithState.link.range.end.x; + for (let x = startX; x <= endX; x++) { + if (occupiedCells.has(x)) { + providerReply.splice(i--, 1); + break; + } + occupiedCells.add(x); + } + } + } + } + private _checkLinkProviderResult(index: number, position: IBufferCellPosition, linkProvided: boolean): boolean { if (!this._activeProviderReplies) { return linkProvided; From 61667c1c2315aae652b3ed8d236c09f807f6350d Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 7 May 2020 07:52:11 +0000 Subject: [PATCH 2/2] Bump ts-loader from 7.0.2 to 7.0.3 Bumps [ts-loader](https://github.com/TypeStrong/ts-loader) from 7.0.2 to 7.0.3. - [Release notes](https://github.com/TypeStrong/ts-loader/releases) - [Changelog](https://github.com/TypeStrong/ts-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/TypeStrong/ts-loader/compare/v7.0.2...v7.0.3) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ab8c4561..c3220c51 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "nyc": "^15.0.1", "playwright-core": "^0.11.1", "source-map-loader": "^0.2.4", - "ts-loader": "^7.0.2", + "ts-loader": "^7.0.3", "typescript": "3.8", "utf8": "^3.0.0", "webpack": "^4.43.0", diff --git a/yarn.lock b/yarn.lock index 0ce9edb2..1118af72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5444,10 +5444,10 @@ triple-beam@^1.2.0, triple-beam@^1.3.0: resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== -ts-loader@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-7.0.2.tgz#465bc904aea4c331e9550e7c7d75dd17a0b7c24c" - integrity sha512-DwpZFB67RoILQHx42dMjSgv2STpacsQu5X+GD/H9ocd8IhU0m8p3b/ZrIln2KmcucC6xep2PdEMEblpWT71euA== +ts-loader@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-7.0.3.tgz#1ba06fd3dae612ecf8b952f89145f9ac7489805f" + integrity sha512-BXAHfPjm3J//20ibuI30M+xgLpdIng68p2H952QqbbmDk7SW72HV42k9Gop7rMxuHvrXWjazWhKuyr9D9kKe3A== dependencies: chalk "^2.3.0" enhanced-resolve "^4.0.0"