Skip to content

Commit c6d99c4

Browse files
authored
Merge pull request #566 from ahoppen/pr/close-folding-ranges
Close temporarily opened documents
2 parents 0329b49 + 1ad7e30 commit c6d99c4

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

Sources/SourceKitLSP/Swift/SwiftLanguageServer.swift

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -659,14 +659,23 @@ extension SwiftLanguageServer {
659659
return completion(.failure(.unknown(msg)))
660660
}
661661

662+
let helperDocumentName = "DocumentSymbols:" + snapshot.document.uri.pseudoPath
662663
let skreq = SKDRequestDictionary(sourcekitd: self.sourcekitd)
663664
skreq[keys.request] = self.requests.editor_open
664-
skreq[keys.name] = "DocumentSymbols:" + snapshot.document.uri.pseudoPath
665+
skreq[keys.name] = helperDocumentName
665666
skreq[keys.sourcetext] = snapshot.text
666667
skreq[keys.syntactic_only] = 1
667668

668669
let handle = self.sourcekitd.send(skreq, self.queue) { [weak self] result in
669670
guard let self = self else { return }
671+
672+
defer {
673+
let closeHelperReq = SKDRequestDictionary(sourcekitd: self.sourcekitd)
674+
closeHelperReq[self.keys.request] = self.requests.editor_close
675+
closeHelperReq[self.keys.name] = helperDocumentName
676+
_ = self.sourcekitd.send(closeHelperReq, .global(qos: .utility), reply: { _ in })
677+
}
678+
670679
guard let dict = result.success else {
671680
return completion(.failure(ResponseError(result.failure!)))
672681
}
@@ -756,14 +765,23 @@ extension SwiftLanguageServer {
756765
return
757766
}
758767

768+
let helperDocumentName = "DocumentColor:" + snapshot.document.uri.pseudoPath
759769
let skreq = SKDRequestDictionary(sourcekitd: self.sourcekitd)
760770
skreq[keys.request] = self.requests.editor_open
761-
skreq[keys.name] = "DocumentColor:" + snapshot.document.uri.pseudoPath
771+
skreq[keys.name] = helperDocumentName
762772
skreq[keys.sourcetext] = snapshot.text
763773
skreq[keys.syntactic_only] = 1
764774

765775
let handle = self.sourcekitd.send(skreq, self.queue) { [weak self] result in
766776
guard let self = self else { return }
777+
778+
defer {
779+
let closeHelperReq = SKDRequestDictionary(sourcekitd: self.sourcekitd)
780+
closeHelperReq[keys.request] = self.requests.editor_close
781+
closeHelperReq[keys.name] = helperDocumentName
782+
_ = self.sourcekitd.send(closeHelperReq, .global(qos: .utility), reply: { _ in })
783+
}
784+
767785
guard let dict = result.success else {
768786
req.reply(.failure(ResponseError(result.failure!)))
769787
return
@@ -962,14 +980,23 @@ extension SwiftLanguageServer {
962980
return
963981
}
964982

983+
let helperDocumentName = "FoldingRanges:" + snapshot.document.uri.pseudoPath
965984
let skreq = SKDRequestDictionary(sourcekitd: self.sourcekitd)
966985
skreq[keys.request] = self.requests.editor_open
967-
skreq[keys.name] = "FoldingRanges:" + snapshot.document.uri.pseudoPath
986+
skreq[keys.name] = helperDocumentName
968987
skreq[keys.sourcetext] = snapshot.text
969988
skreq[keys.syntactic_only] = 1
970989

971990
let handle = self.sourcekitd.send(skreq, self.queue) { [weak self] result in
972991
guard let self = self else { return }
992+
993+
defer {
994+
let closeHelperReq = SKDRequestDictionary(sourcekitd: self.sourcekitd)
995+
closeHelperReq[keys.request] = self.requests.editor_close
996+
closeHelperReq[keys.name] = helperDocumentName
997+
_ = self.sourcekitd.send(closeHelperReq, .global(qos: .utility), reply: { _ in })
998+
}
999+
9731000
guard let dict = result.success else {
9741001
req.reply(.failure(ResponseError(result.failure!)))
9751002
return

0 commit comments

Comments
 (0)