6

我正在尝试在 Windows 7 机器上设置 SLIME,但运行M-x slime时出现错误

Spawning child process: invalid argument

我已inferior-lisp-program设置为"C:\\Program Files\\ccl\\wx86cl.exe"(实际上是正确的,并且运行(comint-run inferior-lisp-program)给了我一个有效的 CCL 提示符),并将slime目录添加到我的'load-path.

我究竟做错了什么?

编辑:尝试通过 Windows 版本的lispbox加载相同的环境,它运行 SLIME 很好。我不想使用那个,因为它包含了比我想要的更旧的 Emacs、CCL 和 SLIME。

4

1 回答 1

10

您收到的消息意味着给 shell 的命令很可能存在语法问题。这可能是由文件名中的字符引起的,这可以解释为做了一些特殊的事情。所以,看起来 Emacs 试图C:\\Program用一个参数来调用“程序” Files\\ccl\\wx86cl.exe

有几种方法可以解决错误:

  • 必须有一个转义函数,例如:

(shell-quote-argument "C:\\Program Files\\ccl\\wx86cl.exe")

但是由于您不能影响文件名如何传递给创建进程的函数,所以这不起作用。

  • 您可以将要调用的程序移动到具有“安全”名称的目录中。

  • 您可以将可执行文件移动到系统路径(%PATH%Windows 中的变量)上 - 通过更改环境变量并将包含可执行文件的目录附加到其中。

  • 另一种选择是将带有可执行文件的目录添加到exec-pathEmacs 中的变量中。如果您只是按名称而不是完整路径调用程序,则此变量包含查找程序要运行的所有目录的列表。这也(至少对我而言)使我的.emacs文件更容易在不同系统之间移植。

于 2013-07-25T20:21:29.690 回答