mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Merge from vscode 011858832762aaff245b2336fb1c38166e7a10fb (#4663)
This commit is contained in:
@@ -9,14 +9,14 @@ import { Event, Emitter } from 'vs/base/common/event';
|
||||
import { guessMimeTypes } from 'vs/base/common/mime';
|
||||
import { toErrorMessage } from 'vs/base/common/errorMessage';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { isUndefinedOrNull } from 'vs/base/common/types';
|
||||
import { isUndefinedOrNull, withUndefinedAsNull } from 'vs/base/common/types';
|
||||
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
|
||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
import { ITextFileService, IAutoSaveConfiguration, ModelState, ITextFileEditorModel, ISaveOptions, ISaveErrorHandler, ISaveParticipant, StateChange, SaveReason, IRawTextContent, ILoadOptions, LoadReason, IResolvedTextFileEditorModel } from 'vs/workbench/services/textfile/common/textfiles';
|
||||
import { EncodingMode } from 'vs/workbench/common/editor';
|
||||
import { BaseTextEditorModel } from 'vs/workbench/common/editor/textEditorModel';
|
||||
import { IBackupFileService } from 'vs/workbench/services/backup/common/backup';
|
||||
import { IFileService, IFileStat, FileOperationError, FileOperationResult, CONTENT_CHANGE_EVENT_BUFFER_DELAY, FileChangesEvent, FileChangeType } from 'vs/platform/files/common/files';
|
||||
import { IFileService, FileOperationError, FileOperationResult, CONTENT_CHANGE_EVENT_BUFFER_DELAY, FileChangesEvent, FileChangeType, IFileStatWithMetadata, etag } from 'vs/platform/files/common/files';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { IModeService, ILanguageSelection } from 'vs/editor/common/services/modeService';
|
||||
import { IModelService } from 'vs/editor/common/services/modelService';
|
||||
@@ -60,7 +60,7 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
|
||||
private dirty: boolean;
|
||||
private versionId: number;
|
||||
private bufferSavedVersionId: number;
|
||||
private lastResolvedDiskStat: IFileStat;
|
||||
private lastResolvedDiskStat: IFileStatWithMetadata;
|
||||
private blockModelContentChange: boolean;
|
||||
private autoSaveAfterMillies?: number;
|
||||
private autoSaveAfterMilliesEnabled: boolean;
|
||||
@@ -270,7 +270,8 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
|
||||
resource: this.resource,
|
||||
name: basename(this.resource),
|
||||
mtime: Date.now(),
|
||||
etag: undefined,
|
||||
size: 0,
|
||||
etag: etag(Date.now(), 0),
|
||||
value: createTextBufferFactory(''), /* will be filled later from backup */
|
||||
encoding: this.fileService.encoding.getWriteEncoding(this.resource, this.preferredEncoding).encoding,
|
||||
isReadonly: false
|
||||
@@ -349,6 +350,7 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
|
||||
|
||||
private loadWithContent(content: IRawTextContent, options?: ILoadOptions, backup?: URI): Promise<TextFileEditorModel> {
|
||||
return this.doLoadWithContent(content, backup).then(model => {
|
||||
|
||||
// Telemetry: We log the fileGet telemetry event after the model has been loaded to ensure a good mimetype
|
||||
const settingsType = this.getTypeIfSettings();
|
||||
if (settingsType) {
|
||||
@@ -381,12 +383,12 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
|
||||
resource: this.resource,
|
||||
name: content.name,
|
||||
mtime: content.mtime,
|
||||
size: content.size,
|
||||
etag: content.etag,
|
||||
isDirectory: false,
|
||||
isSymbolicLink: false,
|
||||
children: undefined,
|
||||
isReadonly: content.isReadonly
|
||||
} as IFileStat);
|
||||
});
|
||||
|
||||
// Keep the original encoding to not loose it when saving
|
||||
const oldEncoding = this.contentEncoding;
|
||||
@@ -490,7 +492,7 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
|
||||
return Promise.resolve(null);
|
||||
}
|
||||
|
||||
return this.backupFileService.resolveBackupContent(backup).then(backupContent => backupContent || null, error => null /* ignore errors */);
|
||||
return this.backupFileService.resolveBackupContent(backup).then(withUndefinedAsNull, error => null /* ignore errors */);
|
||||
}
|
||||
|
||||
protected getOrCreateMode(modeService: IModeService, preferredModeIds: string | undefined, firstLineText?: string): ILanguageSelection {
|
||||
@@ -901,7 +903,7 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
|
||||
}
|
||||
}
|
||||
|
||||
private updateLastResolvedDiskStat(newVersionOnDiskStat: IFileStat): void {
|
||||
private updateLastResolvedDiskStat(newVersionOnDiskStat: IFileStatWithMetadata): void {
|
||||
|
||||
// First resolve - just take
|
||||
if (!this.lastResolvedDiskStat) {
|
||||
@@ -1036,7 +1038,7 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
|
||||
return this.resource;
|
||||
}
|
||||
|
||||
getStat(): IFileStat {
|
||||
getStat(): IFileStatWithMetadata {
|
||||
return this.lastResolvedDiskStat;
|
||||
}
|
||||
|
||||
|
||||
@@ -109,16 +109,16 @@ export class TextFileService extends Disposable implements ITextFileService {
|
||||
resolveTextContent(resource: URI, options?: IResolveContentOptions): Promise<IRawTextContent> {
|
||||
return this.fileService.resolveStreamContent(resource, options).then(streamContent => {
|
||||
return createTextBufferFactoryFromStream(streamContent.value).then(res => {
|
||||
const r: IRawTextContent = {
|
||||
return {
|
||||
resource: streamContent.resource,
|
||||
name: streamContent.name,
|
||||
mtime: streamContent.mtime,
|
||||
etag: streamContent.etag,
|
||||
encoding: streamContent.encoding,
|
||||
isReadonly: streamContent.isReadonly,
|
||||
size: streamContent.size,
|
||||
value: res
|
||||
};
|
||||
return r;
|
||||
} as IRawTextContent;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import { URI } from 'vs/base/common/uri';
|
||||
import { Event } from 'vs/base/common/event';
|
||||
import { IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { IEncodingSupport, ConfirmResult, IRevertOptions } from 'vs/workbench/common/editor';
|
||||
import { IBaseStat, IResolveContentOptions, ITextSnapshot } from 'vs/platform/files/common/files';
|
||||
import { IResolveContentOptions, ITextSnapshot, IBaseStatWithMetadata } from 'vs/platform/files/common/files';
|
||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { ITextEditorModel } from 'vs/editor/common/services/resolverService';
|
||||
import { ITextBufferFactory, ITextModel } from 'vs/editor/common/model';
|
||||
@@ -129,7 +129,7 @@ export const enum LoadReason {
|
||||
|
||||
export const ITextFileService = createDecorator<ITextFileService>(TEXT_FILE_SERVICE_ID);
|
||||
|
||||
export interface IRawTextContent extends IBaseStat {
|
||||
export interface IRawTextContent extends IBaseStatWithMetadata {
|
||||
|
||||
/**
|
||||
* The line grouped content of a text file.
|
||||
|
||||
Reference in New Issue
Block a user