@@ -637,6 +637,8 @@ void ClangdLSPServer::onInitialize(const InitializeParams &Params,
637
637
->insert (
638
638
{" semanticHighlighting" ,
639
639
llvm::json::Object{{" scopes" , buildHighlightScopeLookupTable ()}}});
640
+ if (ClangdServerOpts.FoldingRanges )
641
+ Result.getObject (" capabilities" )->insert ({" foldingRangeProvider" , true });
640
642
Reply (std::move (Result));
641
643
}
642
644
@@ -929,7 +931,6 @@ void ClangdLSPServer::onDocumentFormatting(
929
931
static std::vector<SymbolInformation>
930
932
flattenSymbolHierarchy (llvm::ArrayRef<DocumentSymbol> Symbols,
931
933
const URIForFile &FileURI) {
932
-
933
934
std::vector<SymbolInformation> Results;
934
935
std::function<void (const DocumentSymbol &, llvm::StringRef)> Process =
935
936
[&](const DocumentSymbol &S, llvm::Optional<llvm::StringRef> ParentName) {
@@ -968,6 +969,12 @@ void ClangdLSPServer::onDocumentSymbol(const DocumentSymbolParams &Params,
968
969
});
969
970
}
970
971
972
+ void ClangdLSPServer::onFoldingRange (
973
+ const FoldingRangeParams &Params,
974
+ Callback<std::vector<FoldingRange>> Reply) {
975
+ Server->foldingRanges (Params.textDocument .uri .file (), std::move (Reply));
976
+ }
977
+
971
978
static llvm::Optional<Command> asCommand (const CodeAction &Action) {
972
979
Command Cmd;
973
980
if (Action.command && Action.edit )
@@ -1395,6 +1402,8 @@ ClangdLSPServer::ClangdLSPServer(
1395
1402
MsgHandler->bind (" textDocument/documentLink" , &ClangdLSPServer::onDocumentLink);
1396
1403
MsgHandler->bind (" textDocument/semanticTokens/full" , &ClangdLSPServer::onSemanticTokens);
1397
1404
MsgHandler->bind (" textDocument/semanticTokens/full/delta" , &ClangdLSPServer::onSemanticTokensDelta);
1405
+ if (Opts.FoldingRanges )
1406
+ MsgHandler->bind (" textDocument/foldingRange" , &ClangdLSPServer::onFoldingRange);
1398
1407
// clang-format on
1399
1408
}
1400
1409
0 commit comments