如何将本地源代码中定义的ASDF系统加载到远程lisp?我使用SBCL,Slime和Swank

时间:2017-11-30 00:43:37

标签: common-lisp sbcl slime swank

我的笔记本电脑上有一个简单的ASDF系统。我可以做“M-X粘液负载系统”,它加载。我可以调用一个包导出的函数。

当我在本地运行另一个Emacs实例,并使用slime-connect连接到远程Swank并加载系统时,我得到:

Component "<system-name>" not found
   [Condition of type ASDF/FIND-SYSTEM:MISSING-COMPONENT]

Restarts:
 0: [RETRY] Retry ASDF operation.
 1: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the configuration.
 2: [ABORT] Abort compilation.
 3: [*ABORT] Return to SLIME's top level.
 4: [ABORT] abort thread (#<THREAD "repl-thread" RUNNING {100346E7C3}>)

Backtrace:
  0: ((:METHOD ASDF/OPERATE:OPERATE (SYMBOL T)) ASDF/LISP-ACTION:LOAD-OP "<system-name>") [fast-method]
...
and more

我想要实现的是能够将系统加载到远程lisp,在本地编辑代码,以及在远程lisp中编译/加载它。

如果我将源代码rsync到远程系统的〜/ common-lisp /,则slime-load-system可以工作。这很好,但感觉不对,这个额外的步骤。

如何在没有rsyncing的情况下使其工作?

1 个答案:

答案 0 :(得分:3)

Asdf适用于路径名,因此如果您无法在远程系统上引用本地系统上的文件的路径名,则无法加载该系统。我不知道有任何Lisp可以让你制作这样的路径名,所以我认为你需要设置其他东西。我的建议是使用sshfs或类似的东西来允许远程系统透明地访问本地系统上的文件。