2010-05-25 15 views

Respuesta

8

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.

Cuestiones relacionadas