2016-08-24 3 views
0

Ich schreibe ein Plugin zu Xcode 7. Ich habe die DVTSourceTextView und kann es einfach bearbeiten. Eines der Dinge, die ich finden möchte, ist welche Datei damit verwandt ist. Unglücklicherweise scheint DVTSourceTextView diese Information nicht zu bieten - oder wenn es so ist, ist es in einer Weise vergraben, die ich nicht sehe.So ermitteln Sie die Datei-URL von DVTSourceTextView

Ich bin sicher, es ist eher trivial, ich vermisse nur etwas.

Antwort

0

Okay, das war einfacher als ich dachte. Ich näherte mich von einem anderen (wenn auch fast korrekten) Weg.

class func currentEditorView() -> (NSURL?, NSView?) { 
    let currentWindowController = NSApp.keyWindow?.windowController 
    guard currentWindowController!.className == "IDEWorkspaceWindowController" else { return (nil, nil) } 

    let filename = currentWindowController!.valueForKey("editorArea")!.valueForKey("lastActiveEditorContext")!.valueForKey("originalRequestedDocumentURL") 

    let editor = currentWindowController!.valueForKey("editorArea")!.valueForKey("lastActiveEditorContext")!.valueForKey("editor")!.valueForKey("textView") 

    return (filename as? NSURL, editor as? NSView) 
} 

Das gibt mir sowohl die Dateinamen als NSURL sowie die DVTSourceTextView als NSView ohne die Notwendigkeit der privaten Header inklusive. Spiffy.

Jetzt kenne ich nicht nur den Namen der Datei, die ich gerade bearbeite, sondern auch, ob es sich um eine schnelle, objc, c oder C++ Datei handelt! Das ist Coolness!

+0

Natürlich ist dies bei Xcode 8 alles andere als strittig. –

Verwandte Themen