Skip to content

Commit cdd3dca

Browse files
committed
text files - some encoding related 💄 changes
1 parent a7d9391 commit cdd3dca

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

src/vs/workbench/browser/parts/editor/editorStatus.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1506,7 +1506,7 @@ export class ChangeEncodingAction extends Action {
15061506
}
15071507

15081508
const activeEncodingSupport = toEditorWithEncodingSupport(this.editorService.activeEditorPane.input);
1509-
if (typeof encoding.id !== 'undefined' && activeEncodingSupport && activeEncodingSupport.getEncoding() !== encoding.id) {
1509+
if (typeof encoding.id !== 'undefined' && activeEncodingSupport) {
15101510
await activeEncodingSupport.setEncoding(encoding.id, isReopenWithEncoding ? EncodingMode.Decode : EncodingMode.Encode); // Set new encoding
15111511
}
15121512

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6+
import { localize } from 'vs/nls';
67
import { Emitter } from 'vs/base/common/event';
78
import { URI } from 'vs/base/common/uri';
89
import { assertIsDefined, withNullAsUndefined } from 'vs/base/common/types';
910
import { EncodingMode, ITextFileService, TextFileEditorModelState, ITextFileEditorModel, ITextFileStreamContent, ITextFileResolveOptions, IResolvedTextFileEditorModel, ITextFileSaveOptions, TextFileResolveReason, ITextFileEditorModelSaveEvent } from 'vs/workbench/services/textfile/common/textfiles';
10-
import { IRevertOptions, SaveReason } from 'vs/workbench/common/editor';
11+
import { IRevertOptions, SaveReason, SaveSourceRegistry } from 'vs/workbench/common/editor';
1112
import { BaseTextEditorModel } from 'vs/workbench/common/editor/textEditorModel';
1213
import { IWorkingCopyBackupService, IResolvedWorkingCopyBackup } from 'vs/workbench/services/workingCopy/common/workingCopyBackup';
1314
import { IFileService, FileOperationError, FileOperationResult, FileChangesEvent, FileChangeType, IFileStatWithMetadata, ETAG_DISABLED, FileSystemProviderCapabilities, NotModifiedSinceFileOperationError } from 'vs/platform/files/common/files';
@@ -46,6 +47,8 @@ interface IBackupMetaData extends IWorkingCopyBackupMeta {
4647
*/
4748
export class TextFileEditorModel extends BaseTextEditorModel implements ITextFileEditorModel {
4849

50+
private static readonly TEXTFILE_SAVE_ENCODING_SOURCE = SaveSourceRegistry.registerSource('textFileEncoding.source', localize('textFileCreate.source', "File Encoding Changed"));
51+
4952
//#region Events
5053

5154
private readonly _onDidChangeContent = this._register(new Emitter<void>());
@@ -1010,14 +1013,10 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
10101013
return; // return early if encoding is invalid or did not change
10111014
}
10121015

1013-
if (this.isDirty() || this.inConflictMode) {
1016+
if (this.isDirty()) {
10141017
return; // return early to prevent accident saves in this case
10151018
}
10161019

1017-
if (!this.isResolved()) {
1018-
return; // return early to prevent race with resolving
1019-
}
1020-
10211020
// Re-open with new encoding
10221021
await this.setEncoding(encoding, EncodingMode.Decode);
10231022
}
@@ -1027,9 +1026,6 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
10271026
}
10281027

10291028
async setEncoding(encoding: string, mode: EncodingMode): Promise<void> {
1030-
if (!this.isNewEncoding(encoding)) {
1031-
return; // return early if the encoding is already the same
1032-
}
10331029

10341030
// Encode: Save with encoding
10351031
if (mode === EncodingMode.Encode) {
@@ -1042,13 +1038,17 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
10421038
}
10431039

10441040
if (!this.inConflictMode) {
1045-
await this.save();
1041+
await this.save({ source: TextFileEditorModel.TEXTFILE_SAVE_ENCODING_SOURCE });
10461042
}
10471043
}
10481044

10491045
// Decode: Resolve with encoding
10501046
else {
1051-
if (this.isDirty()) {
1047+
if (!this.isNewEncoding(encoding)) {
1048+
return; // return early if the encoding is already the same
1049+
}
1050+
1051+
if (this.isDirty() && !this.inConflictMode) {
10521052
await this.save();
10531053
}
10541054

0 commit comments

Comments
 (0)