diff --git a/src/indexer.cc b/src/indexer.cc index 458f8b8d..5ab31326 100644 --- a/src/indexer.cc +++ b/src/indexer.cc @@ -193,6 +193,10 @@ Kind GetKind(const Decl *D, SymbolKind &kind) { case Decl::CXXDestructor: kind = SymbolKind::Method; return Kind::Func; + case Decl::NonTypeTemplateParm: + // ccls extension + kind = SymbolKind::Parameter; + return Kind::Var; case Decl::Var: case Decl::Decomposition: kind = SymbolKind::Variable; @@ -824,7 +828,7 @@ public: if (D->getKind() == Decl::TemplateTypeParm) type->def.detailed_name = Intern(info->short_name); else - SetName(D, info->short_name, info->qualified, type->def); + SetName(OrigD, info->short_name, info->qualified, type->def); } if (is_def || is_decl) { const Decl *DC = cast(SemDC); diff --git a/src/messages/textDocument_completion.cc b/src/messages/textDocument_completion.cc index 714a63a6..8e0a4772 100644 --- a/src/messages/textDocument_completion.cc +++ b/src/messages/textDocument_completion.cc @@ -272,6 +272,9 @@ CompletionItemKind GetCompletionKind(CodeCompletionContext::Kind K, case Decl::TypeAlias: case Decl::Typedef: return CompletionItemKind::TypeParameter; + case Decl::Using: + case Decl::ConstructorUsingShadow: + return CompletionItemKind::Keyword; case Decl::Binding: return CompletionItemKind::Variable; case Decl::Field: