@@ -210,6 +210,10 @@ static void findRelatedIdents(StringRef Filename, int64_t Offset,
210
210
SourceKitCancellationToken CancellationToken,
211
211
ResponseReceiver Rec);
212
212
213
+ static void findActiveRegions(StringRef Filename, ArrayRef<const char *> Args,
214
+ SourceKitCancellationToken CancellationToken,
215
+ ResponseReceiver Rec);
216
+
213
217
static sourcekitd_response_t
214
218
codeComplete(llvm::MemoryBuffer *InputBuf, int64_t Offset,
215
219
Optional<RequestDict> optionsDict, ArrayRef<const char *> Args,
@@ -1682,6 +1686,25 @@ handleRequestRelatedIdents(const RequestDict &Req,
1682
1686
});
1683
1687
}
1684
1688
1689
+ static void
1690
+ handleRequestActiveRegions(const RequestDict &Req,
1691
+ SourceKitCancellationToken CancellationToken,
1692
+ ResponseReceiver Rec) {
1693
+ if (checkVFSNotSupported(Req, Rec))
1694
+ return;
1695
+
1696
+ handleSemanticRequest(Req, Rec, [Req, CancellationToken, Rec]() {
1697
+ auto SourceFile = getSourceFileNameForRequestOrEmitError(Req, Rec);
1698
+ if (!SourceFile)
1699
+ return;
1700
+ SmallVector<const char *> Args;
1701
+ if (getCompilerArgumentsForRequestOrEmitError(Req, Args, Rec))
1702
+ return;
1703
+
1704
+ return findActiveRegions(*SourceFile, Args, CancellationToken, Rec);
1705
+ });
1706
+ }
1707
+
1685
1708
static void
1686
1709
handleRequestDiagnostics(const RequestDict &Req,
1687
1710
SourceKitCancellationToken CancellationToken,
@@ -1805,6 +1828,7 @@ void handleRequestImpl(sourcekitd_object_t ReqObj,
1805
1828
handleRequestFindLocalRenameRanges)
1806
1829
HANDLE_REQUEST(RequestNameTranslation, handleRequestNameTranslation)
1807
1830
HANDLE_REQUEST(RequestRelatedIdents, handleRequestRelatedIdents)
1831
+ HANDLE_REQUEST(RequestActiveRegions, handleRequestActiveRegions)
1808
1832
HANDLE_REQUEST(RequestDiagnostics, handleRequestDiagnostics)
1809
1833
1810
1834
{
@@ -2576,6 +2600,38 @@ static void findRelatedIdents(StringRef Filename, int64_t Offset,
2576
2600
});
2577
2601
}
2578
2602
2603
+ // ===----------------------------------------------------------------------===//
2604
+ // FindActiveRegions
2605
+ // ===----------------------------------------------------------------------===//
2606
+
2607
+ static void findActiveRegions (StringRef Filename, ArrayRef<const char *> Args,
2608
+ SourceKitCancellationToken CancellationToken,
2609
+ ResponseReceiver Rec) {
2610
+ LangSupport &Lang = getGlobalContext ().getSwiftLangSupport ();
2611
+
2612
+ Lang.findActiveRegionsInFile (
2613
+ Filename, Args, CancellationToken,
2614
+ [Rec](const RequestResult<ActiveRegionsInfo> &Result) {
2615
+ if (Result.isCancelled ())
2616
+ return Rec (createErrorRequestCancelled ());
2617
+ if (Result.isError ())
2618
+ return Rec (createErrorRequestFailed (Result.getError ()));
2619
+
2620
+ const ActiveRegionsInfo &Info = Result.value ();
2621
+
2622
+ ResponseBuilder RespBuilder;
2623
+ auto Arr = RespBuilder.getDictionary ().setArray (KeyResults);
2624
+ for (auto Config : Info.Configs ) {
2625
+ auto Elem = Arr.appendDictionary ();
2626
+ Elem.set (KeyOffset, Config.Offset );
2627
+ if (Config.IsActive )
2628
+ Elem.setBool (KeyIsActive, true );
2629
+ }
2630
+
2631
+ Rec (RespBuilder.createResponse ());
2632
+ });
2633
+ }
2634
+
2579
2635
// ===----------------------------------------------------------------------===//
2580
2636
// CodeComplete
2581
2637
// ===----------------------------------------------------------------------===//
0 commit comments