mirror of
https://github.com/microsoft/vscode-extension-samples.git
synced 2026-04-27 16:55:44 +08:00
memfs - adopt latest, proposed, api
This commit is contained in:
@ -13,17 +13,17 @@ export function activate(context: vscode.ExtensionContext) {
|
||||
if (!initialzied) {
|
||||
initialzied = true;
|
||||
|
||||
memFs.create(vscode.Uri.parse(`memfs:/empty.txt`), { type: vscode.FileType2.File });
|
||||
memFs.create(vscode.Uri.parse(`memfs:/folder/`), { type: vscode.FileType2.Directory });
|
||||
memFs.create(vscode.Uri.parse(`memfs:/xyz/`), { type: vscode.FileType2.Directory });
|
||||
memFs.create(vscode.Uri.parse(`memfs:/xyz/abc`), { type: vscode.FileType2.Directory });
|
||||
memFs.create(vscode.Uri.parse(`memfs:/xyz/def`), { type: vscode.FileType2.Directory });
|
||||
memFs.create(vscode.Uri.parse(`memfs:/folder/empty.foo`), { type: vscode.FileType2.File });
|
||||
memFs.createDirectory(vscode.Uri.parse(`memfs:/folder/`));
|
||||
memFs.createDirectory(vscode.Uri.parse(`memfs:/xyz/`));
|
||||
memFs.createDirectory(vscode.Uri.parse(`memfs:/xyz/abc`));
|
||||
memFs.createDirectory(vscode.Uri.parse(`memfs:/xyz/def`));
|
||||
|
||||
memFs.writeFile(vscode.Uri.parse(`memfs:/empty.txt`), new Uint8Array(0));
|
||||
memFs.writeFile(vscode.Uri.parse(`memfs:/file.txt`), Buffer.from('foo'));
|
||||
memFs.writeFile(vscode.Uri.parse(`memfs:/folder/file.ts`), Buffer.from('let a:number = true; console.log(a);'));
|
||||
memFs.writeFile(vscode.Uri.parse(`memfs:/file.css`), Buffer.from('* { color: green; }'));
|
||||
memFs.writeFile(vscode.Uri.parse(`memfs:/large-rnd.foo`), randomData(10000));
|
||||
memFs.writeFile(vscode.Uri.parse(`memfs:/large-rnd.foo`), randomData(50000));
|
||||
memFs.writeFile(vscode.Uri.parse(`memfs:/folder/empty.foo`), new Uint8Array(0));
|
||||
memFs.writeFile(vscode.Uri.parse(`memfs:/folder/file.ts`), Buffer.from('let a:number = true; console.log(a);'));
|
||||
memFs.writeFile(vscode.Uri.parse(`memfs:/xyz/def/foo.md`), Buffer.from('*MemFS*'));
|
||||
memFs.writeFile(vscode.Uri.parse(`memfs:/xyz/def/foo.bin`), Buffer.from([0, 0, 0, 1, 7, 0, 0, 1, 1]));
|
||||
}
|
||||
|
||||
@ -46,7 +46,7 @@ type Entry = File | Directory;
|
||||
|
||||
export class MemFS implements vscode.FileSystemProvider2 {
|
||||
|
||||
_version: 5 = 5;
|
||||
_version: 6 = 6;
|
||||
|
||||
private _root = new Directory('');
|
||||
private _data = new WeakMap<Entry, Uint8Array>();
|
||||
@ -118,16 +118,12 @@ export class MemFS implements vscode.FileSystemProvider2 {
|
||||
this._fireSoon({ type: vscode.FileChangeType2.Changed, uri: dirname }, { uri, type: vscode.FileChangeType2.Deleted });
|
||||
}
|
||||
|
||||
create(uri: vscode.Uri, options: { type: vscode.FileType2; }): vscode.FileStat2 {
|
||||
let dirname = uri.with({ path: path.posix.dirname(uri.path) });
|
||||
createDirectory(uri: vscode.Uri): vscode.FileStat2 {
|
||||
let basename = path.posix.basename(uri.path);
|
||||
let dirname = uri.with({ path: path.posix.dirname(uri.path) });
|
||||
let parent = this._lookupDir(dirname);
|
||||
let entry: Entry;
|
||||
if (options.type === vscode.FileType2.Directory) {
|
||||
entry = new Directory(basename);
|
||||
} else {
|
||||
entry = new File(basename);
|
||||
}
|
||||
|
||||
let entry = new Directory(basename);
|
||||
parent.entries.set(entry.name, entry);
|
||||
parent.mtime = Date.now();
|
||||
parent.size += 1;
|
||||
|
||||
11
fsprovider-sample/src/vscode.proposed.d.ts
vendored
11
fsprovider-sample/src/vscode.proposed.d.ts
vendored
@ -232,7 +232,7 @@ declare module 'vscode' {
|
||||
// todo@joh add open/close calls?
|
||||
export interface FileSystemProvider2 {
|
||||
|
||||
_version: 5;
|
||||
_version: 6;
|
||||
|
||||
/**
|
||||
* An event to signal that a resource has been created, changed, or deleted.
|
||||
@ -293,8 +293,13 @@ declare module 'vscode' {
|
||||
// ? useTrash, expose trash
|
||||
delete(uri: Uri, token: CancellationToken): void | Thenable<void>;
|
||||
|
||||
// todo@remote
|
||||
create(uri: Uri, options: { type: FileType2 }, token: CancellationToken): FileStat2 | Thenable<FileStat2>;
|
||||
/**
|
||||
* Create a new directory. *Note* that new files are created via `write`-calls.
|
||||
*
|
||||
* @param uri
|
||||
* @param token
|
||||
*/
|
||||
createDirectory(uri: Uri, token: CancellationToken): FileStat2 | Thenable<FileStat2>;
|
||||
}
|
||||
|
||||
export namespace workspace {
|
||||
|
||||
Reference in New Issue
Block a user