【发布时间】:2012-01-17 22:28:16
【问题描述】:
如果我将以下内容放入foo.el:
(defun whitespace-redraw ()
(eval-when-compile (require 'whitespace nil t))
(when (require 'whitespace nil t)
(if whitespace-mode
(whitespace-mode 0))
(whitespace-mode 1)))
然后字节编译它:
emacs -Q --batch --eval '(byte-compile-file "foo.el")'
我收到以下警告:
In end of data:
foo.el:7:1:Warning: the function `whitespace-mode' might not be defined at
runtime.
Wrote foo.elc
当然whitespace-mode 可以在运行时未定义,但除非空格加载成功,否则它不应该被执行。如果加载了空白,则将定义 whitespace-mode。
这个警告是 emacs 编译器限制的结果还是我做错了什么?
【问题讨论】:
-
我一直在想这个问题。不过从来没有遇到过任何问题,无知有时是幸福的。
-
只是一个更新:从 Emacs 24.4 开始,我看不到此代码上的警告;我认为编译器现在更聪明了。