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-at-runtime 警告をオフにするには、これをモジュールの末尾近くに配置します。

;; 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は表示されませんが (確かに、CL と関係があります)、実際の問題を指摘してpositionいます(require 'cl)。これは、CL がコンパイル中に使用可能であることを意味します(eval-when-compile (require 'cl))(CL マクロを展開するための ag) が、実行時にロードされません。

多くの場合、これはバグにはなりません。どこかの他のファイルが原因でバグが発生する(require 'cl)ためですが、それは運が良かっただけです。

于 2012-09-27T13:23:52.550 に答える