summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-language-server.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-04-27 18:32:20 -0700
committerGitHub <noreply@github.com>2023-04-27 18:32:20 -0700
commit53793612e3a2f1cadc4f7cbf703bcd94b7121414 (patch)
treeb995fb1e7b91817439f6f51f2489362b8b027a81 /source/slang/slang-language-server.cpp
parent60d829091cc97eef4fd36211afe8a83ad282c4de (diff)
Embed stdlib documentation to AST. (#2851)
* Embed stdlib documentation to AST. * Extract documentation for attributes. --------- Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-language-server.cpp')
-rw-r--r--source/slang/slang-language-server.cpp22
1 files changed, 15 insertions, 7 deletions
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<Decl> declRef)
{
return "(generic value parameter) ";
}
- else if (declRef.as<AttributeDecl>())
- {
- return "(attribute) ";
- }
else if (auto varDecl = declRef.as<VarDeclBase>())
{
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>(decl, nullptr));
}
+ else if (auto attr = as<Attribute>(leafNode))
+ {
+ fillDeclRefHoverInfo(DeclRef<Decl>(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 == "[")