我在 Debian Squeeze 中运行 Emacs 23。~/.emacs
不包含任何server
相关命令。
我启动 Emacs 并输入C-h v server-mode
,由于没有服务器正在运行,因此返回nil
。然后我输入M-x start-server
,这将在正在运行的 Emacs 实例中启动 Emacs 服务器。
但是当我再次检查时,变量server-mode
仍然存在。只有在运行之后,变量才会获得值。这是一个错误还是我做错了什么?nil
M-x server-mode
server-mode
t
服务器模式作品输入 后一切正常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-mode
为t
。
我不明白为什么启动服务器时使用记录 server-start
未将变量设置server-mode
为t
。