Emacs“start-server”不会改变变量“server-mode”

Emacs“start-server”不会改变变量“server-mode”

我在 Debian Squeeze 中运行 Emacs 23。~/.emacs不包含任何server相关命令。

我启动 Emacs 并输入C-h v server-mode,由于没有服务器正在运行,因此返回nil。然后我输入M-x start-server,这将在正在运行的 Emacs 实例中启动 Emacs 服务器。

但是当我再次检查时,变量server-mode仍然存在。只有在运行之后,变量才会获得值。这是一个错误还是我做错了什么?nilM-x server-modeserver-modet

服务器模式作品输入 后一切正常start-server;我可以使用emacsclient在 Emacs 服务器中打开文件。但是,我想server-mode在模式行中使用变量来指示服务器是否正在运行,但如果使用 启动服务器start-server不会更改 的值server-mode,则这将无法按预期工作。

答案1

更好的方法是使用(server-running-p)fromserver包。例如

(require 'server)
(unless (server-running-p)
    (server-start))

答案2

为了获得我需要/期望的功能(从刚启动的 Emacs),我运行M-x server-mode来启动服务器,而不是server-start。以这种方式启动服务器会将变量的值更改server-modet

我不明白为什么启动服务器时使用记录 server-start未将变量设置server-modet

相关内容