From 470c5a28f5b84353f077c2d871db65cddd5f923a Mon Sep 17 00:00:00 2001 From: Yong He Date: Fri, 26 Jan 2024 16:30:19 -0800 Subject: Fix LSP compatibility issues with Visual Studio. (#3520) * [LSP] compatibility logic for Visual Studio. * [LSP] Fix diagnostic rank parsing. * [LSP] Fix semantic highlighting of cbuffer types. * Fix. * Fix. --------- Co-authored-by: Yong He --- .../slang-language-server-protocol.cpp | 34 ++++++++++++++++++++++ 1 file changed, 34 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 628baf08d..93ea0c9e3 100644 --- a/source/compiler-core/slang-language-server-protocol.cpp +++ b/source/compiler-core/slang-language-server-protocol.cpp @@ -257,6 +257,29 @@ static const StructRttiInfo _makeServerCapabilitiesRtti() } const StructRttiInfo ServerCapabilities::g_rttiInfo = _makeServerCapabilitiesRtti(); +static const StructRttiInfo _makeVSServerCapabilitiesRtti() +{ + VSServerCapabilities obj; + StructRttiBuilder builder(&obj, "LanguageServerProtocol::ServerCapabilities", nullptr); + builder.addField("positionEncoding", &obj.positionEncoding); + builder.addField("textDocumentSync", &obj.textDocumentSync); + builder.addField("workspace", &obj.workspace); + builder.addField("hoverProvider", &obj.hoverProvider); + builder.addField("inlayHintProvider", &obj.inlayHintProvider); + builder.addField("documentOnTypeFormattingProvider", &obj.documentOnTypeFormattingProvider); + builder.addField("documentFormattingProvider", &obj.documentFormattingProvider); + builder.addField("documentRangeFormattingProvider", &obj.documentRangeFormattingProvider); + builder.addField("definitionProvider", &obj.definitionProvider); + builder.addField("completionProvider", &obj.completionProvider); + builder.addField("semanticTokensProvider", &obj.semanticTokensProvider); + builder.addField("signatureHelpProvider", &obj.signatureHelpProvider); + builder.addField("documentSymbolProvider", &obj.documentSymbolProvider); + builder.addField("_vs_projectContextProvider", &obj._vs_projectContextProvider); + builder.ignoreUnknownFields(); + return builder.make(); +} +const StructRttiInfo VSServerCapabilities::g_rttiInfo = _makeVSServerCapabilitiesRtti(); + static const StructRttiInfo _makeServerInfoRtti() { ServerInfo obj; @@ -280,6 +303,17 @@ static const StructRttiInfo _makeInitializeResultRtti() } const StructRttiInfo InitializeResult::g_rttiInfo = _makeInitializeResultRtti(); +static const StructRttiInfo _makeVSInitializeResultRtti() +{ + VSInitializeResult obj; + StructRttiBuilder builder(&obj, "LanguageServerProtocol::VSInitializeResult", nullptr); + builder.addField("capabilities", &obj.capabilities); + builder.addField("serverInfo", &obj.serverInfo); + builder.ignoreUnknownFields(); + return builder.make(); +} +const StructRttiInfo VSInitializeResult::g_rttiInfo = _makeVSInitializeResultRtti(); + const UnownedStringSlice InitializeParams::methodName = UnownedStringSlice::fromLiteral("initialize"); -- cgit v1.2.3