From ca697139a8a12ffbbdfc5e6a77140644cc1fe5f6 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 9 Jun 2020 11:34:43 +0200 Subject: [PATCH 1/2] Always use canonical uri inside `createModelReference` --- .../textmodelResolver/common/textModelResolverService.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts b/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts index de7f325f0caa5..9a6208353b46d 100644 --- a/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts +++ b/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts @@ -17,6 +17,7 @@ import { IFileService } from 'vs/platform/files/common/files'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { IUndoRedoService } from 'vs/platform/undoRedo/common/undoRedo'; import { ModelUndoRedoParticipant } from 'vs/editor/common/services/modelUndoRedoParticipant'; +import { IUriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentity'; class ResourceModelCollection extends ReferenceCollection> { @@ -174,13 +175,17 @@ export class TextModelResolverService extends Disposable implements ITextModelSe @IInstantiationService private readonly instantiationService: IInstantiationService, @IFileService private readonly fileService: IFileService, @IUndoRedoService private readonly undoRedoService: IUndoRedoService, - @IModelService private readonly modelService: IModelService + @IModelService private readonly modelService: IModelService, + @IUriIdentityService private readonly uriIdentityService: IUriIdentityService, ) { super(); this._register(new ModelUndoRedoParticipant(this.modelService, this, this.undoRedoService)); } async createModelReference(resource: URI): Promise> { + + resource = this.uriIdentityService.asCanonicalUri(resource); + const ref = this.resourceModelCollection.acquire(resource.toString()); try { From 2c6e0864e560ac19b49f955d25caca66570a7f74 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 9 Jun 2020 14:22:03 +0200 Subject: [PATCH 2/2] Update src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts Co-authored-by: Benjamin Pasero --- .../textmodelResolver/common/textModelResolverService.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts b/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts index 9a6208353b46d..7c66d3748cd2b 100644 --- a/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts +++ b/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts @@ -184,6 +184,9 @@ export class TextModelResolverService extends Disposable implements ITextModelSe async createModelReference(resource: URI): Promise> { + // From this moment on, only operate on the canonical resource + // to ensure we reduce the chance of resolving the same resource + // with different resource forms (e.g. path casing on Windows) resource = this.uriIdentityService.asCanonicalUri(resource); const ref = this.resourceModelCollection.acquire(resource.toString());