提交 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 @@ ...@@ -5,7 +5,7 @@
'use strict'; '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 * as Proto from '../protocol';
import { ITypescriptServiceClient } from '../typescriptService'; import { ITypescriptServiceClient } from '../typescriptService';
...@@ -18,16 +18,18 @@ interface Source { ...@@ -18,16 +18,18 @@ interface Source {
uri: Uri; uri: Uri;
version: number; version: number;
range: Range; range: Range;
formattingOptions: FormattingOptions | undefined;
} }
export default class TypeScriptCodeActionProvider implements CodeActionProvider { export default class TypeScriptCodeActionProvider implements CodeActionProvider {
private client: ITypescriptServiceClient;
private commandId: string; private commandId: string;
private supportedCodeActions: Promise<NumberSet>; private supportedCodeActions: Promise<NumberSet>;
constructor(client: ITypescriptServiceClient, modeId: string) { constructor(
this.client = client; private client: ITypescriptServiceClient,
modeId: string
) {
this.commandId = `typescript.codeActions.${modeId}`; this.commandId = `typescript.codeActions.${modeId}`;
this.supportedCodeActions = client.execute('getSupportedCodeFixes', null, undefined) this.supportedCodeActions = client.execute('getSupportedCodeFixes', null, undefined)
.then(response => response.body || []) .then(response => response.body || [])
...@@ -48,11 +50,13 @@ export default class TypeScriptCodeActionProvider implements CodeActionProvider ...@@ -48,11 +50,13 @@ export default class TypeScriptCodeActionProvider implements CodeActionProvider
if (!file) { if (!file) {
return Promise.resolve<Command[]>([]); return Promise.resolve<Command[]>([]);
} }
let editor = window.activeTextEditor && window.activeTextEditor.document === document ? window.activeTextEditor : undefined;
const source: Source = { const source: Source = {
uri: document.uri, uri: document.uri,
version: document.version, version: document.version,
range: range range: range,
formattingOptions: editor
? { tabSize: editor.options.tabSize, insertSpaces: editor.options.insertSpaces } as FormattingOptions : undefined
}; };
return this.getSupportedCodeActions(context) return this.getSupportedCodeActions(context)
.then(supportedActions => { .then(supportedActions => {
...@@ -121,7 +125,7 @@ export default class TypeScriptCodeActionProvider implements CodeActionProvider ...@@ -121,7 +125,7 @@ export default class TypeScriptCodeActionProvider implements CodeActionProvider
// TODO: Workaround for https://github.com/Microsoft/TypeScript/issues/12249 // TODO: Workaround for https://github.com/Microsoft/TypeScript/issues/12249
// apply formatting to the source range until TS returns formatted results // 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) { if (!edits || !edits.length) {
return false; return false;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册