From 6cf0c5cd3fea2763a78db409feaeaae1cea5980c Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 24 Jan 2017 17:12:58 -0800 Subject: [PATCH] Fix Typescript Quick Fix not using correct tab/spaces setting in TS 2.1.5 (#19312) Fixes #19279 --- .../src/features/codeActionProvider.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/extensions/typescript/src/features/codeActionProvider.ts b/extensions/typescript/src/features/codeActionProvider.ts index 51a9aed5a67..745b00ce98b 100644 --- a/extensions/typescript/src/features/codeActionProvider.ts +++ b/extensions/typescript/src/features/codeActionProvider.ts @@ -5,7 +5,7 @@ 'use strict'; -import { CodeActionProvider, TextDocument, Range, CancellationToken, CodeActionContext, Command, commands, Uri, workspace, WorkspaceEdit, TextEdit, Position } from 'vscode'; +import { CodeActionProvider, TextDocument, Range, CancellationToken, CodeActionContext, Command, commands, Uri, workspace, WorkspaceEdit, TextEdit, Position, FormattingOptions, window } from 'vscode'; import * as Proto from '../protocol'; import { ITypescriptServiceClient } from '../typescriptService'; @@ -18,16 +18,18 @@ interface Source { uri: Uri; version: number; range: Range; + formattingOptions: FormattingOptions | undefined; } export default class TypeScriptCodeActionProvider implements CodeActionProvider { - private client: ITypescriptServiceClient; private commandId: string; private supportedCodeActions: Promise; - constructor(client: ITypescriptServiceClient, modeId: string) { - this.client = client; + constructor( + private client: ITypescriptServiceClient, + modeId: string + ) { this.commandId = `typescript.codeActions.${modeId}`; this.supportedCodeActions = client.execute('getSupportedCodeFixes', null, undefined) .then(response => response.body || []) @@ -48,11 +50,13 @@ export default class TypeScriptCodeActionProvider implements CodeActionProvider if (!file) { return Promise.resolve([]); } - + let editor = window.activeTextEditor && window.activeTextEditor.document === document ? window.activeTextEditor : undefined; const source: Source = { uri: document.uri, version: document.version, - range: range + range: range, + formattingOptions: editor + ? { tabSize: editor.options.tabSize, insertSpaces: editor.options.insertSpaces } as FormattingOptions : undefined }; return this.getSupportedCodeActions(context) .then(supportedActions => { @@ -121,7 +125,7 @@ export default class TypeScriptCodeActionProvider implements CodeActionProvider // TODO: Workaround for https://github.com/Microsoft/TypeScript/issues/12249 // apply formatting to the source range until TS returns formatted results - return commands.executeCommand('vscode.executeFormatRangeProvider', source.uri, editedRange, {}).then((edits: TextEdit[]) => { + return commands.executeCommand('vscode.executeFormatRangeProvider', source.uri, editedRange, source.formattingOptions || {}).then((edits: TextEdit[]) => { if (!edits || !edits.length) { return false; } -- GitLab