Skip to content

Commit ffe5db3

Browse files
author
Benjamin Pasero
committed
files2 - textfile.read()
1 parent dac2e27 commit ffe5db3

9 files changed

Lines changed: 42 additions & 29 deletions

File tree

src/vs/workbench/contrib/files/common/files.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ export class FileOnDiskContentProvider implements ITextModelContentProvider {
176176
private resolveEditorModel(resource: URI, createAsNeeded: boolean = true): Promise<ITextModel | null> {
177177
const savedFileResource = toLocalResource(resource, this.environmentService.configuration.remoteAuthority);
178178

179-
return this.textFileService.resolve(savedFileResource).then(content => {
179+
return this.textFileService.read(savedFileResource).then(content => {
180180
let codeEditorModel = this.modelService.getModel(resource);
181181
if (codeEditorModel) {
182182
this.modelService.updateModel(codeEditorModel, content.value);

src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW
3535
reject(err);
3636
}
3737
});
38-
}) : this.textFileService.resolve(URI.file(resource.fsPath)).then(content => content.value));
38+
}) : this.textFileService.read(URI.file(resource.fsPath)).then(content => content.value));
3939
return content.then(content => {
4040
let codeEditorModel = this.modelService.getModel(resource);
4141
if (!codeEditorModel) {
@@ -61,7 +61,7 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi
6161
}
6262

6363
public provideTextContent(resource: URI): Promise<ITextModel> {
64-
return this.textFileService.resolve(URI.file(resource.fsPath)).then(content => {
64+
return this.textFileService.read(URI.file(resource.fsPath)).then(content => {
6565
let codeEditorModel = this.modelService.getModel(resource);
6666
if (!codeEditorModel) {
6767
const j = parseInt(resource.fragment);
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
import { TextFileService } from 'vs/workbench/services/textfile/common/textFileService';
7+
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
8+
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
9+
import { IResourceEncodings, IResourceEncoding } from 'vs/platform/files/common/files';
10+
11+
export class BrowserTextFileService extends TextFileService {
12+
13+
readonly encoding: IResourceEncodings = {
14+
getPreferredWriteEncoding(): IResourceEncoding {
15+
return { encoding: 'utf8', hasBOM: false };
16+
}
17+
};
18+
}
19+
20+
registerSingleton(ITextFileService, BrowserTextFileService);

src/vs/workbench/services/textfile/common/textFileEditorModel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
306306

307307
// Resolve Content
308308
try {
309-
const content = await this.textFileService.resolve(this.resource, { acceptTextOnly: !allowBinary, etag, encoding: this.preferredEncoding });
309+
const content = await this.textFileService.read(this.resource, { acceptTextOnly: !allowBinary, etag, encoding: this.preferredEncoding });
310310

311311
// Clear orphaned state when loading was successful
312312
this.setOrphaned(false);

src/vs/workbench/services/textfile/common/textFileService.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { IResult, ITextFileOperationResult, ITextFileService, IRawTextContent, I
1515
import { ConfirmResult, IRevertOptions } from 'vs/workbench/common/editor';
1616
import { ILifecycleService, ShutdownReason, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle';
1717
import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
18-
import { IFileService, IResolveContentOptions, IFilesConfiguration, FileOperationError, FileOperationResult, AutoSaveConfiguration, HotExitConfiguration, ITextSnapshot, IWriteTextFileOptions, IFileStatWithMetadata, toBufferOrReadable, ICreateFileOptions, IResourceEncodings, IResourceEncoding } from 'vs/platform/files/common/files';
18+
import { IFileService, IResolveContentOptions, IFilesConfiguration, FileOperationError, FileOperationResult, AutoSaveConfiguration, HotExitConfiguration, ITextSnapshot, IWriteTextFileOptions, IFileStatWithMetadata, toBufferOrReadable, ICreateFileOptions, IResourceEncodings } from 'vs/platform/files/common/files';
1919
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
2020
import { Disposable } from 'vs/base/common/lifecycle';
2121
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
@@ -41,7 +41,7 @@ import { trim } from 'vs/base/common/strings';
4141
/**
4242
* The workbench file service implementation implements the raw file service spec and adds additional methods on top.
4343
*/
44-
export class TextFileService extends Disposable implements ITextFileService {
44+
export abstract class TextFileService extends Disposable implements ITextFileService {
4545

4646
_serviceBrand: ServiceIdentifier<any>;
4747

@@ -57,11 +57,7 @@ export class TextFileService extends Disposable implements ITextFileService {
5757
private _models: TextFileEditorModelManager;
5858
get models(): ITextFileEditorModelManager { return this._models; }
5959

60-
readonly encoding: IResourceEncodings = {
61-
getPreferredWriteEncoding(): IResourceEncoding {
62-
return { encoding: 'utf8', hasBOM: false };
63-
}
64-
};
60+
abstract get encoding(): IResourceEncodings;
6561

6662
private currentFilesAssociationConfig: { [key: string]: string; };
6763
private configuredAutoSaveDelay?: number;
@@ -372,7 +368,7 @@ export class TextFileService extends Disposable implements ITextFileService {
372368

373369
//#region primitives (resolve, create, move, delete, update)
374370

375-
async resolve(resource: URI, options?: IResolveContentOptions): Promise<IRawTextContent> {
371+
async read(resource: URI, options?: IResolveContentOptions): Promise<IRawTextContent> {
376372
const streamContent = await this.fileService.resolveStreamContent(resource, options);
377373
const value = await createTextBufferFactoryFromStream(streamContent.value);
378374

src/vs/workbench/services/textfile/common/textfiles.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -355,9 +355,9 @@ export interface ITextFileService extends IDisposable {
355355
create(resource: URI, contents?: string | ITextSnapshot, options?: { overwrite?: boolean }): Promise<IFileStatWithMetadata>;
356356

357357
/**
358-
* Resolve the contents of a file identified by the resource.
358+
* Read the contents of a file identified by the resource.
359359
*/
360-
resolve(resource: URI, options?: IResolveContentOptions): Promise<IRawTextContent>;
360+
read(resource: URI, options?: IResolveContentOptions): Promise<IRawTextContent>;
361361

362362
/**
363363
* Update a file with given contents.

src/vs/workbench/services/textfile/test/textFileService.io.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ suite('Files - TextFileService i/o', () => {
246246
const detectedEncoding = await detectEncodingByBOM(resource.fsPath);
247247
assert.equal(detectedEncoding, encoding);
248248

249-
const resolved = await service.resolve(resource);
249+
const resolved = await service.read(resource);
250250
assert.equal(resolved.encoding, encoding);
251251

252252
assert.equal(snapshotToString(resolved.value.create(isWindows ? DefaultEndOfLine.CRLF : DefaultEndOfLine.LF).createSnapshot(false)), expectedContent);
@@ -273,18 +273,18 @@ suite('Files - TextFileService i/o', () => {
273273
});
274274

275275
async function testEncodingKeepsData(resource: URI, encoding: string, expected: string) {
276-
let resolved = await service.resolve(resource, { encoding });
276+
let resolved = await service.read(resource, { encoding });
277277
const content = snapshotToString(resolved.value.create(isWindows ? DefaultEndOfLine.CRLF : DefaultEndOfLine.LF).createSnapshot(false));
278278
assert.equal(content, expected);
279279

280280
await service.write(resource, content, { encoding });
281281

282-
resolved = await service.resolve(resource, { encoding });
282+
resolved = await service.read(resource, { encoding });
283283
assert.equal(snapshotToString(resolved.value.create(DefaultEndOfLine.CRLF).createSnapshot(false)), content);
284284

285285
await service.write(resource, TextModel.createFromString(content).createSnapshot(), { encoding });
286286

287-
resolved = await service.resolve(resource, { encoding });
287+
resolved = await service.read(resource, { encoding });
288288
assert.equal(snapshotToString(resolved.value.create(DefaultEndOfLine.CRLF).createSnapshot(false)), content);
289289
}
290290

@@ -295,7 +295,7 @@ suite('Files - TextFileService i/o', () => {
295295

296296
await service.write(resource, content);
297297

298-
const resolved = await service.resolve(resource);
298+
const resolved = await service.read(resource);
299299
assert.equal(snapshotToString(resolved.value.create(isWindows ? DefaultEndOfLine.CRLF : DefaultEndOfLine.LF).createSnapshot(false)), content);
300300
});
301301

@@ -306,14 +306,14 @@ suite('Files - TextFileService i/o', () => {
306306

307307
await service.write(resource, TextModel.createFromString(content).createSnapshot());
308308

309-
const resolved = await service.resolve(resource);
309+
const resolved = await service.read(resource);
310310
assert.equal(snapshotToString(resolved.value.create(isWindows ? DefaultEndOfLine.CRLF : DefaultEndOfLine.LF).createSnapshot(false)), content);
311311
});
312312

313313
test('write - encoding preserved (UTF 16 LE) - content as string', async () => {
314314
const resource = URI.file(join(testDir, 'some_utf16le.css'));
315315

316-
const resolved = await service.resolve(resource);
316+
const resolved = await service.read(resource);
317317
assert.equal(resolved.encoding, UTF16le);
318318

319319
await testEncoding(URI.file(join(testDir, 'some_utf16le.css')), UTF16le, 'Hello\nWorld', 'Hello\nWorld');
@@ -322,7 +322,7 @@ suite('Files - TextFileService i/o', () => {
322322
test('write - encoding preserved (UTF 16 LE) - content as snapshot', async () => {
323323
const resource = URI.file(join(testDir, 'some_utf16le.css'));
324324

325-
const resolved = await service.resolve(resource);
325+
const resolved = await service.read(resource);
326326
assert.equal(resolved.encoding, UTF16le);
327327

328328
await testEncoding(URI.file(join(testDir, 'some_utf16le.css')), UTF16le, TextModel.createFromString('Hello\nWorld').createSnapshot(), 'Hello\nWorld');

src/vs/workbench/test/workbenchTestServices.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import { IUntitledEditorService, UntitledEditorService } from 'vs/workbench/serv
2525
import { IWorkspaceContextService, IWorkspace as IWorkbenchWorkspace, WorkbenchState, IWorkspaceFolder, IWorkspaceFoldersChangeEvent, Workspace } from 'vs/platform/workspace/common/workspace';
2626
import { ILifecycleService, BeforeShutdownEvent, ShutdownReason, StartupKind, LifecyclePhase, WillShutdownEvent } from 'vs/platform/lifecycle/common/lifecycle';
2727
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
28-
import { TextFileService } from 'vs/workbench/services/textfile/common/textFileService';
2928
import { FileOperationEvent, IFileService, IResolveContentOptions, FileOperationError, IFileStat, IResolveFileResult, FileChangesEvent, IResolveFileOptions, IContent, IStreamContent, ICreateFileOptions, ITextSnapshot, IResourceEncoding, IFileSystemProvider, FileSystemProviderCapabilities, IFileChange, IWatchOptions, IStat, FileType, FileDeleteOptions, FileOverwriteOptions, FileWriteOptions, FileOpenOptions, IFileStatWithMetadata, IResolveMetadataFileOptions, IWriteFileOptions } from 'vs/platform/files/common/files';
3029
import { IModelService } from 'vs/editor/common/services/modelService';
3130
import { ModeServiceImpl } from 'vs/editor/common/services/modeServiceImpl';
@@ -83,6 +82,7 @@ import { ISharedProcessService } from 'vs/platform/ipc/electron-browser/sharedPr
8382
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
8483
import { WorkbenchEnvironmentService } from 'vs/workbench/services/environment/node/environmentService';
8584
import { VSBuffer, VSBufferReadable } from 'vs/base/common/buffer';
85+
import { BrowserTextFileService } from 'vs/workbench/services/textfile/browser/textFileService';
8686

8787
export function createFileInput(instantiationService: IInstantiationService, resource: URI): FileEditorInput {
8888
return instantiationService.createInstance(FileEditorInput, resource, undefined);
@@ -176,7 +176,7 @@ export class TestContextService implements IWorkspaceContextService {
176176
}
177177
}
178178

179-
export class TestTextFileService extends TextFileService {
179+
export class TestTextFileService extends BrowserTextFileService {
180180
public cleanupBackupsBeforeShutdownCalled: boolean;
181181

182182
private promptPath: URI;
@@ -235,7 +235,7 @@ export class TestTextFileService extends TextFileService {
235235
this.resolveTextContentError = error;
236236
}
237237

238-
public resolve(resource: URI, options?: IResolveContentOptions): Promise<IRawTextContent> {
238+
public read(resource: URI, options?: IResolveContentOptions): Promise<IRawTextContent> {
239239
if (this.resolveTextContentError) {
240240
const error = this.resolveTextContentError;
241241
this.resolveTextContentError = null;

src/vs/workbench/workbench.nodeless.main.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,6 @@ import { ContextViewService } from 'vs/platform/contextview/browser/contextViewS
9191
// import { RelayURLService } from 'vs/platform/url/electron-browser/urlService';
9292
import { IHeapService, NullHeapService } from 'vs/workbench/services/heap/common/heap';
9393
import { IBroadcastService, NullBroadcastService } from 'vs/workbench/services/broadcast/common/broadcast';
94-
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
95-
import { TextFileService } from 'vs/workbench/services/textfile/common/textFileService';
9694
import { ConfigurationResolverService } from 'vs/workbench/services/configurationResolver/browser/configurationResolverService';
9795
import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver';
9896

@@ -115,7 +113,7 @@ import 'vs/workbench/services/preferences/browser/preferencesService';
115113
import 'vs/workbench/services/output/common/outputChannelModelService';
116114
import 'vs/workbench/services/configuration/common/jsonEditingService';
117115
import 'vs/workbench/services/textmodelResolver/common/textModelResolverService';
118-
// import 'vs/workbench/services/textfile/node/textFileService';
116+
import 'vs/workbench/services/textfile/browser/textFileService';
119117
import 'vs/workbench/services/dialogs/browser/fileDialogService';
120118
// import 'vs/workbench/services/dialogs/electron-browser/dialogService';
121119
// import 'vs/workbench/services/backup/node/backupFileService';
@@ -171,7 +169,6 @@ registerSingleton(IContextViewService, ContextViewService, true);
171169
registerSingleton(IHeapService, NullHeapService);
172170
registerSingleton(IBroadcastService, NullBroadcastService);
173171
registerSingleton(IContextMenuService, ContextMenuService);
174-
registerSingleton(ITextFileService, TextFileService);
175172
registerSingleton(IConfigurationResolverService, ConfigurationResolverService, true);
176173

177174
//#endregion

0 commit comments

Comments
 (0)