This commit is contained in:
Alex Dima
2018-08-13 11:00:55 +02:00
parent 850fc8d1fc
commit efe424dfe7
7 changed files with 27 additions and 8 deletions

View File

@@ -11,6 +11,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
import { FileWriteOptions, FileSystemProviderCapabilities, IFileChange, IFileService, IFileSystemProvider, IStat, IWatchOptions, FileType, FileOverwriteOptions, FileDeleteOptions } from 'vs/platform/files/common/files';
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
import { ExtHostContext, ExtHostFileSystemShape, IExtHostContext, IFileChangeDto, MainContext, MainThreadFileSystemShape } from '../node/extHost.protocol';
import { UriDisplayRules, IUriDisplayService } from 'vs/platform/uriDisplay/common/uriDisplay';
@extHostNamedCustomer(MainContext.MainThreadFileSystem)
export class MainThreadFileSystem implements MainThreadFileSystemShape {
@@ -20,7 +21,8 @@ export class MainThreadFileSystem implements MainThreadFileSystemShape {
constructor(
extHostContext: IExtHostContext,
@IFileService private readonly _fileService: IFileService
@IFileService private readonly _fileService: IFileService,
@IUriDisplayService private readonly _uriDisplayService: IUriDisplayService
) {
this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostFileSystem);
}
@@ -39,6 +41,10 @@ export class MainThreadFileSystem implements MainThreadFileSystemShape {
this._fileProvider.delete(handle);
}
$setUriFormatter(scheme: string, formatter: UriDisplayRules): void {
this._uriDisplayService.registerFormater(scheme, formatter);
}
$onFileSystemChange(handle: number, changes: IFileChangeDto[]): void {
this._fileProvider.get(handle).$onFileSystemChange(changes);
}

View File

@@ -504,7 +504,7 @@ export class MainThreadTask implements MainThreadTaskShape {
this._taskService.registerTaskSystem(key, {
platform: platform,
uriProvider: (path: string): URI => {
return URI.parse(`${info.scheme}://${info.host}:${info.port}${path}`);
return URI.parse(`${info.scheme}://${info.authority}${path}`);
},
context: this._extHostContext,
resolveVariables: (workspaceFolder: IWorkspaceFolder, variables: Set<string>): TPromise<Map<string, string>> => {

View File

@@ -40,6 +40,7 @@ import { IExtensionDescription } from 'vs/workbench/services/extensions/common/e
import { createExtHostContextProxyIdentifier as createExtId, createMainContextProxyIdentifier as createMainId, IRPCProtocol, ProxyIdentifier } from 'vs/workbench/services/extensions/node/proxyIdentifier';
import { IProgressOptions, IProgressStep } from 'vs/workbench/services/progress/common/progress';
import { SaveReason } from 'vs/workbench/services/textfile/common/textfiles';
import { UriDisplayRules } from 'vs/platform/uriDisplay/common/uriDisplay';
import * as vscode from 'vscode';
export interface IEnvironment {
@@ -482,6 +483,7 @@ export interface IFileChangeDto {
export interface MainThreadFileSystemShape extends IDisposable {
$registerFileSystemProvider(handle: number, scheme: string, capabilities: FileSystemProviderCapabilities): void;
$unregisterProvider(handle: number): void;
$setUriFormatter(scheme: string, formatter: UriDisplayRules): void;
$onFileSystemChange(handle: number, resource: IFileChangeDto[]): void;
}

View File

@@ -15,6 +15,7 @@ import { values } from 'vs/base/common/map';
import { Range, FileChangeType } from 'vs/workbench/api/node/extHostTypes';
import { ExtHostLanguageFeatures } from 'vs/workbench/api/node/extHostLanguageFeatures';
import { Schemas } from 'vs/base/common/network';
import { UriDisplayRules } from 'vs/platform/uriDisplay/common/uriDisplay';
class FsLinkProvider implements vscode.DocumentLinkProvider {
@@ -141,6 +142,10 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape {
});
}
setUriFormatter(scheme: string, formatter: UriDisplayRules): void {
this._proxy.$setUriFormatter(scheme, formatter);
}
private static _asIStat(stat: vscode.FileStat): files.IStat {
const { type, ctime, mtime, size } = stat;
return { type, ctime, mtime, size };

View File

@@ -107,7 +107,6 @@ export interface TaskFilterDTO {
export interface TaskSystemInfoDTO {
scheme: string;
host: string;
port: number;
authority: string;
platform: string;
}