mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-25 19:18:59 +01:00
add FileOpenFlags, FileErrors, and a bit of polish, #47475
This commit is contained in:
@@ -58,6 +58,7 @@ import { isFalsyOrEmpty } from 'vs/base/common/arrays';
|
||||
import { OverviewRulerLane } from 'vs/editor/common/model';
|
||||
import { ExtHostLogService } from 'vs/workbench/api/node/extHostLogService';
|
||||
import { ExtHostWebviews } from 'vs/workbench/api/node/extHostWebview';
|
||||
import * as files from 'vs/platform/files/common/files';
|
||||
|
||||
export interface IExtensionApiFactory {
|
||||
(extension: IExtensionDescription): typeof vscode;
|
||||
@@ -706,6 +707,8 @@ export function createApiFactory(
|
||||
FileType: extHostTypes.FileType,
|
||||
FileChangeType2: extHostTypes.FileChangeType2,
|
||||
FileType2: extHostTypes.FileType2,
|
||||
FileOpenFlags: files.FileOpenFlags,
|
||||
FileError: files.FileError,
|
||||
FoldingRangeList: extHostTypes.FoldingRangeList,
|
||||
FoldingRange: extHostTypes.FoldingRange,
|
||||
FoldingRangeType: extHostTypes.FoldingRangeType
|
||||
|
||||
@@ -42,7 +42,7 @@ import { ITreeItem } from 'vs/workbench/common/views';
|
||||
import { ThemeColor } from 'vs/platform/theme/common/themeService';
|
||||
import { IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { SerializedError } from 'vs/base/common/errors';
|
||||
import { IStat, FileChangeType } from 'vs/platform/files/common/files';
|
||||
import { IStat, FileChangeType, FileOpenFlags } from 'vs/platform/files/common/files';
|
||||
import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry';
|
||||
import { CommentRule, CharacterPair, EnterAction } from 'vs/editor/common/modes/languageConfiguration';
|
||||
import { ISingleEditOperation } from 'vs/editor/common/model';
|
||||
@@ -567,8 +567,8 @@ export interface ExtHostWorkspaceShape {
|
||||
export interface ExtHostFileSystemShape {
|
||||
$stat(handle: number, resource: UriComponents): TPromise<IStat>;
|
||||
|
||||
$readFile(handle: number, resource: UriComponents): TPromise<string>;
|
||||
$writeFile(handle: number, resource: UriComponents, base64Encoded: string): TPromise<void>;
|
||||
$readFile(handle: number, resource: UriComponents, flags: FileOpenFlags): TPromise<string>;
|
||||
$writeFile(handle: number, resource: UriComponents, base64Encoded: string, flags: FileOpenFlags): TPromise<void>;
|
||||
|
||||
$move(handle: number, resource: UriComponents, target: UriComponents): TPromise<IStat>;
|
||||
$mkdir(handle: number, resource: UriComponents): TPromise<IStat>;
|
||||
|
||||
@@ -57,10 +57,9 @@ class FsLinkProvider implements vscode.DocumentLinkProvider {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class FileSystemProviderShim implements vscode.FileSystemProvider2 {
|
||||
|
||||
_version: 4;
|
||||
_version: 5;
|
||||
|
||||
onDidChange: vscode.Event<vscode.FileChange2[]>;
|
||||
|
||||
@@ -154,7 +153,8 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 {
|
||||
return Buffer.concat(chunks);
|
||||
});
|
||||
}
|
||||
writeFile(resource: vscode.Uri, content: Uint8Array): Thenable<void> {
|
||||
writeFile(resource: vscode.Uri, content: Uint8Array, options: { flags: vscode.FileOpenFlags }): Thenable<void> {
|
||||
// if (options.flags & (files.FileOpenFlags.Exclusive) )
|
||||
return this._delegate.write(resource, content);
|
||||
}
|
||||
}
|
||||
@@ -174,7 +174,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape {
|
||||
}
|
||||
|
||||
registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, newProvider: vscode.FileSystemProvider2) {
|
||||
if (newProvider && newProvider._version === 4) {
|
||||
if (newProvider && newProvider._version === 5) {
|
||||
return this._doRegisterFileSystemProvider(scheme, newProvider);
|
||||
} else if (provider) {
|
||||
return this._doRegisterFileSystemProvider(scheme, new FileSystemProviderShim(provider));
|
||||
@@ -240,15 +240,15 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape {
|
||||
$readdir(handle: number, resource: UriComponents): TPromise<[string, files.IStat][], any> {
|
||||
return asWinJsPromise(token => this._fsProvider.get(handle).readDirectory(URI.revive(resource), token));
|
||||
}
|
||||
$readFile(handle: number, resource: UriComponents): TPromise<string> {
|
||||
$readFile(handle: number, resource: UriComponents, flags: files.FileOpenFlags): TPromise<string> {
|
||||
return asWinJsPromise(token => {
|
||||
return this._fsProvider.get(handle).readFile(URI.revive(resource), token);
|
||||
return this._fsProvider.get(handle).readFile(URI.revive(resource), { flags }, token);
|
||||
}).then(data => {
|
||||
return Buffer.isBuffer(data) ? data.toString('base64') : Buffer.from(data.buffer, data.byteOffset, data.byteLength).toString('base64');
|
||||
});
|
||||
}
|
||||
$writeFile(handle: number, resource: UriComponents, base64Content: string): TPromise<void, any> {
|
||||
return asWinJsPromise(token => this._fsProvider.get(handle).writeFile(URI.revive(resource), Buffer.from(base64Content, 'base64'), token));
|
||||
$writeFile(handle: number, resource: UriComponents, base64Content: string, flags: files.FileOpenFlags): TPromise<void, any> {
|
||||
return asWinJsPromise(token => this._fsProvider.get(handle).writeFile(URI.revive(resource), Buffer.from(base64Content, 'base64'), { flags }, token));
|
||||
}
|
||||
$delete(handle: number, resource: UriComponents): TPromise<void, any> {
|
||||
return asWinJsPromise(token => this._fsProvider.get(handle).delete(URI.revive(resource), token));
|
||||
|
||||
Reference in New Issue
Block a user