仅在找到库时才字节编译文件

Byte-compile file only when library is found

当找不到库时,如何建议字节编译器不要编译 emacs-lisp 源文件?请注意,不可编译的文件与其他应编译的文件位于同一目录中。

我见过有人将整个文件包裹在一个条件子句中,但这看起来很恶心。也可以想象autoload/declare每个函数,但在这种情况下整个文件都充斥着外部调用。有替代方案吗?

我认为这个问题没有什么好的answer/solution,没有。

您可以做的是:

  • 要么标记文件,使其从未编译(即使库可用)no-byte-compile: t在file-local中的某处变量。

  • 或添加所有需要的 declare-functions 和 defvars 以消除 byte-compiler 警告。请注意,此选项仅适用于 functionsvariables 但不适用于宏:如果您使用该库中的宏,则需要格外小心防止在未加载库时编译这些宏调用(例如,参见 AUCTex 的 tex.el 中的 TeX--if-macro-fboundp)。