Auto import dependencies when accepting a global suggestion

Fixes #2635
This commit is contained in:
Matt Bierner 2017-10-20 11:48:36 -07:00
parent 5943b174aa
commit a8fdcc4a6d

View file

@ -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) {