Skip to content

Commit 014fed3

Browse files
committed
fix #552 load server-side code snippets from isfs workspace roots
1 parent 5da9d3d commit 014fed3

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

src/providers/FileSystemPovider/FileSystemProvider.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export class FileSystemProvider implements vscode.FileSystemProvider {
4141
}
4242

4343
public async readDirectory(uri: vscode.Uri): Promise<[string, vscode.FileType][]> {
44+
uri = redirectDotvscodeRoot(uri);
4445
const parent = await this._lookupAsDirectory(uri);
4546
const api = new AtelierAPI(uri);
4647
if (!api.active) {
@@ -129,6 +130,7 @@ export class FileSystemProvider implements vscode.FileSystemProvider {
129130
}
130131

131132
public createDirectory(uri: vscode.Uri): void | Thenable<void> {
133+
uri = redirectDotvscodeRoot(uri);
132134
const basename = path.posix.basename(uri.path);
133135
const dirname = uri.with({ path: path.posix.dirname(uri.path) });
134136
return this._lookupAsDirectory(dirname).then((parent) => {
@@ -376,6 +378,7 @@ export class FileSystemProvider implements vscode.FileSystemProvider {
376378
}
377379

378380
private async _lookupParentDirectory(uri: vscode.Uri): Promise<Directory> {
381+
uri = redirectDotvscodeRoot(uri);
379382
const dirname = uri.with({ path: path.posix.dirname(uri.path) });
380383
return await this._lookupAsDirectory(dirname);
381384
}

src/utils/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -363,21 +363,21 @@ export function redirectDotvscodeRoot(uri: vscode.Uri): vscode.Uri {
363363
if (!schemas.includes(uri.scheme)) {
364364
return uri;
365365
}
366-
const dotMatch = uri.path.match(/^\/(\.[^/]*)\/(.*)$/);
366+
const dotMatch = uri.path.match(/^\/(\.[^/]*)(\/.*)?$/);
367367
if (dotMatch && dotMatch[1] === ".vscode") {
368368
let namespace: string;
369369
const nsMatch = `&${uri.query}&`.match(/&ns=([^&]+)&/);
370370
if (nsMatch) {
371371
namespace = nsMatch[1];
372372
const newQueryString = (("&" + uri.query).replace(`ns=${namespace}`, "ns=%SYS") + "&csp=1").slice(1);
373-
return uri.with({ path: `/_vscode/${namespace}/${dotMatch[2]}`, query: newQueryString });
373+
return uri.with({ path: `/_vscode/${namespace}${dotMatch[2] || ""}`, query: newQueryString });
374374
} else {
375375
const parts = uri.authority.split(":");
376376
if (parts.length === 2) {
377377
namespace = parts[1];
378378
return uri.with({
379379
authority: `${parts[0]}:%SYS`,
380-
path: `/_vscode/${namespace}/${dotMatch[2]}`,
380+
path: `/_vscode/${namespace}${dotMatch[2] || ""}`,
381381
query: uri.query + "&csp=1",
382382
});
383383
}

0 commit comments

Comments
 (0)