如果在运行时需要包时,如何让emacs发出警告?我希望做cl
之类的事情及其警告,
警告:运行时需要cl包
我没有在cl库中看到负责任的代码。
答案 0 :(得分:1)
看起来它来自byte-compile-file-form-require
中的bytecomp.el
。行(put 'require 'byte-hunk-handler 'byte-compile-file-form-require)
似乎使其挂钩require
。您可以重新定义byte-compile-file-form-require
以使其在其他库上发出警告。
答案 1 :(得分:1)
您可以尝试以下内容:
(when (assoc '(t byte-compile-file-form-require ((require '<mypkg>)) nil)
(backtrace-frames))
(message "Warning: package <mypkg> required at runtime"))
请注意,backtrace-frames
是Emacs-26中的新功能,因此对于早期的Emacsen,您需要从backtrace-frame
或其他类似地重现它。例如。对于早期的Emacsen,您可以使用macroexp--backtrace
:
(when (assoc '(t byte-compile-file-form-require (require '<mypkg>))
(macroexp--backtrace))
(message "Warning: package <mypkg> required at runtime"))