En common-lisp tenemos la biblioteca cl-heredoc , ¿hay un equivalente en EmacsLisp?
En common-lisp tenemos la biblioteca cl-heredoc , ¿hay un equivalente en EmacsLisp?
Las cadenas ordinarias de Emacs Lisp tienen capacidad para varias líneas. Simplemente puede poner nuevas líneas en ellos.
Echando un vistazo cl-heredoc
, parece que lo que estás buscando son cadenas "en bruto". Hubo una propuesta para agregarlos a Elisp hace un tiempo, pero desafortunadamente fue rechazada. (Espero en lugar de esperar que pueda resucitar). Elisp tampoco tiene las características de extensibilidad del lector necesarias para implementar esto.
Si está configurando emacs a través de un archivo init.el, puede considerar usar un init.org en su lugar.
Luego puede usar construcciones como las siguientes:
#+NAME: arbitrary-text
#+begin_src xml
<some>
<random src="xml">or whatever... includes syntax highlighting!</random>
</some>
#+end_src
#+begin_src emacs-lisp :var arb-text=arbitrary-text
(eval `(defun a-test ()
(format "whoop there it is: %S" ,arb-text)))
#+end_src
Si observa el .el
archivo generado , verá algo como:
(let ((arb-text "escaped text here..."))
(eval `(defun a-test ()
(format "whoop there it is: %S" ,arb-text))))
Puede poner el texto y el código en cualquier orden. Puede agregar nombres a listas de organizaciones, tablas, etc.
Si se trata de una biblioteca en la que es posible que no desee obligar a los colaboradores a que también usen 'programación alfabetizada', entonces podría colocar la mayor parte del código en un .el
archivo y generar un .el
archivo auxiliar usando Org: verifique el código generado en el control de revisión.
` and
"`, iirc.
(format "next word is quoted %S" "word")
.format
~s
directiva CL (es decirprin1
). Por lo tanto, imprimirá su argumento de una manera adecuada para el lector, para cadenas que estarían entre comillas.