如何在运行时需要包时发出警告

时间:2017-03-31 17:29:04

标签: emacs compiler-warnings

如果在运行时需要包时,如何让emacs发出警告?我希望做cl之类的事情及其警告,

  

警告:运行时需要cl包

我没有在cl库中看到负责任的代码。

2 个答案:

答案 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"))