7

当批量对多个 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

这就是你得到的。

4

2 回答 2

5

您可以使用设置变量的局部变量块来控制字节编译器警告byte-compile-warnings。要关闭运行时 CL 警告,请将其放在模块末尾附近:

;; Local Variables:
;; byte-compile-warnings: (not cl-functions)
;; End:
于 2012-09-27T05:47:07.270 回答
1

由于 CL 的政策,该警告function position from cl package called at runtime不存在(当然,它确实与它有关)但指出了一个实际的真正问题:您position在一个没有(require 'cl). 该文件可能(eval-when-compile (require 'cl))意味着 CL 在编译期间可用(用于扩展 CL 宏的 ag),但不会在运行时加载。

通常这不会导致错误,因为某处的其他文件会(require 'cl)为您提供,但这只是您很幸运。

于 2012-09-27T13:23:52.550 回答