2009-04-16 10 views
18

Ich arbeite an Cocoa Application, die in der Lage sein sollte, einen Quellcode in Objective-C, SQL, JavaScript, Python usw. zu analysieren und hervorzuheben. Der Text sollte auch editierbar sein (zB mit NSTextView) .Was ist der beste Weg, Syntax-Highlighting von Quellcode in Cocoa zu implementieren?

Bitte geben Sie an, wie Sie diese Funktion am besten in Mac OS X 10.5 implementieren können.

Die automatische Vervollständigung und andere Zusatzfunktionen müssen nicht unterstützt werden. Einfache Formatierung nach Schlüsselwörtern, Zeichenketten, #Includes und Zahlen, aber mit cooler Leistung ist nur OK.

Auch wäre es großartig, wenn die Konfiguration von Sprachen unterstützt würde.

Danke!

+0

Intelligente Syntaxhervorhebung kann ziemlich schwierig sein - das ist ein Teil davon, warum Apple so viel Arbeit auf dem Klirren Frontend LLVM zu tun. Vielleicht möchten Sie es überprüfen. – user57368

Antwort

16

In ein Projekt vorbereitet, die etwas ähnliches benötigen, habe ich folgendes (gefunden aber nicht bewertet sie in der Tiefe):

  • /Entwickler/Beispiele/OpenGL/Cocoa/GLSLEditorSample implementiert Syntax-Highlighting.
  • IDEKit, "ein Open-Source-Framework, das Programmierer Quellcode Bearbeitung bietet, einschließlich Syntax Färbung, Popup-Funktionen und Split Frames". Dies wurde für einige Zeit nicht aktualisiert (es bietet 10.2 und 10.3 Kompatibilität, und kommt mit einem Project Builder-Projekt - kann mit Xcode 2.5 konvertiert werden).
  • UKSyntaxColoredTextDocument.
  • +4

    Gandreas hat den Repo getötet, aber ich habe eine Arbeitskopie (0,3, neuestes) aus einem alten SVN Repo [hier] (https://github.com/CodaFi/IDEKit) geborgen. Meine hat Xcode 4.x Unterstützung und ARC. – CodaFi

    1

    Sie können mit den in python geschriebenen Segmenten eine HTML-Darstellung des Quellcodes generieren, die dann in einer Web-Ansicht dargestellt werden kann.

    (Beachten Sie, wie in Kommentar unten reflektiert -. Diese Antwort wurde auf die ursprüngliche Frage, die nicht bearbeitbaren Text erwähnt hat)

    +0

    Danke Matthew. Entschuldigung, aber ich habe vergessen, eine weitere Anforderung hinzuzufügen. Der Quellcode sollte editierbar sein (zum Beispiel in der NSTextView platziert). Ist es möglich, Pygmente zu verwenden, um Hervorhebung in NSTextView zu integrieren, um dieses Ziel zu erreichen? – Stream

    +0

    Ich habe nichts anderes mit pegments als das Generieren von HTML getan, aber ich weiß, dass es in andere Formate einfließen kann. Es kann sein, dass eine davon eine Basis für die Anzeige von NSTextView sein kann. –

    6

    Ich würde zweitens Ahrumans Ratschlag befolgen - insbesondere Uli UKSyntaxColoredTextDocument betrachten, denn das wird Sie in die richtige Richtung weisen, welche Klassen usw. Sie lernen müssen.

    Dies ist eine weitere ausgezeichnete Informationsquelle:

    http://www.cocoadev.com/index.pl?ImplementSyntaxHighlighting

    Viel Glück - Syntax-Hervorhebung ist schwer richtig zu machen, aber viel Spaß auf dem Weg!

    +0

    Danke Jungs. Es sieht definitiv nach der richtigen Antwort aus. Ich werde Ulis Komponente sorgfältig untersuchen, aber ich möchte diese Frage einige Tage lang unbeantwortet lassen. Möglicherweise hat sich zu dieser Zeit jemand etwas Neues einfallen lassen. – Stream

    2

    ich für eine Syntax-Highlighting-Lösung für Cocoa vor kurzem suchen hatte und nach der Suche auf Stack-Überlauf, Google und GitHub nichts modern finden kann, leicht re- Gebrauch und noch in der aktiven Entwicklung.

    Es scheint, dass die meisten Syntax-Highlighter heutzutage für das Web geschrieben werden. Glücklicherweise ist es ziemlich einfach, sie in eine WebView einzubetten, um sie in jeder Cocoa-App zu verwenden. Die Kommunikation mit dem Editor kann über WebKits WebScriptObject protocol erfolgen.

    Hier ist ein Beispiel-Wrapper für den beliebten Texteditor JavaScript CodeMirror für Cocoa: https://github.com/swisspol/CodeMirrorView

    Verwandte Themen