Afeitando Yaks: septiembre 21, 2009
¡Y mis yaks son muy peludos!
Empecé tratando de hacer un editor de hojas de estilo para rst2pdf (ver aquí).
Una cosa lleva a otra, y ahora tengo por lo menos tres mini-proyectos interesantes por culpa de ése.
El de hoy: (ab)usar pygments como resaltador genérico de sintaxis en una interface Qt.
¿Porqué pygments? Porque es el único resaltador de reStructured Text que encontré. ¡Eso es probablemente porque el reSt es muy difícil de resaltar!
Hasta adonde sé esta es la primera vez que alguien hizo andar pygments para esto, en una ventana editable. Y hay muy buenos motivos para eso:
Es puro python, tal vez uno espera que sea demasiado lento.
No hace lexing parcial ni progresivo, hay que "lexear" todo el texto junto (de nuevo, eso puede parecer muy lento)
Tiene una API orientada a archivos, genera un archivo con todo el texto formateado adentro, y para esta clase de uso se necesita acceder a datos "del medio" solamente.
Y, por supuesto, resulta que funciona bastante bien, como se ve en este video:
Lección del día: las computadoras ahora son rápidas.
Acá está el código para highlighter.py con muchos comentarios.
Se puede correr y se obtiene la misma demo que se ve en el video (salvo el tipeo ;-)