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
This commit is contained in:
Eric Amodio 2019-11-06 18:34:50 -05:00
parent 83253517fd
commit 2528f75970

View file

@ -44,6 +44,7 @@ class FsLinkProvider {
const edges: Edge[] = []; const edges: Edge[] = [];
let prevScheme: string | undefined; let prevScheme: string | undefined;
let prevState: State; let prevState: State;
let lastState = State.LastKnownState;
let nextState = State.LastKnownState; let nextState = State.LastKnownState;
for (const scheme of schemes) { for (const scheme of schemes) {
@ -60,6 +61,8 @@ class FsLinkProvider {
// keep creating new (next) states until the // keep creating new (next) states until the
// end (and the BeforeColon-state) is reached // end (and the BeforeColon-state) is reached
if (pos + 1 === scheme.length) { if (pos + 1 === scheme.length) {
// Save the last state here, because we need to continue for the next scheme
lastState = nextState;
nextState = State.BeforeColon; nextState = State.BeforeColon;
} else { } else {
nextState += 1; nextState += 1;
@ -70,6 +73,8 @@ class FsLinkProvider {
} }
prevScheme = scheme; prevScheme = scheme;
// Restore the last state
nextState = lastState;
} }
// all link must match this pattern `<scheme>:/<more>` // all link must match this pattern `<scheme>:/<more>`