diff --git a/extensions/vscode-api-tests/src/singlefolder-tests/workspace.test.ts b/extensions/vscode-api-tests/src/singlefolder-tests/workspace.test.ts index 7ee205256bb..549bd426c13 100644 --- a/extensions/vscode-api-tests/src/singlefolder-tests/workspace.test.ts +++ b/extensions/vscode-api-tests/src/singlefolder-tests/workspace.test.ts @@ -1399,6 +1399,14 @@ suite('vscode API - workspace', () => { assert.strictEqual(doc2.encoding, 'cp1252'); }); + test('encoding: openTextDocument - can change the encoding of an existing untitled document', async () => { + const doc = await vscode.workspace.openTextDocument({ content: 'Hello World' }); + assert.strictEqual(doc.encoding, 'utf8'); + + await vscode.workspace.openTextDocument(doc.uri, { encoding: 'windows1252' }); + assert.strictEqual(doc.encoding, 'windows1252'); + }); + test('encoding: decode', async function () { const uri = root.with({ path: posix.join(root.path, 'file.txt') }); diff --git a/src/vs/workbench/api/browser/mainThreadDocuments.ts b/src/vs/workbench/api/browser/mainThreadDocuments.ts index 47925bd1c08..91655eb0ff3 100644 --- a/src/vs/workbench/api/browser/mainThreadDocuments.ts +++ b/src/vs/workbench/api/browser/mainThreadDocuments.ts @@ -290,6 +290,9 @@ export class MainThreadDocuments extends Disposable implements MainThreadDocumen initialValue: options?.content, encoding: options?.encoding }); + if (options?.encoding) { + await model.setEncoding(options.encoding); + } const resource = model.resource; const ref = await this._textModelResolverService.createModelReference(resource); if (!this._modelTrackers.has(resource)) {