From 241def9c7619c437aad1bb620be8891e61707d8d Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 16 Jun 2022 01:50:43 -0700 Subject: Language server: document symbols (#2287) * Language Server: Document Symbol outline. * Fix highlighting of extension decls. Co-authored-by: Yong He --- .../slang-language-server-protocol.cpp | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'source/compiler-core/slang-language-server-protocol.cpp') diff --git a/source/compiler-core/slang-language-server-protocol.cpp b/source/compiler-core/slang-language-server-protocol.cpp index 713d209dd..51799f05e 100644 --- a/source/compiler-core/slang-language-server-protocol.cpp +++ b/source/compiler-core/slang-language-server-protocol.cpp @@ -215,6 +215,7 @@ static const StructRttiInfo _makeServerCapabilitiesRtti() builder.addField("completionProvider", &obj.completionProvider); builder.addField("semanticTokensProvider", &obj.semanticTokensProvider); builder.addField("signatureHelpProvider", &obj.signatureHelpProvider); + builder.addField("documentSymbolProvider", &obj.documentSymbolProvider); builder.ignoreUnknownFields(); return builder.make(); } @@ -574,6 +575,35 @@ const StructRttiInfo LogMessageParams::g_rttiInfo = _makeLogMessageParamsRtti(); const UnownedStringSlice LogMessageParams::methodName = UnownedStringSlice::fromLiteral("window/logMessage"); +static const StructRttiInfo _makeDocumentSymbolParamsRtti() +{ + DocumentSymbolParams obj; + StructRttiBuilder builder( + &obj, "LanguageServerProtocol::DocumentSymbolParams", &WorkDoneProgressParams::g_rttiInfo); + builder.addField("textDocument", &obj.textDocument); + builder.ignoreUnknownFields(); + return builder.make(); +} +const StructRttiInfo DocumentSymbolParams::g_rttiInfo = _makeDocumentSymbolParamsRtti(); +const UnownedStringSlice DocumentSymbolParams::methodName = + UnownedStringSlice::fromLiteral("textDocument/documentSymbol"); + +static const StructRttiInfo _makeDocumentSymbolRtti() +{ + DocumentSymbol obj; + StructRttiBuilder builder( + &obj, "LanguageServerProtocol::DocumentSymbol", nullptr); + builder.addField("name", &obj.name); + builder.addField("detail", &obj.detail); + builder.addField("kind", &obj.kind); + builder.addField("range", &obj.range); + builder.addField("selectionRange", &obj.selectionRange); + builder.addField("children", &obj.children); + builder.ignoreUnknownFields(); + return builder.make(); +} +const StructRttiInfo DocumentSymbol::g_rttiInfo = _makeDocumentSymbolRtti(); + } // namespace LanguageServerProtocol } -- cgit v1.2.3