Preguntas etiquetadas con elisp-macros

Las macros de Emacs Lisp le permiten definir nuevas construcciones de control y otras características del lenguaje. Una macro se define de forma muy similar a una función, pero en lugar de decir cómo calcular un valor, dice cómo calcular otra expresión Lisp, que a su vez se evalúa para calcular el valor. Llamamos a esta expresión la "expansión" de la llamada macro. La llamada de macro primero se expande y luego se evalúa, devolviendo el valor de esa evaluación.

13
"Y" vs "cuándo" para condicionales

Este es un seguimiento de los comentarios sobre esta respuesta . Los siguientes bits de código parecen ser equivalentes: (and a b) (when a b) Por supuesto andte permite poner más condiciones: (and a b c d)significa(when (and a b c) d) Tiendo a usar whensolo para expresar ramificaciones. ¿Hay...

12
Cuándo usar macro o no usar [cerrado]

Cerrada . Esta pregunta necesita estar más centrada . Actualmente no está aceptando respuestas. ¿Quieres mejorar esta pregunta? Actualice la pregunta para que se centre en un problema solo editando esta publicación . Cerrado hace 3 años . ¿Cuándo debo...

11
¿Cómo puedo crear múltiples defuns al recorrer una lista?

Estoy trabajando en la optimización de mi configuración de emacs donde puedo crear dinámicamente funciones interactivas para todos los temas que tengo en una lista. A continuación se muestra una versión simplificada de la construcción que estoy tratando de hacer funcionar. ;; List containing...

11
¿Cómo usar while-no-input?

Desde la cadena de documentación: Ejecute BODY solo mientras no haya ninguna entrada pendiente. Si llega la entrada, eso finaliza la ejecución de BODY y while-no-inputdevuelve t. Dejar de fumar hace que regrese cero. Si BODY termina, while-no-inputdevuelve cualquier valor que BODY haya...

8
Autoloads y variables

Entiendo lo que hace la carga automática para las funciones (registrar el archivo para cargar cuando se llama a dicha función o se recupera su cadena de documentación). Sin embargo, no está claro cómo usar la función de carga automática junto con variables y macros. Tengo dos preguntas: ¿Qué...

7
¿Cómo puedo modificar una macro que llamo con frecuencia?

Yo solía use-packageorganizar mi init.el. Me di cuenta de que todas mis declaraciones usan :ensure t. Un ejemplo de declaración es: (use-package auto-complete :ensure t :diminish auto-complete-mode :init (global-auto-complete-mode t)) Dado que todas mis use-packagedeclaraciones usan :ensure...

7
Macro "cl-flet" que no permite funciones recursivas

Estoy acostumbrado a la macro elisp en desuso flety me dijeron que cambiara a cl-flet. Sin embargo, al hacer este cambio, algunos de mis programas elisp dejaron de funcionar y me di cuenta de que la razón es que, a diferencia flet, cl-fletno permite funciones recursivas. Por ejemplo, definiendo la...

7
Setf expansión extraña

Intentando entender qué setfpuedo hacer, llamé (macroexpand '(setf (aref vec i) val)) ⇒ (let* ((v vec) (v i)) (aset v v val)) Esto parece obviamente incorrecto. Sin embargo, no pude crear una instancia real donde (setf (aref ..falla. P.ej (setq vec (make-vector 10 nil) i 3 val 'foo) ⇒ foo...