1

我正在从便携式驱动器(USB 记忆棒)成功运行 Emacs,但是当我尝试使用 diff 函数时遇到了麻烦。我已经安装了 cygwin,当我将 diff.exe 的路径添加到 Windows 中的环境变量 PATH 时,它可以与 Emacs 一起使用。问题是,使用这种方法,我必须在我想使用的每台计算机上编辑环境变量。不好。

然后我尝试将它从我的 site-start.el 中添加到路径变量中。当我从 Emacs 中检查变量时添加了路径,但 Emacs 仍然找不到 diff 工具。

有谁知道如何解决这个问题?

提前致谢

——马丁

编辑: 我的 site-lisp.el 现在看起来像这样,到目前为止没有任何效果(除了手动将路径添加到 PATH 环境变量中):

;
; Get drive letter
;
(defvar usb-drive-letter (substring data-directory 0 2)) 

;
; Add cygwin-folder to path and exec-path
;
(defvar cygwin-folder (concat usb-drive-letter "/PortableApps/CygwinPortable/App/Cygwin/bin/"))
(setenv "PATH" (concat (getenv "PATH") ";" cygwin-folder))
(setq exec-path (append exec-path cygwin-folder))

我的文件夹如下:

[root of usb stick]
\PortableApps\Emacs\bin  (including runemacs.exe)
\PortableApps\CygwinPortable\App\Cygwin\bin   (including diff.exe)
4

4 回答 4

1

您正在设置哪个“路径变量”?IIUC 你想设置exec-pathLisp 变量(你可能还想设置PATH环境变量,但是那个不会影响 Emacs 对可执行文件的搜索,它只会传递给子进程)。

于 2012-09-20T14:27:08.350 回答
0

尝试:
(setenv "PATH" (concat "d:/path/to/bin;" (getenv "PATH")))
注意路径分隔符应该是 ; 而不是:在windows下

于 2012-09-20T13:29:44.407 回答
0

您可以尝试通过使用完整路径设置变量“diff-command”来明确指向 diff 命令。

(setq diff-command "full/path/to/diff.exe")
于 2012-09-20T15:06:13.673 回答
0

我最终将 diff.exe 移动到 Emacs bin 文件夹。我发现没有其他东西在起作用。现在我唯一的问题是血腥的 nodosfilewarning 变量来阻止 cygwin 在我的 ms-dos 路径上抱怨......

干杯

于 2012-10-03T13:58:34.707 回答