Emacs 以自动加载形式扩展宏
如何让autoload.el在Emacs 以自动加载形式扩展宏,emacs,macros,autoload,Emacs,Macros,Autoload,如何让autoload.el在;;中展开宏###自动加载表单?正常的make autoload功能似乎仅对选定的已识别表单执行此操作,但表示我希望正确展开以下my def (defmacro my-def (name args &rest body) `(progn (defalias ',name ,args ,@body) #',name)) ;;;###autoload (add-hook 'some-hook (my-def my-hook () ())
;;中展开宏###自动加载
表单?正常的make autoload
功能似乎仅对选定的已识别表单执行此操作,但表示我希望正确展开以下my def
(defmacro my-def (name args &rest body)
`(progn
(defalias ',name ,args ,@body)
#',name))
;;;###autoload
(add-hook 'some-hook (my-def my-hook () ()))
告诉自动加载在此展开的适当方式是什么?不是所有表单都用macroexpand
展开的原因是什么,例如性能命中之类的
更新:我似乎可以建议自动加载,但我不知道这是否会导致一般问题,例如
(advice-add 'make-autoload :around
(lambda (orig-fn form file &optional exp)
(let ((new-form (macroexpand-all form)))
(apply orig-fn
(list new-form file
(not (equal new-form form)))))))