【问题标题】:Why does Emacs Server say "Buffer still has clients" when its only open on one client?为什么 Emacs 服务器只在一个客户端上打开时说“缓冲区仍然有客户端”?
【发布时间】:2014-03-24 16:52:35
【问题描述】:

我有一个使用打开文件的客户端运行的 emacs 守护程序。我理解 C-k 背后显示“缓冲区仍然有客户端”的概念,但是为什么当缓冲区仅在一个客户端上打开时会发生这种情况(我只有一个客户端打开)?

emacs 守护进程是否将缓冲区的 emacs 服务器副本视为另一个客户端副本?

【问题讨论】:

    标签: emacs emacsclient


    【解决方案1】:

    客户端连接不是用C-k 关闭的,而是用C-x # 关闭的。所以实际上,当你点击C-k 时,你是在告诉 Emacs 在不关闭连接的情况下终止缓冲区。所以“开放客户端”就是您正在查看的那个。

    【讨论】:

    • 我知道这已经几个月了,但是使用 C-x # 关闭缓冲区而不是保存/杀死有什么好处?我阅读了 C-x # 上的帮助文档,但我不太清楚什么时候应该使用它而不是杀死你完成的缓冲区。
    • @TimS。我也不清楚。我经常使用 emacsclient,这仍然经常让我感到困惑。我倾向于建议 kill-buffer 检查客户端,并默认关闭这些连接。我不知道这是否会导致问题。
    【解决方案2】:

    警告是为了防止您无意中关闭客户端连接并导致在等待过程中发生一些意外操作。例如,当 emacsclient 作为 git 或邮件的编辑器被调用时,关闭连接可能会导致提交或发送电子邮件。即使只有一帧打开,您也可能正在处理多个缓冲区并且不记得这个特定的缓冲区来自客户端请求。所以 emacs 显示警告说“你确定要杀死这个缓冲区吗?这也会关闭客户端连接。”

    C-x # 是告诉 emacs “我知道这有一个客户端在等待它。我已经完成了它。请告诉客户端我完成了”并跳过警告。

    【讨论】:

      猜你喜欢
      • 2016-08-05
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 2021-12-12
      • 2017-09-28
      相关资源
      最近更新 更多