@@ -8,7 +8,7 @@ export type Entry = File | Directory;
88
99export class FileSystemProvider implements vscode . FileSystemProvider {
1010
11- public root = new Directory ( "" ) ;
11+ public root = new Directory ( "" , "" ) ;
1212
1313 public readonly onDidChangeFile : vscode . Event < vscode . FileChangeEvent [ ] > ;
1414
@@ -34,8 +34,9 @@ export class FileSystemProvider implements vscode.FileSystemProvider {
3434 . then ( ( data ) => data . result . content || [ ] )
3535 . then ( ( data ) => data . map ( ( item ) => {
3636 const name = item . Name ;
37+ const fullName = folder === "" ? name : folder + "/" + name ;
3738 if ( item . IsDirectory . length ) {
38- parent . entries . set ( name , new Directory ( name ) ) ;
39+ parent . entries . set ( name , new Directory ( name , fullName ) ) ;
3940 return [ name , vscode . FileType . Directory ] ;
4041 } else {
4142 return [ name , vscode . FileType . File ] ;
@@ -51,7 +52,7 @@ export class FileSystemProvider implements vscode.FileSystemProvider {
5152 const dirname = uri . with ( { path : path . posix . dirname ( uri . path ) } ) ;
5253 return this . _lookupAsDirectory ( dirname )
5354 . then ( ( parent ) => {
54- const entry = new Directory ( basename ) ;
55+ const entry = new Directory ( basename , uri . path ) ;
5556 parent . entries . set ( entry . name , entry ) ;
5657 parent . mtime = Date . now ( ) ;
5758 parent . size += 1 ;
@@ -110,10 +111,18 @@ export class FileSystemProvider implements vscode.FileSystemProvider {
110111 let child : Entry | undefined ;
111112 if ( entry instanceof Directory ) {
112113 child = entry . entries . get ( part ) ;
114+ if ( ! part . includes ( "." ) ) {
115+ const fullName = entry . name === "" ? part : entry . fullName + "/" + part ;
116+ child = new Directory ( part , fullName ) ;
117+ entry . entries . set ( part , child ) ;
118+ }
113119 }
114120 if ( ! child ) {
115- return this . _lookupAsFile ( uri ) ;
116- // throw vscode.FileSystemError.FileNotFound(uri);
121+ if ( part . includes ( "." ) ) {
122+ return this . _lookupAsFile ( uri ) ;
123+ } else {
124+ throw vscode . FileSystemError . FileNotFound ( uri ) ;
125+ }
117126 }
118127 entry = child ;
119128 }
@@ -149,7 +158,7 @@ export class FileSystemProvider implements vscode.FileSystemProvider {
149158 } ) ,
150159 )
151160 . catch ( ( error ) => {
152- throw vscode . FileSystemError . FileNotFound ( ) ;
161+ throw vscode . FileSystemError . FileNotFound ( uri ) ;
153162 } ) ;
154163 }
155164
0 commit comments