Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
1.8 kB
9
Indexable
Never
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)
        }
Leave a Comment