当我在运行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
>
这显然很奇怪,但在浏览了回溯之后,我仍然不知道发生了什么
事实上,由于拉基特一开始很好,从盖瑟到拉基特的路径似乎有些奇怪。我唯一一次看到这种路径奇怪是在涉及MinGW bash时,而/c/
让我认为它可能是这样。事实上,如果没有领先的f:
,该路径将完全有效。
我有点不知道如何处理这个问题,因为我不知道Geiser是如何与Racket沟通的(我今天刚开始尝试使用它),但我真的很想让它发挥作用,因为作为我的编辑,我在Emacs上投入了很多。
因此,我的问题是:鉴于上述线索,我应该调查哪些可能的问题点?
在对Geiser源进行一些挖掘后,我在geiser/elisp/geiser-load.el
中发现了以下行:
(setq geiser-scheme-dir "/c/Users/James/AppData/Roaming/.emacs.d/el-get/geiser/scheme")
这可能是MinGW制造商错误生成的。
我把它改成:
(setq geiser-scheme-dir "c:/Users/James/AppData/Roaming/.emacs.d/el-get/geiser/scheme")
之后一切都很完美。
问题是,Emacs的expand-file-name
假设/c/...
路径是一个相对路径,这是由于最初的正斜杠,并猜测它应该在当前驱动器的字母前加上前缀,使其成为一个正确的Windows Emacs路径。