emacs - 加载远程 Lisp 文件

标签 emacs common-lisp slime tramp

也许这是一个不寻常的情况,但我喜欢连接到运行 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 框在哪里可以找到文件?我也曾尝试在 REPL 中插入一个加载语句,如 load ssh://...,但结果相同。

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

最佳答案

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

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

关于emacs - 加载远程 Lisp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14373072/

相关文章:

emacs - evil-mode 中的负面争论

emacs - 如何链接到外部组织文件中的二级标题?

lisp - 让 Lisp "hello world"Web 应用程序运行的最简单方法

emacs - 当 emacs 锁定时

emacs - 如何在 Gmail 中使用 GNUS?

emacs - 如何在 dired 模式下获取文件夹路径?

ssl - 在 Common Lisp 错误中访问 https 页面

file-io - 在 Lisp 中保存到文件

emacs - 使用 leiningen 为 clojure 设置 emacs/slime/swank

lisp - 为什么这会让我进入 SBCL 中的 LDB?