提交 6cf0c5cd 编写于 作者: M Matt Bierner 提交者: GitHub

Fix Typescript Quick Fix not using correct tab/spaces setting in TS 2.1.5 (#19312)

Fixes #19279
上级 624df6cb
......@@ -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<NumberSet>;
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<Command[]>([]);
}
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;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册