也许这是一个不寻常的案例,但我喜欢连接到运行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。
另外,如果我想通过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框在哪里找到文件?我还尝试将一个load语句插入REPL,如load ssh://...
,但结果相同。
有没有人建议做什么,以便我可以在远程Lisp框上编译本地文件?我认为这不是一个新事物,因为Lisp可以远程操作一段时间......
答案 0 :(得分:3)
对于您的具体情况,我建议您编译缓冲区(选择整个缓冲区 Cx h ,然后 Cc Cc < / kbd>),而不是文件( Cc Ck )。
令人烦恼的是,这会改变缓冲区的点和标记。希望你不会一直编译整个缓冲区。
答案 1 :(得分:2)
tramp
格式的/ssh:user@host:path...
包和文件名是Emacs功能,这就是它们在Clozure中不起作用的原因。
除非Clozure本身支持通过ssh加载代码,这是不太可能的,否则你需要重新考虑你的策略。一种选择是在本地编辑文件并使用rsync
轻松地同步ssh ssh隧道上的更改,以便最新文件对Clozure可见。