From 5bcfb8e897669f0069c73c69506d6371dd7ae3d8 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 4 Feb 2020 22:05:52 +0100 Subject: [PATCH] Fixes #67022: Do not terminate at space when in square brackets --- src/vs/editor/common/modes/linkComputer.ts | 7 +++++++ src/vs/editor/test/common/modes/linkComputer.test.ts | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/vs/editor/common/modes/linkComputer.ts b/src/vs/editor/common/modes/linkComputer.ts index 0b70ffe5ef4..f3097d5f6f4 100644 --- a/src/vs/editor/common/modes/linkComputer.ts +++ b/src/vs/editor/common/modes/linkComputer.ts @@ -223,6 +223,7 @@ export class LinkComputer { let state = State.Start; let hasOpenParens = false; let hasOpenSquareBracket = false; + let inSquareBrackets = false; let hasOpenCurlyBracket = false; while (j < len) { @@ -241,10 +242,12 @@ export class LinkComputer { chClass = (hasOpenParens ? CharacterClass.None : CharacterClass.ForceTermination); break; case CharCode.OpenSquareBracket: + inSquareBrackets = true; hasOpenSquareBracket = true; chClass = CharacterClass.None; break; case CharCode.CloseSquareBracket: + inSquareBrackets = false; chClass = (hasOpenSquareBracket ? CharacterClass.None : CharacterClass.ForceTermination); break; case CharCode.OpenCurlyBrace: @@ -272,6 +275,10 @@ export class LinkComputer { // `|` terminates a link if the link began with `|` chClass = (linkBeginChCode === CharCode.Pipe) ? CharacterClass.ForceTermination : CharacterClass.None; break; + case CharCode.Space: + // ` ` allow space in between [ and ] + chClass = (inSquareBrackets ? CharacterClass.None : CharacterClass.ForceTermination); + break; default: chClass = classifier.get(chCode); } diff --git a/src/vs/editor/test/common/modes/linkComputer.test.ts b/src/vs/editor/test/common/modes/linkComputer.test.ts index 1e07c4e310a..9ed515c2a2e 100644 --- a/src/vs/editor/test/common/modes/linkComputer.test.ts +++ b/src/vs/editor/test/common/modes/linkComputer.test.ts @@ -216,4 +216,11 @@ suite('Editor Modes - Link Computer', () => { ' https://portal.azure.com ' ); }); + + test('issue #67022: Space as end of hyperlink isn\'t always good idea', () => { + assertLink( + 'aa https://foo.bar/[this is foo site] aa', + ' https://foo.bar/[this is foo site] ' + ); + }); }); -- GitLab