Emacs 客户端:Cx k 和 Cx # 之间的区别

dar*_*sky 2 emacs emacs24 emacs-server

当在带有客户端的守护进程中运行 emacs 并点击 Cx k 时,它显示:Emacs 缓冲区仍然有客户端。你确定你要退出吗?

但是当使用Cx#时,它立即退出。

我不明白其中的区别。如果 Cx k 在客户端中,为什么它一开始就不表现正常?

我发现这个片段应该使 Cx k 行为正常,但我不明白其中的区别。

此外,当 emacs 客户端启动时,它会从先前的缓冲区开始几秒钟,然后打开新的缓冲区。emacs 服务器的目的不就是加快初始启动时间吗?为什么会这样做/我该如何修复它?初始加载时,它会从头开始几秒钟。

phi*_*ils 5

我写不出C-x#比 Emacs 已经给你的更好的解释了。只需输入C-hkC-x#

我假设这C-xk会警告你,因为你没有使用明确告诉客户端你已经完成的机制,并且你可能试图从任何Emacs 框架中删除缓冲区(除非你将 Emacs 作为守护进程运行,将会有非客户端帧),它确保您知道缓冲区与某处的客户端关联

查询本身来自server-kill-buffer-query-function添加到 的kill-buffer-query-functions,并且可能无法知道杀死是从哪里发出的。它有以下评论:

;; Ask before killing a server buffer.
;; It was suggested to release its client instead,
;; but I think that is dangerous--the client would proceed
;; using whatever is on disk in that file. -- rms.
Run Code Online (Sandbox Code Playgroud)