No cabe duda de que Sublime Text 2 – ST2 – es uno de los editores de código de moda y que no deja indiferente a ningún programador. Al principio resulta un tanto desolador la ausencia de botones o barras de herramientas, pero poco a poco lo vas agradeciendo pues te permite concentrarte en el código evitando toda distracción estética.
Yo comencé a probarlo pues quería un editor para usar en Mac y ST2 es de los pocos editores multiplataforma -Windows/Mac/Linux – que encontré. Además es facilmente extensible con infinidad de plugins y temas, tiene una versatilidad dificilmente alcanzable y es bastante ligero en comparación con otros editores. Su último argumento a favor es que la edición de prueba no caduca, con lo cual puedes ir probandolo sin prisa hasta que caes rendido a sus pies. Si no lo has probado todavía lo mejor es que lo descargues y que leas estos enlaces para conocerlo un poco mejor:
- Guía definitiva de Sublime Text 2
- Sublime Text 2, atajos, trucos, snippets y temas
- Manual de Sublime Text 2
¿ Qué le falta a ST2 para ser el editor preferido de los viejos clipperos ? Pues unicamente el coloreado del lenguaje. Cómo no he encontrado ninguno pues comencé a hacerlo yo, está unicamente empezado pero puede ser el germen de un fichero de sintaxis completo. Hasta ahora tengo hecho lo siguiente:
- Reconocimiento de números, cadenas de caractéres entrecomilladas y comentarios de una linea.
- Reconocimiento de las siguientes sentencias de control: do, case, endcase, otherwise, switch, if, else, endif, while, end, enddo, exit, function, return, for, next.
- Reconocimiento de las siguientes declaraciones: local, default, field, static, public, static, external, REQUEST.
- Un par de snippets sencillos: el de la sentencia if..endif y la sentencia if..else..endif
El resultado es un coloreado como el que se aprecia en la imagen:
Para la creación de la sintaxis del lenguaje me fue muy útil el contenido del siguiente enlace: Creando un tmLanguage para Sublime (syntax definition), y para la creación de snippets este otro Sublime Text 2 Snippets
En el siguiente enlace dejo un fichero con la sintaxis de clipper para ST2 que contiene lo siguiente:
- clipper.json-tmlanguage que contiene la definición editable de la sintaxis de Clipper
- clipper.tmlanguage, que contiene el fichero compilado con la definición de sintaxis para clipper
- if.sublime-snippet el snippet de la sentencia if..endif y if-else.sublime-snippet que contiene el snippet de la sentencia if..else..endif
Estos 4 ficheros se deben descomprimir en la carpeta de definiciones de usuario de ST2, aunque el primer fichero sólo será necesario en caso de querer modificar la sintaxis del lenguaje. En Windows 7 la carpeta es C:\Usuarios\{username}\AppData\Roaming\Sublime Text 2\Packages\User. Una vez hecho esto se abre un .prg, se elige la sintaxis de Clipper haciendo click en la lista de lenguages y ya está.
Sintaxis de Clipper para SublimeText2
En esta primera versión de la sintaxis faltan muchas cosas. Si alguien está interesado en ayudarme con el proyecto, puede escribirme a joseluis@alanit.com o poner un comentario en este post. Mi intención es completar el fichero de sintaxis, subirlo a GitHub y darlo de alta en relación de paquetes de ST2.
Te dejo correcciones del JSON;
{
«comment» : «sentencias de control»,
«match» : «\\b(do|case|endcase|otherwise|switch|if|else|endif|while|end|enddo|exit|function|return|for|next)\\b»,
«name»: «keyword.control.clipper»
},
{
«comment» : «sentencias de control»,
«match» : «\\b(catch|finally|try|throw)\\b»,
«name»: «keyword.control.clipper»
},
{
«comment» : «declaraciones»,
«match» : «\\b(local|default|field|static|public|static|external|REQUEST)\\b»,
«name»: «storage.type.clipper»
}
Lo que hace \\b es que marca cosas como Local locali=1 , locali lo marca, quedando mal.
He metido la declaracion del try/catch que yo uso en Harbour aunque sea una simulacion a traves del Begin..Sequence.
Saludos y muchas gracias.
Por cierto, en https://github.com/rafathefull/clipper ya lo tienes, con unas cuantas mejoras más.