提交 92fc1f1f 编写于 作者: M Matt Bierner

Enable file icons for js/ts path intellisense

Fixes #61625

Requires TS 3.2+. Uses the kind modifier to determine the type of the file being imported
上级 d5913e54
......@@ -86,6 +86,19 @@ class MyCompletionItem extends vscode.CompletionItem {
}
this.label += '?';
}
if (tsEntry.kind === PConst.Kind.script && tsEntry.kindModifiers) {
for (const extModifier of PConst.KindModifiers.fileExtensionKindModifiers) {
if (tsEntry.kindModifiers.match(extModifier.pattern)) {
if (tsEntry.name.toLowerCase().endsWith(extModifier.value)) {
this.detail = tsEntry.name;
} else {
this.detail = tsEntry.name + extModifier.value;
}
break;
}
}
}
this.resolveRange(line);
}
......@@ -400,19 +413,16 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider
]
};
let details: Proto.CompletionEntryDetails[] | undefined;
const response = await this.client.execute('completionEntryDetails', args, token);
if (response.type !== 'response') {
if (response.type !== 'response' || !response.body) {
return item;
}
const { body } = response;
details = body;
if (!details || !details.length || !details[0]) {
return item;
const detail = response.body[0];
if (!item.detail && detail.displayParts.length) {
item.detail = Previewer.plain(detail.displayParts);
}
const detail = details[0];
item.detail = detail.displayParts.length ? Previewer.plain(detail.displayParts) : undefined;
item.documentation = this.getDocumentation(detail, item);
const codeAction = this.getCodeActions(detail, filepath);
......
......@@ -39,4 +39,27 @@ export class DiagnosticCategory {
public static readonly error = 'error';
public static readonly warning = 'warning';
public static readonly suggestion = 'suggestion';
}
interface KindModifier {
readonly pattern: RegExp;
readonly value: string;
}
export class KindModifiers {
public static readonly dtsModifier: KindModifier = { pattern: /(^|\s)\.d\.ts($|\s)/i, value: '.d.ts' };
public static readonly tsModifier: KindModifier = { pattern: /(^|\s)\.ts($|\s)/i, value: '.ts' };
public static readonly tsxModifier: KindModifier = { pattern: /(^|\s)\.tsx($|\s)/i, value: '.tsx' };
public static readonly jsModifier: KindModifier = { pattern: /(^|\s)\.js($|\s)/i, value: '.js' };
public static readonly jsxModifier: KindModifier = { pattern: /(^|\s)\.jsx($|\s)/i, value: '.jsx' };
public static readonly jsonModifier: KindModifier = { pattern: /(^|\s)\.json($|\s)/i, value: '.json' };
public static readonly fileExtensionKindModifiers = [
KindModifiers.dtsModifier,
KindModifiers.tsModifier,
KindModifiers.tsxModifier,
KindModifiers.jsModifier,
KindModifiers.jsxModifier,
KindModifiers.jsonModifier,
];
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册