2009-04-16 25 views
18

Estoy trabajando en la aplicación Cocoa que debería poder analizar y resaltar un código fuente escrito en lenguajes como Objective-C, SQL, JavaScript, Python, etc. El texto también debe poder editarse (usando NSTextView, por ejemplo) .¿Cuál es la mejor manera de implementar el resaltado de sintaxis del código fuente en Cocoa?

Indique cuál es la mejor manera de implementar dicha función en Mac OS X 10.5.

No es necesario admitir el autocompletado y otras funciones adicionales. El formato simple por palabras clave, cadenas, #includes y números, pero con un buen rendimiento, está bien.

Además, sería genial si la configuración por idiomas fuera compatible.

Gracias!

+0

resaltado de sintaxis inteligente puede ser bastante difícil - que es parte de por qué Apple está haciendo tanto trabajo en la interfaz de sonido metálico a LLVM. Quizás quieras revisarlo. – user57368

Respuesta

16

En la preparación de un proyecto que requerirá algo similar, he encontrado lo siguiente (pero no los evaluó en profundidad):

  • /Desarrollador/Ejemplos/OpenGL/Cocoa/GLSLEditorSample implementa resaltado de sintaxis.
  • IDEKit, "un marco de código abierto que proporciona edición de código fuente de programador, incluyendo coloreado de sintaxis, funciones emergentes y cuadros divididos". Esto no se ha actualizado durante un tiempo (ofrece compatibilidad 10.2 y 10.3, y viene con un proyecto Project Builder, se puede convertir con Xcode 2.5).
  • UKSyntaxColoredTextDocument.
+4

Gandreas eliminó el repositorio, pero rescaté una copia de trabajo (0.3, más reciente) de un antiguo repositorio de SVN [aquí] (https://github.com/CodaFi/IDEKit). El mío tiene soporte para Xcode 4.x y ARC. – CodaFi

1

Puede usar Pygments, que está escrito en python, para generar una representación HTML del código fuente, que luego se puede presentar en una vista web.

(Tenga en cuenta, como se refleja en el comentario más abajo -. Esta pregunta a la pregunta original, que no mencionaba el texto editable)

+0

Gracias Matthew. Lo siento, pero olvidé incluir un requisito más. El código fuente debe ser editable (colocado en NSTextView, por ejemplo). ¿Es posible usar Pygments para incorporar resaltado en NSTextView para lograr este objetivo? – Stream

+0

No he hecho nada con pygments aparte de generar HTML, pero sé que puede marcar en otros formatos. Puede ser que uno de ellos pueda ser una base para mostrar NSTextView. –

6

me gustaría consejos de segunda Ahruman - particularmente mirando UKSyntaxColoredTextDocument de Uli como que se apuntan en la dirección correcta en cuanto a qué clases etc. que van a tener que aprender.

Ésta es otra excelente fuente de información:

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

Buena suerte - El resaltado de sintaxis es difícil de hacerlo bien, pero un montón de diversión en el camino!

+0

Gracias chicos. Definitivamente parece la respuesta correcta. Exploraré cuidadosamente el componente de Uli, pero me gustaría dejar esta pregunta sin respuesta durante algunos días. Posiblemente, alguien habrá inventado algo nuevo en este momento. – Stream

2

tuve que buscar una solución para la sintaxis de cacao destacando recientemente y después de buscar el desbordamiento de pila, Google y GitHub no hemos podido encontrar nada moderno, fácil de volver usar y aún en desarrollo activo.

Parece que la mayoría de los marcadores de sintaxis actualmente están escritos para la web. Afortunadamente, en realidad es bastante fácil insertarlos en una WebView para usar en cualquier aplicación Cocoa. La comunicación con el editor se puede hacer a través del WebScriptObject protocol de WebKit.

He aquí un envoltorio de ejemplo para el popular editor de texto JavaScript CodeMirror de cacao: https://github.com/swisspol/CodeMirrorView

Cuestiones relacionadas