【问题标题】:Space character inside an argument (emacs lisp)参数中的空格字符(emacs lisp)
【发布时间】:2013-05-04 13:33:41
【问题描述】:

在 Windows 中,我将变量 inferior-lisp-program 设置为 (shell-quote-argument "D:/Program Files/ccl/wx86cl.exe")

但是当我使用命令 run-lisp 运行低级 lisp 时,emacs 会响应:

Searching for program: no such file or directory, "D:/Program

似乎 emacs 将 "D:/Program Files/ccl/wx86cl.exe" 视为两个参数 "D:/ProgramFiles/ccl/wx86cl.exe",由空格字符分隔。

如何让 emacs 将"D:/Program Files/ccl/wx86cl.exe" 视为一个整体?

【问题讨论】:

    标签: emacs lisp elisp


    【解决方案1】:

    尝试为"Program Files" 使用旧的"Progra~1" 兼容性名称。所以,

    (setq inferior-lisp-program "D:/Progra~1/ccl/wx86cl.exe")
    

    【讨论】:

    • 非常感谢,scvalex。您的 "Progra~1" 方法效果很好。但是另外两个在我的电脑上不起作用。 Emacs 回复:Spawning child process: invalid argument。你知道为什么吗?
    • @wyqtl 最后一种方法可能仅在命令提示符下用作 shell 转义。删除它。我不确定为什么第一个不起作用。
    • 谢谢@wvxvw。这确实是一种很好的替代方法。
    • @scvalex (setq inferior-lisp-program "D:/Program Files/ccl/wx86cl.exe") 可能不起作用。我查看了emacs的run-lisp函数的源码。有一行说(split-string cmd)。所以emacs故意拆分字符串。而且您放置的 .emacs 文件也使用了不带空格的路径。您能否编辑您的答案,然后我会接受。谢谢。
    • 完成。哈;所以网络上至少有两个不正确的 .emacs 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多