3

珍しいケースかもしれませんが、Clozure CL を実行しているリモート コンピューターに接続して、ローカル デスクトップにあるいくつかのファイルをコンパイルするのが好きです。

これで、リモートの Lisp ボックスに接続できるようになりました。私はEmacsを使ってそれをやった。したがって、.emacs ファイルにいくつかの行を追加しました。

(load (expand-file-name "~/quicklisp/slime-helper.el"))

(require 'slime)
(require 'tramp)
(setq tramp-default-method "ssh")

うまくいっているようです。私のsshトンネルをセットアップした後

ssh -L4005:127.0.0.1:4005 pi@192.168.0.100

ローカルの emacs 内で Clozure CL から通常の REPL を取得します。

また、ネットワーク内の任意の PC から Emacs の ssh 経由でファイルをロードすることもできます。しかし、最近(Emacsで)ロードされたファイルでバッファをコンパイルしようとすると、常に次のエラーが発生します。

File "/ssh:ingmar@192.168.0.103:/home/ingmar/Dokumente/Lisp/util.lisp" does not exist.
   [Condition of type CCL::SIMPLE-FILE-ERROR]

Restarts:
 0: [RETRY-LOAD] Retry loading "/ssh:ingmar@192.168.0.103:/home/ingmar/Dokumente/Lisp/util.lisp"
 1: [SKIP-LOAD] Skip loading "/ssh:ingmar@192.168.0.103:/home/ingmar/Dokumente/Lisp/util.lisp"
 2: [LOAD-OTHER] Load other file instead of "/ssh:ingmar@192.168.0.103:/home/ingmar/Dokumente/Lisp/util.lisp"
 3: [RETRY] Retry SLIME REPL evaluation request.
 4: [*ABORT] Return to SLIME's top level.
 5: [ABORT-BREAK] Reset this thread
 --more--

Backtrace:
  0: (NIL #<Unknown Arguments>)
  1: (CCL::%LOAD "/ssh:ingmar@192.168.0.103:/home/ingmar/Dokumente/Lisp/util.lisp" NIL NIL :ERROR :DEFAULT NIL)
  2: (NIL #<Unknown Arguments>)

リモート Lisp ボックスにファイルの場所を伝えるにはどうすればよいですか? のように REPL に load ステートメントを挿入しようとしましたload ssh://...が、結果は同じです。

リモートのLispボックスでローカルファイルをコンパイルできるようにするために、何をすべきか提案がある人はいますか? Lispはかなり長い間リモートで操作できるため、これはそれほど新しいことではないと思います...

4

2 に答える 2

3

特定のケースでは、ファイル()ではなく、C-x hバッファーをコンパイルすることをお勧めします(バッファー全体を選択してから)。C-c C-cC-c C-k

厄介なのは、これによってバッファのポイントとマークが変更されることです。うまくいけば、常にバッファ全体をコンパイルすることはありません。

于 2013-01-29T11:06:06.993 に答える
2

フォームのtrampパッケージ名とファイル名/ssh:user@host:path...は Emacs の機能であるため、Clozure では機能しません。

Clozure 自体が ssh を介したコードのロードをサポートしていない限り (これはほとんどありません)、戦略を再考する必要があります。1 つのオプションは、ファイルをローカルで編集rsyncし、ssh ssh トンネルを介して変更を簡単に同期するために使用することです。これにより、最新のファイルが Clozure に表示されます。

于 2013-01-17T09:22:06.703 に答える