Untitled
unknown
plain_text
2 years ago
1.8 kB
75
Indexable
func fullDocumentContext() -> String {
let textDocument = self.textDocumentProxy
var before = textDocument.documentContextBeforeInput
var completePriorString = ""
// Grab everything before the cursor
while (before != nil && !before!.isEmpty) {
completePriorString = before! + completePriorString
let length = before!.lengthOfBytes(using: .utf8)
textDocument.adjustTextPosition(byCharacterOffset: length)
Thread.sleep(forTimeInterval: 0.01)
before = textDocument.documentContextBeforeInput
}
// Move the cursor back to the original position
textDocument.adjustTextPosition(byCharacterOffset: completePriorString.count)
Thread.sleep(forTimeInterval: 0.01)
var after = textDocument.documentContextAfterInput
var completeAfterString = ""
// Grab everything after the cursor
while (after != nil && !after!.isEmpty) {
completeAfterString += after!
let length = after!.lengthOfBytes(using: .utf8)
textDocument.adjustTextPosition(byCharacterOffset: length)
Thread.sleep(forTimeInterval: 0.01)
after = textDocument.documentContextAfterInput
}
// Go back to the original cursor position
textDocument.adjustTextPosition(byCharacterOffset: -(completeAfterString.count))
let completeString = completePriorString + completeAfterString
print(completeString)
return completeString
}
DispatchQueue(label: "com.example.test", qos: .userInitiated, attributes: .concurrent).async {
let string = self.fullDocumentContext()
debugPrint("Whole Document String",string)
}Editor is loading...
Leave a Comment