7

我已经看到了一些关于使 emacs 可移植(在 Windows 上)的建议。我的 site-start.el 中有这个:

(defvar program-dir (substring data-directory 0 -4))

(setq inhibit-startup-message t)
(setenv "HOME" program-dir)

我更改了 HOME 变量,这样不仅读取了我的 .emacs 初始化文件(和其他初始化文件),而且 emacs 生成的所有内容都将保留在程序目录中,不需要我一一指定所有内容的路径。

好吧,这很好用,但是 emacs 服务器不工作;我收到错误消息“无法建立连接,因为目标机器主动拒绝了它。” 如果我不更改我的 HOME var,那么 emacs 服务器就可以工作。有没有办法解决这个问题?

4

2 回答 2

6

引用Emacs 手册

当您启动 Emacs 服务器(通过调用 server-start)时,Emacs 会创建一个文件,其中包含有关与服务器的 TCP 连接的信息:运行 Emacs 的主机、它正在侦听的端口以及一个身份验证字符串。如果 emacsclient 需要通过 TCP 连接到服务器,它会使用此信息。默认情况下,该文件位于 ~/.emacs.d/server/ 目录中。您可以指定要与 `-f file' 或 `--server-file=file' 选项一起使用的文件名,或者通过将 EMACS_SERVER_FILE 环境变量设置为文件名。

换句话说:无论您emacsclient从哪里调用,您都必须告诉使用 in 中的文件${program-dir}/.emacs.d/server/,无论是使用环境变量-f还是设置EMACS_SERVER_FILE环境变量。(在您开始的环境中emacsclient,而不是在 Emacs 中。)
[您可以告诉 Emacsclient 使用-sfor "socket" 在正确的位置查找,但这在 Windows 上不起作用。而在 Unix 上(至少在带有 Aquamacs 的 Mac OS X 上),套接字将类似于 /tmp/emacs501/server(501 是我的 UID)。]

[哦,顺便说一句,看看这个问题:我怎样才能拥有便携式 Emacs?也许有什么可以帮助你,或者你有什么要补充的:-)]

于 2008-12-11T14:35:39.217 回答
0

这里有一个便携式应用程序版本的 emacs 23.2 的初始打包 初始测试在这里工作。

于 2010-06-16T14:30:53.777 回答