Skip to content

Commit 8c2f360

Browse files
author
Benjamin Pasero
committed
untitled - proper dirty reporting even when not resolved
1 parent 94421ed commit 8c2f360

2 files changed

Lines changed: 8 additions & 11 deletions

File tree

src/vs/workbench/services/untitled/common/untitledTextEditorModel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ export class UntitledTextEditorModel extends BaseTextEditorModel implements IUnt
100100
return this.labelService.getUriBasenameLabel(this.resource);
101101
}
102102

103-
private dirty = false;
103+
private dirty = this.hasAssociatedFilePath || !!this.initialValue;
104104
private ignoreDirtyOnModelContentChange = false;
105105

106106
private versionId = 0;

src/vs/workbench/services/untitled/test/browser/untitledTextEditor.test.ts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import { IUntitledTextEditorService, UntitledTextEditorService } from 'vs/workbe
1111
import { workbenchInstantiationService, TestServiceAccessor } from 'vs/workbench/test/browser/workbenchTestServices';
1212
import { snapshotToString } from 'vs/workbench/services/textfile/common/textfiles';
1313
import { ModesRegistry, PLAINTEXT_MODE_ID } from 'vs/editor/common/modes/modesRegistry';
14-
import { IWorkingCopy } from 'vs/workbench/services/workingCopy/common/workingCopyService';
1514
import { IIdentifiedSingleEditOperation } from 'vs/editor/common/model';
1615
import { Range } from 'vs/editor/common/core/range';
1716
import { UntitledTextEditorInput } from 'vs/workbench/services/untitled/common/untitledTextEditorInput';
@@ -120,9 +119,13 @@ suite('Untitled text editors', () => {
120119
test('associated resource is dirty', async () => {
121120
const service = accessor.untitledTextEditorService;
122121
const file = URI.file(join('C:\\', '/foo/file.txt'));
123-
const untitled = await service.resolve({ associatedResource: file });
124122

125-
assert.ok(untitled.hasAssociatedFilePath);
123+
const untitled = instantiationService.createInstance(UntitledTextEditorInput, service.create({ associatedResource: file }));
124+
assert.ok(untitled.isDirty());
125+
126+
const model = await untitled.resolve();
127+
128+
assert.ok(model.hasAssociatedFilePath);
126129
assert.equal(untitled.isDirty(), true);
127130

128131
untitled.dispose();
@@ -197,20 +200,14 @@ suite('Untitled text editors', () => {
197200
const workingCopyService = accessor.workingCopyService;
198201

199202
const untitled = instantiationService.createInstance(UntitledTextEditorInput, service.create({ initialValue: 'Hello World' }));
200-
201-
let onDidChangeDirty: IWorkingCopy | undefined = undefined;
202-
const listener = workingCopyService.onDidChangeDirty(copy => {
203-
onDidChangeDirty = copy;
204-
});
203+
assert.ok(untitled.isDirty());
205204

206205
// dirty
207206
const model = await untitled.resolve();
208207
assert.ok(model.isDirty());
209208
assert.equal(workingCopyService.dirtyCount, 1);
210-
assert.equal(onDidChangeDirty, model);
211209

212210
untitled.dispose();
213-
listener.dispose();
214211
model.dispose();
215212
});
216213

0 commit comments

Comments
 (0)