【问题标题】:SLIME on Windows 7Windows 7 上的史莱姆
【发布时间】:2013-07-25 14:24:34
【问题描述】:

我正在尝试在 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

我做错了什么?

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

【问题讨论】:

  • 在执行 M-x slime 之前激活 debug-on-error 时,您是否得到任何额外有用的信息?
  • @juanleon - 不。同样的错误,即使在(setf debug-on-error t) 之后。如果我没有先检查inferior-lisp-program 的有效性,我会说slime 找不到它。
  • 奇怪。我会尝试调试slime-maybe-start-lisp(也许会寻找此处传递的参数与传递给 lispbox 的 SLIME 的参数之间的差异)。但这基本上意味着我一无所知:-)
  • SLIME 问题最好在其邮件列表中提出。 common-lisp.net/project/slime/#mailinglist
  • 如果...也许您需要转义Program Files 中的空间怎么办?如果您将格式错误的命令发送到 shell,则会发生此错误。看起来 SLIME 没有通过命令发送更多选项,所以这是我能想到的唯一一个。此外,如果系统范围的设置不可能/不受欢迎,最好将 lisp 的位置添加到 PATH,或者将其符号链接到 exec-path 的某个位置。

标签: emacs windows-7 common-lisp slime


【解决方案1】:

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

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

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

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

但由于您无法影响将文件名传递给创建进程的函数的方式,因此这是行不通的。

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

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

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

【讨论】:

  • 我选择了最后一个选项。 (setq lower-lisp-program "sbcl.exe") 我根本不需要设置我的执行路径。 sblc.exe 安装在默认位置 C:\Program Files (x86)\Steel Bank Common Lisp\1.3.1
  • 哇,这把我逼疯了。我已经在 emacs 之外使用 sbcl 启动它,因为它在我的路径上,但我仍然将完整路径写为参数。绝对要记住一件事,emacs 也作为用户进程运行。
  • 这是一个巨大的帮助。我测试了将 sbcl.exe 添加到安全目录并执行系统路径并且都工作。
猜你喜欢
  • 2016-02-13
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 2012-04-30
相关资源
最近更新 更多