Syntaxhervorhebung in Cocoa Textview? Erfahrungen? Vorschläge? Ideen? [Duplikat]
-
13-09-2019 - |
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 einemTextView
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 :
-
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. -
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?
-
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. -
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
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.