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;