0

私のinitには次のコードがあります:

(defadvice kill-buffer (around show-diff-rephrase-question activate compile)
  "Prompt when a buffer is about to be killed."
  (case (read-char-choice
         "(s/k/q)? "
         (append "sSKkQq" nil))
    ((?s ?S)
     ad-do-it)
    ((?k ?K)
     ad-do-it)
    ((?q ?Q) nil))
  ad-do-it)

eval-buffer私がそれを評価するために呼び出すとき、それは働きます。ただし、initファイルをコンパイルすると、次のようになります。

無効な機能:(115 83)

(case ...)sexpのマクロ展開を挿入すると、コンパイルされたファイルとして機能します。

4

1 に答える 1

0

(eval-when-compile (require 'cl))この定義の前にどこかに追加する必要があります:caseは事前定義されたマクロではありません。追加(require 'cl)も同様に機能しclますが、init ファイルをコンパイルすると不必要にロードされるため、起動が遅くなります。

于 2012-10-07T14:29:27.247 に答える