diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index d2580a04439..a2797828467 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -11,46 +11,6 @@ declare module 'vscode' { export function sampleFunction(): Thenable; } - //#region Joh: file system provider (OLD) - - export enum DeprecatedFileChangeType { - Updated = 0, - Added = 1, - Deleted = 2 - } - export interface DeprecatedFileChange { - type: DeprecatedFileChangeType; - resource: Uri; - } - export enum DeprecatedFileType { - File = 0, - Dir = 1, - Symlink = 2 - } - export interface DeprecatedFileStat { - id: number | string; - mtime: number; - size: number; - type: DeprecatedFileType; - } - export interface DeprecatedFileSystemProvider { - readonly onDidChange?: Event; - utimes(resource: Uri, mtime: number, atime: number): Thenable; - stat(resource: Uri): Thenable; - read(resource: Uri, offset: number, length: number, progress: Progress): Thenable; - write(resource: Uri, content: Uint8Array): Thenable; - move(resource: Uri, target: Uri): Thenable; - mkdir(resource: Uri): Thenable; - readdir(resource: Uri): Thenable<[Uri, DeprecatedFileStat][]>; - rmdir(resource: Uri): Thenable; - unlink(resource: Uri): Thenable; - } - export namespace workspace { - export function registerDeprecatedFileSystemProvider(scheme: string, provider: DeprecatedFileSystemProvider): Disposable; - } - - //#endregion - //#region Joh: remote, search provider export interface TextSearchQuery { diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index cc5ebbc10fc..107015908c5 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -560,9 +560,6 @@ export function createApiFactory( registerFileSystemProvider(scheme, provider, options) { return extHostFileSystem.registerFileSystemProvider(scheme, provider, options); }, - registerDeprecatedFileSystemProvider: proposedApiFunction(extension, (scheme, provider) => { - return extHostFileSystem.registerDeprecatedFileSystemProvider(scheme, provider); - }), registerSearchProvider: proposedApiFunction(extension, (scheme, provider) => { return extHostSearch.registerSearchProvider(scheme, provider); }), @@ -743,8 +740,6 @@ export function createApiFactory( ConfigurationTarget: extHostTypes.ConfigurationTarget, RelativePattern: extHostTypes.RelativePattern, - DeprecatedFileChangeType: extHostTypes.DeprecatedFileChangeType, - DeprecatedFileType: extHostTypes.DeprecatedFileType, FileChangeType: extHostTypes.FileChangeType, FileType: files.FileType, FileSystemError: extHostTypes.FileSystemError, diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index d914d922193..2fa4cc8844f 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -6,15 +6,13 @@ import URI, { UriComponents } from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; -import { Event, mapEvent } from 'vs/base/common/event'; import { MainContext, IMainContext, ExtHostFileSystemShape, MainThreadFileSystemShape, IFileChangeDto } from './extHost.protocol'; import * as vscode from 'vscode'; import * as files from 'vs/platform/files/common/files'; -import * as path from 'path'; import { IDisposable } from 'vs/base/common/lifecycle'; import { asWinJsPromise } from 'vs/base/common/async'; import { values } from 'vs/base/common/map'; -import { Range, DeprecatedFileType, DeprecatedFileChangeType, FileChangeType } from 'vs/workbench/api/node/extHostTypes'; +import { Range, FileChangeType } from 'vs/workbench/api/node/extHostTypes'; import { ExtHostLanguageFeatures } from 'vs/workbench/api/node/extHostLanguageFeatures'; import { Schemas } from 'vs/base/common/network'; @@ -34,7 +32,7 @@ class FsLinkProvider implements vscode.DocumentLinkProvider { } } - provideDocumentLinks(document: vscode.TextDocument, token: vscode.CancellationToken): vscode.ProviderResult { + provideDocumentLinks(document: vscode.TextDocument): vscode.ProviderResult { if (this._schemes.size === 0) { return undefined; } @@ -60,106 +58,6 @@ class FsLinkProvider implements vscode.DocumentLinkProvider { } } -class FileSystemProviderShim implements vscode.FileSystemProvider { - - onDidChangeFile: vscode.Event; - - constructor(private readonly _delegate: vscode.DeprecatedFileSystemProvider) { - if (!this._delegate.onDidChange) { - this.onDidChangeFile = Event.None; - } else { - this.onDidChangeFile = mapEvent(this._delegate.onDidChange, old => old.map(FileSystemProviderShim._modernizeFileChange)); - } - } - - watch(uri: vscode.Uri, options: {}): vscode.Disposable { - // does nothing because in the old API there was no notion of - // watch and provider decide what file events to generate... - return { dispose() { } }; - } - - stat(resource: vscode.Uri): Thenable { - return this._delegate.stat(resource).then(stat => FileSystemProviderShim._modernizeFileStat(stat)); - } - rename(oldUri: vscode.Uri, newUri: vscode.Uri): Thenable { - return this._delegate.move(oldUri, newUri).then(stat => void 0); - } - readDirectory(resource: vscode.Uri): Thenable<[string, vscode.FileType][]> { - return this._delegate.readdir(resource).then(tuples => { - return tuples.map(tuple => <[string, vscode.FileType]>[path.posix.basename(tuple[0].path), FileSystemProviderShim._modernizeFileStat(tuple[1]).type]); - }); - } - - private static _modernizeFileStat(stat: vscode.DeprecatedFileStat): vscode.FileStat { - let { mtime, size, type } = stat; - let newType: files.FileType; - - // no support for bitmask, effectively no support for symlinks - switch (type) { - case DeprecatedFileType.Dir: - newType = files.FileType.Directory; - break; - case DeprecatedFileType.File: - newType = files.FileType.File; - break; - case DeprecatedFileType.Symlink: - newType = files.FileType.File & files.FileType.SymbolicLink; - break; - } - return { type: newType, ctime: 0, mtime, size }; - } - - private static _modernizeFileChange(e: vscode.DeprecatedFileChange): vscode.FileChangeEvent { - let { resource, type } = e; - let newType: vscode.FileChangeType; - switch (type) { - case DeprecatedFileChangeType.Updated: - newType = FileChangeType.Changed; - break; - case DeprecatedFileChangeType.Added: - newType = FileChangeType.Created; - break; - case DeprecatedFileChangeType.Deleted: - newType = FileChangeType.Deleted; - break; - - } - return { uri: resource, type: newType }; - } - - // --- delete/create file or folder - - delete(resource: vscode.Uri): Thenable { - return this._delegate.stat(resource).then(stat => { - if (stat.type === DeprecatedFileType.Dir) { - return this._delegate.rmdir(resource); - } else { - return this._delegate.unlink(resource); - } - }); - } - createDirectory(resource: vscode.Uri): Thenable { - return this._delegate.mkdir(resource).then(stat => void 0); - } - - // --- read/write - - readFile(resource: vscode.Uri): Thenable { - let chunks: Buffer[] = []; - return this._delegate.read(resource, 0, -1, { - report(data) { - chunks.push(Buffer.from(data)); - } - }).then(() => { - return Buffer.concat(chunks); - }); - } - - writeFile(resource: vscode.Uri, content: Uint8Array, options: files.FileWriteOptions): Thenable { - return this._delegate.write(resource, content); - } -} - export class ExtHostFileSystem implements ExtHostFileSystemShape { private readonly _proxy: MainThreadFileSystemShape; @@ -185,10 +83,6 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { extHostLanguageFeatures.registerDocumentLinkProvider('*', this._linkProvider); } - registerDeprecatedFileSystemProvider(scheme: string, provider: vscode.DeprecatedFileSystemProvider) { - return this.registerFileSystemProvider(scheme, new FileSystemProviderShim(provider)); - } - registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, options: { isCaseSensitive?: boolean } = {}) { if (this._usedSchemes.has(scheme)) { @@ -252,15 +146,15 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { } $stat(handle: number, resource: UriComponents): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).stat(URI.revive(resource))).then(ExtHostFileSystem._asIStat); + return asWinJsPromise(() => this._fsProvider.get(handle).stat(URI.revive(resource))).then(ExtHostFileSystem._asIStat); } $readdir(handle: number, resource: UriComponents): TPromise<[string, files.FileType][], any> { - return asWinJsPromise(token => this._fsProvider.get(handle).readDirectory(URI.revive(resource))); + return asWinJsPromise(() => this._fsProvider.get(handle).readDirectory(URI.revive(resource))); } $readFile(handle: number, resource: UriComponents): TPromise { - return asWinJsPromise(token => { + return asWinJsPromise(() => { return this._fsProvider.get(handle).readFile(URI.revive(resource)); }).then(data => { return Buffer.isBuffer(data) ? data.toString('base64') : Buffer.from(data.buffer, data.byteOffset, data.byteLength).toString('base64'); @@ -268,33 +162,33 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { } $writeFile(handle: number, resource: UriComponents, base64Content: string, opts: files.FileWriteOptions): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).writeFile(URI.revive(resource), Buffer.from(base64Content, 'base64'), opts)); + return asWinJsPromise(() => this._fsProvider.get(handle).writeFile(URI.revive(resource), Buffer.from(base64Content, 'base64'), opts)); } $delete(handle: number, resource: UriComponents): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).delete(URI.revive(resource), { recursive: true })); + return asWinJsPromise(() => this._fsProvider.get(handle).delete(URI.revive(resource), { recursive: true })); } $rename(handle: number, oldUri: UriComponents, newUri: UriComponents, opts: files.FileOverwriteOptions): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri), opts)); + return asWinJsPromise(() => this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri), opts)); } $copy(handle: number, oldUri: UriComponents, newUri: UriComponents, opts: files.FileOverwriteOptions): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).copy(URI.revive(oldUri), URI.revive(newUri), opts)); + return asWinJsPromise(() => this._fsProvider.get(handle).copy(URI.revive(oldUri), URI.revive(newUri), opts)); } $mkdir(handle: number, resource: UriComponents): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).createDirectory(URI.revive(resource))); + return asWinJsPromise(() => this._fsProvider.get(handle).createDirectory(URI.revive(resource))); } $watch(handle: number, session: number, resource: UriComponents, opts: files.IWatchOptions): void { - asWinJsPromise(token => { + asWinJsPromise(() => { let subscription = this._fsProvider.get(handle).watch(URI.revive(resource), opts); this._watches.set(session, subscription); }); } - $unwatch(handle: number, session: number): void { + $unwatch(session: number): void { let subscription = this._watches.get(session); if (subscription) { subscription.dispose(); diff --git a/src/vs/workbench/api/node/extHostTypes.ts b/src/vs/workbench/api/node/extHostTypes.ts index d8285ea3893..2d705c4f19a 100644 --- a/src/vs/workbench/api/node/extHostTypes.ts +++ b/src/vs/workbench/api/node/extHostTypes.ts @@ -1845,12 +1845,6 @@ export enum LogLevel { } //#region file api -// todo@remote -export enum DeprecatedFileChangeType { - Updated = 0, - Added = 1, - Deleted = 2 -} export enum FileChangeType { Changed = 1, @@ -1858,12 +1852,6 @@ export enum FileChangeType { Deleted = 3, } -export enum DeprecatedFileType { - File = 0, - Dir = 1, - Symlink = 2 -} - export class FileSystemError extends Error { static FileExists(messageOrUri?: string | URI): FileSystemError {