Make proper definition of a completion item

This commit is contained in:
RUSshy 2021-10-05 17:50:51 +02:00 committed by GitHub
parent 02acaa534b
commit e2d03f622d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 52 additions and 3 deletions

View File

@ -758,10 +758,59 @@ AutocompleteResponse.Completion makeSymbolCompletionInfo(const DSymbol* symbol,
string definition;
if ((kind == CompletionKind.variableName || kind == CompletionKind.memberVariableName) && symbol.type)
definition = symbol.type.name ~ ' ' ~ symbol.name;
else if (kind == CompletionKind.enumMember)
definition = symbol.name; // TODO: add enum value to definition string
else
definition = symbol.callTip;
{
switch (kind)
{
case 'e':
definition = symbol.name; // TODO: add enum value to definition string
break;
case 'c':
definition = "Class";
break;
case 'i':
definition = "Interface";
break;
case 's':
definition = "Struct";
break;
case 'u':
definition = "Union";
break;
case 'a':
definition = "Array";
break;
case 'A':
definition = "AA";
break;
case 'k':
definition = "Keyword";
break;
case 'g':
definition = "Enum";
break;
case 'P':
definition = "Package";
break;
case 'M':
definition = "Module";
break;
case 't':
case 'T':
definition = "Template";
break;
case 'h':
definition = "<T>";
break;
case 'p':
definition = "<T...>";
break;
case 'l': // Alias (eventually should show what it aliases to)
default:
definition = symbol.callTip;
break;
}
}
// TODO: definition strings could include more information, like on classes inheritance
return AutocompleteResponse.Completion(symbol.name, kind, definition,
symbol.symbolFile, symbol.location, symbol.doc);