0

Aquamacs + Slime を実行していますが、Aquamacs を起動すると自動的に Slime を起動できます。しかし、その後 Lisp ファイルを読み込もうとすると、ファイルを読み込もうとしている方法に応じて、さまざまなエラーが発生し続けます。ここに私の好みがあります.el

(setq inferior-lisp-program "~/ccl/dx86cl64"
  slime-startup-animation nil)
(require 'slime)
(split-window-horizontally)
(other-window 1)
(slime)
(eval-after-load "slime"
   '(progn 
       (slime-compile-and-load-file "/Users/xxxxx/xxxxx/load-seq.lisp")
 )) 

次のエラーが表示されます

error: Buffer *inferior-lisp* is not associated with a file.

load compile-and-loadとを含む他の機能を試しましslime-load-fileたが、それぞれ次のエラーが発生しました...

Invalid read syntax: #
Symbol's function definition is void: compile-and-load
error: Not connected.

(load "/Users/xxxxx/xxxxx/load-seq.lisp")スライム REPL から実行すると、lisp ファイルは正常にロード (およびコンパイル)されます。Preferences.el に入れると、 を使用しているにもかかわらず、スライムのロードを待たないようですeval-after-load

4

1 に答える 1

5

slime-compile-and-load-fileあなたはたまたま関数の使い方を誤解していました。そのdocstringは次のように述べています:

(slime-compile-and-load-file &optional POLICY)

バッファのファイルをコンパイルしてロードし、コンパイラ ノートを強調表示します。

この関数は、現在のバッファに既に関連付けられているファイルを操作し、(オプションの) 引数として、ファイル名ではなくコンパイル ポリシーを期待します。したがって、コードは次のようになります。

(slime)
(add-hook 'slime-connected-hook
          (lambda ()
            (find-file "/Users/xxxxx/xxxxx/load-seq.lisp")
            (slime-compile-and-load-file)))

slime-connected-hookSLIME が Lisp サーバーに接続するときに呼び出される関数のリストが含まれています。

しかし、Emacs の init ファイルが、そのような Emacs 以外の Lisp コードをロードするのに適切な場所であるかどうかはわかりません。CCL init ファイルは、それを行うのに適した場所です。2.4を参照してください。CCL マニュアルの Init ファイルによる個人的なカスタマイズ。

さらに、このload関数は Emacs Lisp コードを実行するためのものです。slime-load-fileは呼び出すのに適した関数ですが、たまたま呼び出しが早すぎました (または、SLIME が Lisp サーバーに接続する前に)。slime-connected-hookフックに追加されていれば機能していたでしょう。実際、Emacs を起動するたびに Lisp コードをコンパイルするための正当な理由がない場合 (また、本当に Emacs でコンパイルしたい場合) は、次の方法をお勧めslime-load-fileします。slime-compile-and-load-file

(add-hook 'slime-connected-hook
          (lambda ()
            (slime-load-file "/Users/xxxxx/xxxxx/load-seq.lisp")))

最後に、 という関数はありませんcompile-and-load

于 2012-08-10T18:36:56.770 に答える