in server/src/session.ts [1048:1083]
private onCompletionResolve(item: lsp.CompletionItem): lsp.CompletionItem {
const data = readNgCompletionData(item);
if (data === null) {
// This item wasn't tagged with Angular LS completion data - it probably didn't originate
// from this language service.
return item;
}
const {filePath, position} = data;
const lsInfo = this.getLSAndScriptInfo(filePath);
if (lsInfo === null) {
return item;
}
const {languageService, scriptInfo} = lsInfo;
const offset = lspPositionToTsPosition(scriptInfo, position);
const details = languageService.getCompletionEntryDetails(
filePath, offset, item.insertText ?? item.label, undefined, undefined, undefined,
undefined);
if (details === undefined) {
return item;
}
const {kind, kindModifiers, displayParts, documentation} = details;
let desc = kindModifiers ? kindModifiers + ' ' : '';
if (displayParts && displayParts.length > 0) {
// displayParts does not contain info about kindModifiers
// but displayParts does contain info about kind
desc += displayParts.map(dp => dp.text).join('');
} else {
desc += kind;
}
item.detail = desc;
item.documentation = documentation?.map(d => d.text).join('');
return item;
}