From 2528f75970e06db36780f26758b3c21c8e0e66c4 Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Wed, 6 Nov 2019 18:34:50 -0500 Subject: [PATCH] Fixes #83410 - FsProviders causing invalid links When more than one ext host FileSystemProvider was registered the linkification for the scheme of the provider was causing links to get incorrectly found because the link state machine was setting up the states incorrectly Should hopefully fix MicrosoftDocs/vsonline#28 as well --- src/vs/workbench/api/common/extHostFileSystem.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/vs/workbench/api/common/extHostFileSystem.ts b/src/vs/workbench/api/common/extHostFileSystem.ts index 4b82d98426b..2e16c4f8bff 100644 --- a/src/vs/workbench/api/common/extHostFileSystem.ts +++ b/src/vs/workbench/api/common/extHostFileSystem.ts @@ -44,6 +44,7 @@ class FsLinkProvider { const edges: Edge[] = []; let prevScheme: string | undefined; let prevState: State; + let lastState = State.LastKnownState; let nextState = State.LastKnownState; for (const scheme of schemes) { @@ -60,6 +61,8 @@ class FsLinkProvider { // keep creating new (next) states until the // end (and the BeforeColon-state) is reached if (pos + 1 === scheme.length) { + // Save the last state here, because we need to continue for the next scheme + lastState = nextState; nextState = State.BeforeColon; } else { nextState += 1; @@ -70,6 +73,8 @@ class FsLinkProvider { } prevScheme = scheme; + // Restore the last state + nextState = lastState; } // all link must match this pattern `:/`