@@ -8,7 +8,7 @@ export type Entry = File | Directory;
8
8
9
9
export class FileSystemProvider implements vscode . FileSystemProvider {
10
10
11
- public root = new Directory ( "" ) ;
11
+ public root = new Directory ( "" , "" ) ;
12
12
13
13
public readonly onDidChangeFile : vscode . Event < vscode . FileChangeEvent [ ] > ;
14
14
@@ -34,8 +34,9 @@ export class FileSystemProvider implements vscode.FileSystemProvider {
34
34
. then ( ( data ) => data . result . content || [ ] )
35
35
. then ( ( data ) => data . map ( ( item ) => {
36
36
const name = item . Name ;
37
+ const fullName = folder === "" ? name : folder + "/" + name ;
37
38
if ( item . IsDirectory . length ) {
38
- parent . entries . set ( name , new Directory ( name ) ) ;
39
+ parent . entries . set ( name , new Directory ( name , fullName ) ) ;
39
40
return [ name , vscode . FileType . Directory ] ;
40
41
} else {
41
42
return [ name , vscode . FileType . File ] ;
@@ -51,7 +52,7 @@ export class FileSystemProvider implements vscode.FileSystemProvider {
51
52
const dirname = uri . with ( { path : path . posix . dirname ( uri . path ) } ) ;
52
53
return this . _lookupAsDirectory ( dirname )
53
54
. then ( ( parent ) => {
54
- const entry = new Directory ( basename ) ;
55
+ const entry = new Directory ( basename , uri . path ) ;
55
56
parent . entries . set ( entry . name , entry ) ;
56
57
parent . mtime = Date . now ( ) ;
57
58
parent . size += 1 ;
@@ -110,10 +111,18 @@ export class FileSystemProvider implements vscode.FileSystemProvider {
110
111
let child : Entry | undefined ;
111
112
if ( entry instanceof Directory ) {
112
113
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
+ }
113
119
}
114
120
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
+ }
117
126
}
118
127
entry = child ;
119
128
}
@@ -149,7 +158,7 @@ export class FileSystemProvider implements vscode.FileSystemProvider {
149
158
} ) ,
150
159
)
151
160
. catch ( ( error ) => {
152
- throw vscode . FileSystemError . FileNotFound ( ) ;
161
+ throw vscode . FileSystemError . FileNotFound ( uri ) ;
153
162
} ) ;
154
163
}
155
164
0 commit comments