2009-06-09 4 views
10

Duplicar posible:
Syntax coloring for Cocoa appResaltado de sintaxis en Cocoa TextView? ¿Experiencias? Sugerencias? Ideas?

Estoy interesado en resaltado de sintaxis en un cacao TextView.

he encontrado varios recursos:

  • approach with flex, a través de un patrón flex compara con textStorageDidProcessEditing en un delegado TextView. En este enfoque, la secuencia completa se analiza en cada evento de entrada, por lo que el rendimiento se degrada.

  • CocoaDev tiene una own page on the topic of syntax highlighting:

    1. Uso NSTextStorageDidProcessEditingNotification, a continuación, obtener el rango editado, y sólo se aplica el colorante allí. El rango podría ser límites de palabras o cualquier cosa; esto definitivamente mejora el rendimiento.

    2. mencionado allí: Xcode, por ejemplo, solo colorea el texto que está actualmente en pantalla, y difiere el colorizar el resto del documento hasta que se desplace por él. ¿Cómo se implementaría esto?

    3. Uso NSLayoutManager - a través de atributos temporales [que] sólo se utilizan para dibujar en pantalla y no son persistentes en cualquier forma ... como dicen los documentos, pero que no colorea la última gama editada , hasta que se ingrese un carácter de espacio en blanco.

    4. Ayuda personalizada como UKSyntaxColoredDocument - agradable, pero la definición del idioma se realiza a través de la lista de propiedades; cómo usar definiciones de idiomas adicionales/existentes?

Ninguno de los enfoques parece muy extensible o robusto para mí (excepto tal vez el 4. ..).

Soy consciente de las sólidas bibliotecas existentes para SH como pygments; y de PyObjC.

Pregunta: ¿Cómo sería posible utilizar alguna biblioteca existente, p. como pygments para tener un resaltado de sintaxis extensible y de rendimiento en un Cocoa TextView?

Nota: Sé que esta pregunta es muy amplia (y demasiado larga). Se agradecen las experiencias y sugerencias, así como las soluciones. Gracias.


encontrado otro hilo similar en la que la materia: Syntax coloring for Cocoa app

Respuesta

7

que sugeriría un vistazo al código fuente para Smultron. Tiene muy buen resaltado de sintaxis. Utiliza una subclase de NSTextView para hacer la mayor parte del trabajo pesado. El código usa el administrador de diseño para agregar atributos al texto y usa algunos otros trucos para resaltar la mayor parte del documento que sea necesario.

+0

Smultron ya no es de código abierto, por lo que el código fuente ya no está disponible. – zpasternack

+1

La fuente todavía está disponible en el sitio web de soureforge. Vea aquí: http://sourceforge.net/projects/smultron/files/smultron/3.6b1/ – Daniel

+0

¡Me corrijo, gracias! – zpasternack

Cuestiones relacionadas