パッケージをたくさん使用し、エクスポートされたシンボルが名前を変更することがよくあります。私はパッケージを再コンパイルしようとすると、私はこのような警告が表示されます:名前が変更されたエクスポートシンボルの一括「unintern」
package.lisp:3:1:
warning:
MY-PROJECT also exports the following symbols:
(OLD-SYMBOL1 OLD-SYMBOL2 OLD-SYMBOL3)
See also:
Common Lisp Hyperspec, DEFPACKAGE [:macro]
SBCL Manual, *ON-PACKAGE-VARIANCE* [:variable]
--> EVAL-WHEN
==>
(SB-IMPL::%DEFPACKAGE "MY-PACKAGE" '("KE") 'NIL 'NIL 'NIL '("CL") 'NIL
'NIL '("NEW-EXPORTED-SYMBOL1" "NEW-EXPORTED-SYMBOL2") '("MY-PROJECT") 'NIL
...)
私は私はもうそのシンボルを使用しないシステムに信号を送るために(unintern 'old-symbol1)
を使用することができることを知っています。しかし、名前の変更が多い場合、これは非常に面倒になりつつあります。
私の質問は以下のとおりです。
1)が自動的にunintern
古い/以前にエクスポートされたシンボルにsbcl
またはemacs
に知らせることが可能であるされていますか?
2)そうでない場合、すべての「古い」シンボルを変数に入れることは可能ですか?
2のための私の計画は)私はあなたがシンボルをuniternしたくないと思う(apply #'unintern *old-symbols*)
'* on-package-variance *'に '(list:warn nil:error t)'(変数の説明を参照)のようなものを設定すると、シンボルをドロップするオプションが得られます。 – jkiiski
これは正しい方法だと思われますが、それでも動作させることはできません。私は ':warn'を' nil'に、 ':error'を' nil'に設定しようとしました...どんな提案も大歓迎です... – tsikov
':error t'を設定する必要があります。それ以外の場合は再起動しません。 – jkiiski