本文介绍了加载远程Lisp文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

也许这种情况很少见,但我喜欢连接到运行Clozure CL的远程计算机,并在那里编译一些文件,这些文件位于我的本地桌面上。

所以,到目前为止,我已经实现了连接到我的远程Lisp box。我已经使用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。

此外,如果我想通过Emacs中的ssh从我网络中的任何PC加载文件,我可以做到。但是,如果我尝试用最近加载的(在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 box在哪里可以找到文件?我还尝试将LOAD语句插入到REPL中,如load ssh://...,但结果相同。

有没有人有什么建议,这样我就可以在远程的Lisp机器上编译本地文件了?我认为这并不是什么新鲜事,因为在相当长的一段时间内,都可以远程操作Lisp...

推荐答案

对于您的特定情况,我建议您编译缓冲区(选择整个缓冲区,然后选择C-c,然后是C-c),而不是文件(C-c)。令人烦恼的是,这会更改缓冲区的点和标记。希望您不会一直在编译整个缓冲区。

这篇关于加载远程Lisp文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-04 00:26
查看更多