From 53793612e3a2f1cadc4f7cbf703bcd94b7121414 Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 27 Apr 2023 18:32:20 -0700 Subject: Embed stdlib documentation to AST. (#2851) * Embed stdlib documentation to AST. * Extract documentation for attributes. --------- Co-authored-by: Yong He --- source/slang/slang-language-server.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'source/slang/slang-language-server.cpp') diff --git a/source/slang/slang-language-server.cpp b/source/slang/slang-language-server.cpp index b826d7cfe..dbe031fd3 100644 --- a/source/slang/slang-language-server.cpp +++ b/source/slang/slang-language-server.cpp @@ -230,10 +230,6 @@ String getDeclKindString(DeclRef declRef) { return "(generic value parameter) "; } - else if (declRef.as()) - { - return "(attribute) "; - } else if (auto varDecl = declRef.as()) { auto parent = declRef.getParent(); @@ -422,8 +418,16 @@ static void _tryGetDocumentation(StringBuilder& sb, WorkspaceVersion* workspace, auto definingModule = getModuleDecl(decl); if (definingModule) { - auto markupAST = workspace->getOrCreateMarkupAST(definingModule); - auto markupEntry = markupAST->getEntry(decl); + MarkupEntry* markupEntry = nullptr; + if (decl->markup) + { + markupEntry = decl->markup; + } + else + { + auto markupAST = workspace->getOrCreateMarkupAST(definingModule); + markupEntry = markupAST->getEntry(decl); + } if (markupEntry) { sb << "\n"; @@ -705,6 +709,10 @@ SlangResult LanguageServer::hover( { fillDeclRefHoverInfo(DeclRef(decl, nullptr)); } + else if (auto attr = as(leafNode)) + { + fillDeclRefHoverInfo(DeclRef(attr->attributeDecl, nullptr)); + } if (sb.getLength() == 0) { m_connection->sendResult(NullResponse::get(), responseId); @@ -951,7 +959,7 @@ SlangResult LanguageServer::completion( return SLANG_OK; } - // Don't general completion suggestions after typing '['. + // Don't generate completion suggestions after typing '['. if (args.context.triggerKind == LanguageServerProtocol::kCompletionTriggerKindTriggerCharacter && args.context.triggerCharacter == "[") -- cgit v1.2.3