我已经看到了一些关于使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服务器可以正常工作.有办法解决这个问题吗?
请参阅Emacs手册:
当您启动Emacs服务器时(通过调用server-start),Emacs会创建一个文件,其中包含有关与服务器的TCP连接的信息:运行Emacs的主机,它正在侦听的端口以及身份验证字符串.如果需要通过TCP连接到服务器,emacsclient将使用此信息.默认情况下,该文件位于〜/ .emacs.d/server /目录中.您可以指定要与`-f file'或`--server-file = file'选项一起使用的文件名,或者通过将EMACS_SERVER_FILE环境变量设置为文件名.
换句话说:无论你在哪里打电话emacsclient
,你都必须告诉它使用该文件${program-dir}/.emacs.d/server/
,或者使用-f
或设置EMACS_SERVER_FILE
环境变量.(在你正在启动的环境中emacsclient
,而不是在Emacs中.)
[你也可以告诉Emacsclient用-s
"socket" 查找正确的位置,但这在Windows上不起作用.在Unix上(至少在带有Aquamacs的Mac OS X上)套接字就像 /tmp/emacs501/server
(501是我的UID).
[哦,顺便说一下,看看这个问题:我怎样才能拥有便携式Emacs?也许有些东西可以帮到你,或者你可能有东西可以添加到它:-)]