diff --git a/extensions/typescript/src/features/completionItemProvider.ts b/extensions/typescript/src/features/completionItemProvider.ts index f4e46e19cee..813ba074360 100644 --- a/extensions/typescript/src/features/completionItemProvider.ts +++ b/extensions/typescript/src/features/completionItemProvider.ts @@ -11,7 +11,7 @@ import TypingsStatus from '../utils/typingsStatus'; import * as PConst from '../protocol.const'; import { CompletionEntry, CompletionsRequestArgs, CompletionDetailsRequestArgs, CompletionEntryDetails } from '../protocol'; import * as Previewer from './previewer'; -import { tsTextSpanToVsRange, vsPositionToTsFileLocation } from '../utils/convert'; +import { tsTextSpanToVsRange, vsPositionToTsFileLocation, tsLocationToVsPosition } from '../utils/convert'; import * as nls from 'vscode-nls'; let localize = nls.loadMessageBundle(); @@ -46,6 +46,10 @@ class MyCompletionItem extends CompletionItem { } } } + + if (entry.hasAction) { + + } } private static convertKind(kind: string): CompletionItemKind { @@ -277,9 +281,25 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP } const detail = details[0]; item.detail = Previewer.plain(detail.displayParts); - item.documentation = Previewer.markdownDocumentation(detail.documentation, detail.tags); + if (detail.codeActions && detail.codeActions.length) { + const additionalEdits: TextEdit[] = []; + for (const action of detail.codeActions) { + for (const change of action.changes) { + if (change.fileName !== filepath) { + continue; + } + for (const edit of change.textChanges) { + additionalEdits.push(new TextEdit( + new Range(tsLocationToVsPosition(edit.start), tsLocationToVsPosition(edit.end)), + edit.newText)); + } + } + } + item.additionalTextEdits = additionalEdits; + } + if (detail && this.config.useCodeSnippetsOnMethodSuggest && (item.kind === CompletionItemKind.Function || item.kind === CompletionItemKind.Method)) { return this.isValidFunctionCompletionContext(filepath, item.position).then(shouldCompleteFunction => { if (shouldCompleteFunction) {