【问题标题】:Load remote Lisp files加载远程 Lisp 文件
【发布时间】:2013-01-17 06:05:04
【问题描述】:

也许这是一个不寻常的情况,但我喜欢连接到运行 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 ssh://... 这样在 REPL 中插入一个加载语句,但结果相同。

有没有人有一些建议,以便我可以在远程 Lisp 机器上编译本地文件?我认为这并不是什么新鲜事物,因为 Lisp 可以远程操作很长一段时间......

【问题讨论】:

  • 您可以添加 lisp 代码以首先下载文件,可以直接在 lisp 中或使用系统命令(使用 ssh 和 tar 来获取 lisp 文件的目录)。如果这些 lisp 文件不占用太多空间,这可能是一个简单的解决方法。

标签: emacs common-lisp slime tramp


【解决方案1】:

对于您的特殊情况,我建议您编译缓冲区(选择整个缓冲区 C-x h,然后 C-c C-c),而不是文件 (C-c C-k)。

令人烦恼的是这会改变缓冲区的点和标记。希望您不会一直编译整个缓冲区。

【讨论】:

    【解决方案2】:

    tramp 包和 /ssh:user@host:path... 形式的文件名是 Emacs 功能,这就是它们在 Clozure 中不起作用的原因。

    除非 Clozure 本身支持通过 ssh 加载代码(这不太可能),否则您将需要重新考虑您的策略。一种选择是在本地编辑文件并使用rsync 轻松同步您的 ssh ssh 隧道上的更改,以便 Clozure 可以看到最新的文件。

    【讨论】:

    • 好的,谢谢。鉴于我们今天拥有的现代完全集成的 IDE,在我看来这很不方便。但它应该可以工作,我会尝试将 rsync 与 ssh 一起设置。
    • 你也可以只使用Dropbox;让事情变得更加自动化。
    • @metaman,还有哪些 IDE 允许您在远程机器上编辑文件并将其中的内容加载到另一台远程机器上运行的应用程序中? (这是一个诚实的问题。)
    猜你喜欢
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多