Puedo leer la documentación, así que no estoy pidiendo un corte y pegar de eso.¿Cuál es el propósito de la función Emacs (eval-and-compile ...)?
Estoy tratando de entender la motivación para esta función.
¿Cuándo quisiera usarlo?
Puedo leer la documentación, así que no estoy pidiendo un corte y pegar de eso.¿Cuál es el propósito de la función Emacs (eval-and-compile ...)?
Estoy tratando de entender la motivación para esta función.
¿Cuándo quisiera usarlo?
El documentation in the Emacs lisp manual tiene algunas situaciones de ejemplo que parecen responder a su pregunta (a diferencia de la cadena de documentación).
Al mirar el código fuente de Emacs, eval-and-compile
se usa para silenciar el compilador, para hacer que las macros/funciones estén disponibles durante la compilación (y evaluación), o para hacer disponibles variantes de función/versión de macros/funciones durante la compilación.
Un uso que encontré útil para ver estaba en ezimage.el
. Allí, se incluyó una declaración if
dentro del eval-and-compile
para definir macros de manera condicional, dependiendo de si el paquete fue compilado/evaluado en Emacs o XEmacs, y adicionalmente si una característica en particular estaba presente. Al ajustar ese condicional dentro del eval-and-compile
, habilita el uso de macro apropiado durante la compilación. Una situación similar se puede encontrar en mwheel.el
.
mismo modo, si se quiere definir una función a través de fset
y tenerlo disponible durante la compilación, es necesario tener la llamada a fset
envuelto con eval-and-compile
porque de lo contrario el símbolo -> Asociación de función no está disponible hasta que se evalúe el archivo (Debido a que la compilación de una llamada al fset
solo optimiza la asignación, en realidad no es hacer la asignación). ¿Por qué querrías esta tarea durante la compilación? Para silenciar el compilador. Nota: esta es solo mi nueva redacción de lo que está en la documentación de elisp.
Me di cuenta de una gran cantidad de usos en el código Emacs que acaba de envolver llamadas a require
, que suena redundante cuando lee la documentación. No sé cómo explicar eso.