【问题标题】:Racket and Geiser on Windows, strange path errorWindows 上的 Racket 和 Geiser,奇怪的路径错误
【发布时间】:2014-11-03 01:29:16
【问题描述】:

当我在运行 GNU Emacs 24.3 和 Racket v6.1 的 Windows 8.1 机器上尝试 (run-racket)(run-geiser) 时,我得到以下输出:

Welcome to Racket v6.1.
default-load-handler: cannot open input file
  path: f:/c/Users/James/AppData/Roaming/.emacs.d/el-get/geiser/scheme/racket/geiser/startup.rkt
  system error: The system cannot find the path specified.; errno=3
>

这确实很奇怪,但是在浏览回溯之后,我仍然不知道发生了什么。

确实,由于 Racket 启动良好,因此从 Geiser 到 Racket 的路径传递方式似乎有些奇怪。我唯一一次看到这种奇怪的路径是当涉及到 MinGW bash 时,/c/ 让我认为它可能是。事实上,如果不是领先的f:,这条路径将是完全有效的。

我不知道如何解决这个问题,因为我不知道 Geiser 如何与 Racket 通信(我今天才开始尝试使用它),但我真的很想得到它工作,因为我在 Emacs 作为我的编辑器非常投入。

所以我的问题是:鉴于以上作为线索,我应该调查哪些可能的问题点?

【问题讨论】:

  • 如果我不得不猜测,看起来 geiser-racket.el 中 geiser-racket--parameters 的最后一行可能有问题。局部变量 rackdir 是正确的,因为 Racket 正在启动,但 (expand-file-name "geiser/startup.rkt" rackdir) 失败。行首的“-f”暗示了错误路径开始处神秘的f:。鉴于c/users/james/appdata... 的路径看起来像一个Windows 约定安装。没有什么反对 Windows,但对我来说,我更喜欢 Windows 中类似 emacs 文件层次结构的 *nix,因为 Emacs 包所做的假设。

标签: emacs path mingw racket geiser


【解决方案1】:

我在geiser/elisp/geiser-load.el 中找到了 Geiser 源代码:

(setq geiser-scheme-dir "/c/Users/James/AppData/Roaming/.emacs.d/el-get/geiser/scheme")

这可能是由 MinGW make 错误生成的。

我改成:

(setq geiser-scheme-dir "c:/Users/James/AppData/Roaming/.emacs.d/el-get/geiser/scheme")

之后一切正常。

问题是 Emacs 的 expand-file-name 假定 /c/... 路径是由于初始正斜杠的相对路径,并猜测它应该在当前驱动器的字母前面加上正确的 Windows Emacs 路径.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 2011-10-19
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多