From 9fb4db55bedc4c942113a51031342c64257e3a11 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 1 Jun 2021 12:57:37 +0200 Subject: [PATCH] LanguageClient: set the capability for hierarchical symbols Amends 696dedefa14d46e4227b4c7b1e68e258ad1b68c8 Change-Id: Id066ec6ea530b3bc50c4ca71dbfeb59d7520f7ac Reviewed-by: Christian Kandeler --- src/libs/languageserverprotocol/clientcapabilities.h | 6 ++++++ src/libs/languageserverprotocol/jsonkeys.h | 1 + src/plugins/languageclient/client.cpp | 1 + 3 files changed, 8 insertions(+) diff --git a/src/libs/languageserverprotocol/clientcapabilities.h b/src/libs/languageserverprotocol/clientcapabilities.h index f2b12fea684..147483c5042 100644 --- a/src/libs/languageserverprotocol/clientcapabilities.h +++ b/src/libs/languageserverprotocol/clientcapabilities.h @@ -149,6 +149,12 @@ public: { return optionalValue(symbolKindKey); } void setSymbolKind(const SymbolKindCapabilities &symbolKind) { insert(symbolKindKey, symbolKind); } void clearSymbolKind() { remove(symbolKindKey); } + + Utils::optional hierarchicalDocumentSymbolSupport() const + { return optionalValue(hierarchicalDocumentSymbolSupportKey); } + void setHierarchicalDocumentSymbolSupport(bool hierarchicalDocumentSymbolSupport) + { insert(hierarchicalDocumentSymbolSupportKey, hierarchicalDocumentSymbolSupport); } + void clearHierachicalDocumentSymbolSupport() { remove(hierarchicalDocumentSymbolSupportKey); } }; class LANGUAGESERVERPROTOCOL_EXPORT TextDocumentClientCapabilities : public JsonObject diff --git a/src/libs/languageserverprotocol/jsonkeys.h b/src/libs/languageserverprotocol/jsonkeys.h index 44978e4fc86..295ba1a89a5 100644 --- a/src/libs/languageserverprotocol/jsonkeys.h +++ b/src/libs/languageserverprotocol/jsonkeys.h @@ -116,6 +116,7 @@ constexpr char fullKey[] = "full"; constexpr char greenKey[] = "green"; constexpr char headerFieldSeparator[] = ": "; constexpr char headerSeparator[] = "\r\n"; +constexpr char hierarchicalDocumentSymbolSupportKey[] = "hierarchicalDocumentSymbolSupport"; constexpr char hoverKey[] = "hover"; constexpr char hoverProviderKey[] = "hoverProvider"; constexpr char idKey[] = "id"; diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 9424c0323ca..c6f5518707d 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -192,6 +192,7 @@ static ClientCapabilities generateClientCapabilities() SymbolKind::EnumMember, SymbolKind::Struct, SymbolKind::Event, SymbolKind::Operator, SymbolKind::TypeParameter}); symbolCapabilities.setSymbolKind(symbolKindCapabilities); + symbolCapabilities.setHierarchicalDocumentSymbolSupport(true); documentCapabilities.setDocumentSymbol(symbolCapabilities); TextDocumentClientCapabilities::SemanticHighlightingCapabilities semanticHighlight;