Frage

  

Mögliche Duplizieren:
   Syntax-Einfärbung für Cocoa-Anwendung

Ich habe Interesse an Syntaxhervorhebung in einem Kakao Textview.

Ich fand mehrere Quellen an:

  • Ansatz mit flex über eine flex Muster abgestimmt gegen textStorageDidProcessEditing in einem TextView delegieren. Bei diesem Ansatz der gesamte Zeichenkette für jedes Eingabeereignis analysiert erhalten, damit die Leistung verschlechtert.

  • CocoaDev hat eine eigene Seite zum Thema Syntax-Hervorhebung :

    1. Mit NSTextStorageDidProcessEditingNotification, dann bekommen die bearbeitete Bereich, und gelten nur die Färbung gibt. Der Bereich könnte wordboundaries oder irgendetwas sein; dies auf jeden Fall verbessert die Leistung.

    2. erwähnt werden. Xcode zum Beispiel nur Text koloriert, die derzeit auf dem Bildschirm, und verschiebt den Rest des Dokuments Einfärben, bis Sie durch sie bewegen Wie würde man dies umsetzen?

    3. NSLayoutManager verwenden - über Temporäre Attribute [die] nur für das Zeichnen auf dem Bildschirm verwendet werden und sind nicht persistent in irgendeiner Weise ... wie die docs sagen, aber das nicht den letzten bearbeitete Bereich Farbe, bis ein Leerzeichen eingegeben wird.

    4. Benutzerdefinierte Helper wie UKSyntaxColoredDocument - schön, aber Sprachdefinition wird über Eigenschaftsliste erfolgen; wie zusätzliche / vorhandene Sprachdefinitionen zu benutzen?

Keiner der Ansätze scheint wirklich dehnbar oder robust ich (mit Ausnahme der 4. vielleicht ..).

Ich bin mir dessen bewusst robust bestehenden Bibliotheken für SH wie pygments ; und PyObjC .

Frage : Wie wäre es möglich, eine bestehende Bibliothek zu verwenden z.B. wie pygments eine erweiterbare und performant Syntax in einer Cocoa TextView hervorgehoben haben?

Hinweis : Ich weiß, diese Frage ist sehr breit (und viel zu lang). Erfahrungen und Anregungen sowie Lösungen sind willkommen. Vielen Dank.


Gefunden einer anderen ähnlichen Thread zu dieser Frage: Färbung Syntax für Cocoa-Anwendung

War es hilfreich?

Lösung

Ich würde vorschlagen, einen Blick auf den Quellcode unter Smultron . Es hat sehr schöne Syntaxhervorhebung. Es verwendet eine Unterklasse von NSTextView die meisten schweren Heben zu tun. Der Code verwendet die Layout-Manager-Attribute für den Text zu addieren und verwendet einige andere clevere Tricks, um nur so viel des Dokuments als notwendig hervorzuheben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top