考虑到这种情况:
(defmacro mac1 ...)
(defun func1 ()
(mac1 ...))
在实时环境中重新定义mac1
不会影响func1
,除非它本身被重新编译。
有没有办法让Emacs或Lisp在重新编译mac1
时自动重新编译func1
?
在源代码中添加类似以下内容将被接受:
(watch
(defmacro mac1 ...))
(on-signal (mac1)
(defun func1 ...))
这并不难实现,但我更愿意避免重复造轮子。
cl
包,你可以在defun
的包装器中将函数源代码作为其符号名称的属性存储,并在defmacro
周围有第二个包装器来查看who-macroexpands
并迭代这些存储的源代码。或者当您迷失了对宏编辑可能会做什么的跟踪时,只需使用slime-compile-and-load-file
。 - BRPocock