在 Windows XP 上仅启动一次 emacs 23.1(emacsclientw.exe)

在 Windows XP 上仅启动一次 emacs 23.1(emacsclientw.exe)

(server-start)在我的.emacs文件中设置了变量HOME、ALTERNATE_EDITOR(=runemacs.exe)和EMACS_SERVER_FILE。

当我开始

emacsclientw.exe  test.txt

第一次,我期望 emacs 启动并显示缓冲区。test.txt 实际情况是 emacs 启动后,缓冲区划痕显示时,消息行显示(新文件)并且缓冲区 test.txt 存在,但尚未显示。(这不是现在真正困扰我的事情)

当我现在执行

emacsclientw.exe 测试2.txt

我希望使用相同的 emacs 并test2.txt创建一个新的缓冲区。

但是发生的情况是,启动了新的 emacs 并打开了警告缓冲区,内容如下:

Warning (server): Unable to start the Emacs server.
There is an existing Emacs server, named "server".
To start the server in this Emacs process, stop the existing
server or call `M-x server-force-delete' to forcibly disconnect it.

在我看来,这听起来好像第一个实例启动了一个服务器,但第二个实例没有连接到它,而是尝试再次启动服务器。

可能是什么问题呢?

答案1

我也遇到了同样的问题。目前,我使用了以下解决方案。

添加到您的 .emacs 文件:

(load "server")
(unless (server-running-p) (server-start))

解决方案来自如果emacs服务器还没有启动,如何启动它?

答案2

你应该使用以下方式启动 Emacs

runemacs.exe

之后你可以使用

emacsclientw.exe  test.txt

答案3

从表面上看,您的 emacs 服务器正在无法找到的位置创建其服务器文件。要进一步调试该问题,您可以运行 emacs,并查看是否确实创建了emacsclientw指定的服务器文件。EMACS_SERVER_FILE

在我的设置中,我使用的唯一环境变量是HOME。自定义变量server-name保留其默认值(即server)。这会导致$HOME/.emacs.d/server/server在运行 emacs 时创建该文件。并且由于此位置是默认位置,因此emacsclientw.exe能够找到此文件并确定如何与 emacs 通信。

我快速查看了一下server.el我的系统,没有看到任何相关信息EMACS_SERVER_FILE。如果您使用非标准位置,则这可能是导致问题的原因。

答案4

如果你已经(server-start)在 .emacs 文件中了,你可能需要查看 Emacs Wiki。它有一些关于使用MS Windows 下的 emacsclient

相关内容