当批量编译多个eLisp文件时,编译器的输出会出现Warning: function `position' from cl package called at runtime
警告。我理解,虽然对cl
包的政策不太满意。但这使得发现其他更有用的警告变得更加困难。那么,虽然没有真正的方法来避免警告,有没有办法有选择地关闭某种模式的所有警告?
编辑:(附上一个例子)
创建名为doodles.el的文件
(require 'cl)
(eval-when-compile (require 'cl))
(dotimes (i 1)
(position ?\x "x"))
M-x byte-compile-file
RET doodles.el
切换到*Compile-Log*
缓冲区:
doodles.el:1:1:Warning: cl package required at runtime
这就是你得到的。
答案 0 :(得分:5)
您可以使用设置byte-compile-warnings
变量的局部变量块来控制字节编译器警告。要关闭CL-at-runtime警告,请将其放在模块末尾附近:
;; Local Variables:
;; byte-compile-warnings: (not cl-functions)
;; End:
答案 1 :(得分:1)
警告function position from cl package called at runtime
不存在是因为关于CL的政策(当然,它确实与它有关),但指出了一个真正的实际问题:你使用position
不是(require 'cl)
的文件。该文件可能(eval-when-compile (require 'cl))
,这意味着CL在编译期间可用(例如,扩展CL宏),但不会在运行时加载。
这通常不会导致错误,因为某处的某个其他文件对您来说(require 'cl)
,但这只是你的幸运。