6

Estoy tratando de escribir un nuevo modo emacs para un nuevo lenguaje tipo c, que tengo que usar para algunas investigaciones académicas.Modo Emacs para un lenguaje c-like

Quiero el código a ser de color y una sangría como en C-modo, con las siguientes excepciones:

  • El '%' no se utiliza como un operador, sino como el primer carácter de algunas palabras clave específicas (como: "% p", "% action", etc.)
  • Las líneas de código no terminan con un punto y coma.

¿Es posible crear un modo derivado (desde c-mode) y configurarlo para que ignore los propósitos originales de '%' y ';'? ¿Es posible hacer que la función de "sangría automática después de presionar RET" funcione sin ';'?

¿Hay modos similares para idiomas similares (con '{}' paréntesis, pero sin punto y coma) que podría intentar parchear?

¿Debo intentar escribir un modo principal desde cero?

Pensé en aplicar parches al modo R desde http://ess.r-project.org/, pero este modo no admite los comentarios de la forma "/ * comment * /".

La característica más importante que estoy buscando es la sangría de paréntesis, es decir, el código de sangría dentro de un bloque '{}' después de presionar RET (y sin la sangría adicional después de líneas que no terminan con ';') Las soluciones parciales también ayudarán.

Respuesta

2

Si no te importa algo realmente simple, puedes mirar Gosu mode. Gosu es un idioma que tiene llaves y sin punto y coma, por lo que debe estar preparado para su mínimo. También utiliza la misma sintaxis comentario como C.

La implementación de la modalidad ya que es muy simple y basado en el modo genérico, por lo que la modificación que funcione de la manera deseada debe ser fácil. Es no según el modo C.

Esto es lo que utilicé para hacer un modo para el lenguaje en el que estaba trabajando para mi clase de compiladores, y fue muy fácil incluso con una experiencia de elisp limitada. Por otro lado, la sangría es bastante simple: funciona para la mayoría de los códigos, pero no es tan completa como la de C-mode.

+0

En lugar de usar el modo Gosu, utilicé el modo [Google Go] (http://golang.org) y lo parqué. – Oren

3

De manera más general, el modo CC se ha extendido y generalizado con el tiempo para acomodar cada vez más idiomas, y se supone que el último modo CC es bastante bueno para aislar el código genérico del código específico del idioma. Así que eche un vistazo a algunos de los principales modos que utilizan el modo CC (por ejemplo, el modo awk), y póngase en contacto con el mantenedor del modo CC que podrá ayudarlo a descubrir si puede hacer lo que quiera.

+0

Intenté parchar el modo CC según awk-mode (en el que las líneas no tienen que terminar con ';') pero era demasiado código para comprenderlo y corregirlo. – Oren