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



当运行时需要软件包时,如何让 emacs 发出警告?我想做一些像cl对它的警告所做的那样的事情,

警告:运行时需要 cl 包

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

看起来它来自bytecomp.elbyte-compile-file-form-require. 有一条线(put 'require 'byte-hunk-handler 'byte-compile-file-form-require)似乎使它钩入require。 您可以重新定义byte-compile-file-form-require以使其对其他库发出警告。

您可以尝试如下操作:

(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"))

相关内容

  • 没有找到相关文章

最新更新