55 VersionedTextDocumentIdentifier ,
66} from 'vscode-languageserver' ;
77import { Document } from './Document' ;
8+ import { normalizeUri } from '../../utils' ;
89
910export type DocumentEvent = 'documentOpen' | 'documentChange' | 'documentClose' ;
1011
@@ -14,15 +15,17 @@ export type DocumentEvent = 'documentOpen' | 'documentChange' | 'documentClose';
1415export class DocumentManager {
1516 private emitter = new EventEmitter ( ) ;
1617 private openedInClient = new Set < string > ( ) ;
17- public documents : Map < string , Document > = new Map ( ) ;
18- public locked = new Set < string > ( ) ;
19- public deleteCandidates = new Set < string > ( ) ;
18+ private documents : Map < string , Document > = new Map ( ) ;
19+ private locked = new Set < string > ( ) ;
20+ private deleteCandidates = new Set < string > ( ) ;
2021
2122 constructor (
2223 private createDocument : ( textDocument : Pick < TextDocumentItem , 'text' | 'uri' > ) => Document ,
2324 ) { }
2425
2526 openDocument ( textDocument : Pick < TextDocumentItem , 'text' | 'uri' > ) : Document {
27+ textDocument = { ...textDocument , uri : normalizeUri ( textDocument . uri ) } ;
28+
2629 let document : Document ;
2730 if ( this . documents . has ( textDocument . uri ) ) {
2831 document = this . documents . get ( textDocument . uri ) ! ;
@@ -39,11 +42,11 @@ export class DocumentManager {
3942 }
4043
4144 lockDocument ( uri : string ) : void {
42- this . locked . add ( uri ) ;
45+ this . locked . add ( normalizeUri ( uri ) ) ;
4346 }
4447
4548 markAsOpenedInClient ( uri : string ) : void {
46- this . openedInClient . add ( uri ) ;
49+ this . openedInClient . add ( normalizeUri ( uri ) ) ;
4750 }
4851
4952 getAllOpenedByClient ( ) {
@@ -53,6 +56,8 @@ export class DocumentManager {
5356 }
5457
5558 releaseDocument ( uri : string ) : void {
59+ uri = normalizeUri ( uri ) ;
60+
5661 this . locked . delete ( uri ) ;
5762 this . openedInClient . delete ( uri ) ;
5863 if ( this . deleteCandidates . has ( uri ) ) {
@@ -62,6 +67,8 @@ export class DocumentManager {
6267 }
6368
6469 closeDocument ( uri : string ) {
70+ uri = normalizeUri ( uri ) ;
71+
6572 const document = this . documents . get ( uri ) ;
6673 if ( ! document ) {
6774 throw new Error ( 'Cannot call methods on an unopened document' ) ;
@@ -83,7 +90,7 @@ export class DocumentManager {
8390 textDocument : VersionedTextDocumentIdentifier ,
8491 changes : TextDocumentContentChangeEvent [ ] ,
8592 ) {
86- const document = this . documents . get ( textDocument . uri ) ;
93+ const document = this . documents . get ( normalizeUri ( textDocument . uri ) ) ;
8794 if ( ! document ) {
8895 throw new Error ( 'Cannot call methods on an unopened document' ) ;
8996 }
@@ -108,6 +115,10 @@ export class DocumentManager {
108115 this . emitter . on ( name , listener ) ;
109116 }
110117
118+ get ( uri : string ) {
119+ return this . documents . get ( normalizeUri ( uri ) ) ;
120+ }
121+
111122 private notify ( name : DocumentEvent , document : Document ) {
112123 this . emitter . emit ( name , document ) ;
113124 }
0 commit comments