Put auto import label first in suggestions

Fixes #38102
This commit is contained in:
Matt Bierner
2017-11-27 11:11:34 -08:00
parent 74dee2bf60
commit 952d76ee3c
2 changed files with 22 additions and 12 deletions

View File

@@ -328,21 +328,27 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP
const detail = details[0];
item.detail = Previewer.plain(detail.displayParts);
const documentation = new MarkdownString();
if (item.source) {
let importPath = `'${item.source}'`;
// Try to resolve the real import name that will be added
if (detail.codeActions && detail.codeActions[0]) {
const action = detail.codeActions[0];
if (action.changes[0] && action.changes[0].textChanges[0]) {
const textChange = action.changes[0].textChanges[0];
const matchedImport = textChange.newText.match(/(['"])(.+?)\1/);
if (matchedImport) {
importPath = matchedImport[0];
item.detail += ` — from ${matchedImport[0]}`;
if (detail.source) {
let importPath = `'${Previewer.plain(detail.source)}'`;
if (this.client.apiVersion.has260Features() && !this.client.apiVersion.has262Features()) {
// Try to resolve the real import name that will be added
if (detail.codeActions && detail.codeActions[0]) {
const action = detail.codeActions[0];
if (action.changes[0] && action.changes[0].textChanges[0]) {
const textChange = action.changes[0].textChanges[0];
const matchedImport = textChange.newText.match(/(['"])(.+?)\1/);
if (matchedImport) {
importPath = matchedImport[0];
item.detail += ` — from ${matchedImport[0]}`;
}
}
}
documentation.appendMarkdown(localize('autoImportLabel', 'Auto import from {0}', importPath));
} else {
const autoImportLabel = localize('autoImportLabel', 'Auto import from {0}', importPath);
item.detail = `${autoImportLabel}\n${item.detail}`;
}
documentation.appendMarkdown(localize('autoImportLabel', 'Auto import from {0}', importPath));
documentation.appendMarkdown('\n\n');
}

View File

@@ -72,4 +72,8 @@ export default class API {
public has260Features(): boolean {
return semver.gte(this.version, '2.6.0');
}
public has262Features(): boolean {
return semver.gte(this.version, '2.6.2');
}
}