2011-07-27 14 views
7

He visto diferentes motores de plantillas para Emacs (incluido yasnippet), pero lo que quiero es una bestia diferente. La mayoría de los motores de plantillas ayudan mientras escribes. Lo que quiero es más un "generador de texto" que un protector de escritura. Estoy a punto de intentar implementarlo, pero solo haga la pregunta para ver si podría darme pistas sobre la implementación de paquetes de emacs que hacen algo similar.Templating engine for Emacs?

En resumen, lo que quiero es incluir el código de emacs-lisp en línea dentro de un documento (dentro de los comentarios del idioma o formato de texto) para generar texto dentro de marcadores y actualizarlo con cualquier combinación de teclas. Por ejemplo, supongamos que quiero para generar un código LaTeX que es un poco largo y repetitivo, pero que pueda parametrizar con algunas variables:

... rest of the normal text... 
# (deftemplate my-repetitive-latex-code (parameter) 
# ("blah blah" parameter "more blah blah") 
# 
# (defvar *latex-code-parameters* '("abc" "def")) 
# 
# (apply-template #'my-repetitive-latex-code *latex-code-paramters*) 
# 
# START GENERATED TEXT 
# END GENERATED TEXT 
... rest of the normal text... 

La idea es que, cuando "evaluar" el comentado emacs-lisp código, el sistema buscará el próximo START GENERATED TEXT etiqueta, e insertar el resultado de evaluar el código seleccionado (es decir, incluir el texto con los parámetros abc y luego def), algo así como:

# START GENERATED TEXT 
blah blah abc more blah blah 
blah blah def more blah blah 
# END GENERATED TEXT 

O, aún mejor , un motor de plantillas similar a Perl Text::Template, que es capaz para distinguir los bits escritos en Perl (usando marcadores), y sustituir los resultados en línea, pero, en este caso, por supuesto, usando emacs-lisp como el lenguaje de programación. (Por ejemplo, utilicé Perl Text :: Template para generar los gráficos PGF/TikZ de mi PhD, y fue realmente una buena combinación, pero tuve que usar un programa externo (Perl) para filtrar los archivos antes de alimentarlos. látex)

Respuesta

0

es posible que desee echar un vistazo a SRecode, que es parte de CEDET y también se fusionó con Emacs:.

http://cedet.sourceforge.net/srecode.shtml

es más dirigido a la generación de código, pero tal vez usted puede adaptarlo a tus necesidades?

3

Sus requisitos me hicieron pensar inmediatamente en Org Babel, pero no estoy seguro de que pueda usarse como un modo menor solo dentro de ciertas regiones de su documento. Si pregunta en la lista de organizaciones, es probable que alguien le indique cómo obtener el comportamiento que desea.

+0

+1 Muy interesante que Org Babel. De hecho, uso Org, y una gran sugerencia de preguntar si eso puede incluirse en algún modo menor. –

+0

Si obtiene una respuesta en la lista de organización, publíquela aquí (¡y acéptela!) Para que todos podamos ver lo que hizo. – sanityinc

0

Como mencionó sanityinc, esto es definitivamente lo que org babel es para. Ya es compatible con varios idiomas como R, lisp, python, latex y muchos más. Para obtener más información sobre org babel, mira here.

Cuestiones relacionadas