首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除终止emacsclient提示?

如何删除终止emacsclient提示?
EN

Stack Overflow用户
提问于 2008-11-06 09:39:16
回答 4查看 3.9K关注 0票数 24

在我用emacsclient打开一些东西后,当我杀死那个缓冲区(C-x )时,我会得到一个确认对话框:

代码语言:javascript
复制
Buffer `blah' still has clients; kill it? (yes or no)

但是当我删除直接从Emacs打开的缓冲区时,我不会这样做。有没有办法在emacsclient打开它们时不获取它们?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-11-06 10:19:15

这对我很有效:

代码语言:javascript
复制
(remove-hook 'kill-buffer-query-functions 'server-kill-buffer-query-function)

这里有更多关于Using Emacsclient blog entry的信息。

票数 21
EN

Stack Overflow用户

发布于 2008-11-06 14:26:21

另一种选择是将-n选项与emacsclient一起使用,这样它就不需要等到文件被编辑后才退出。

例如:

代码语言:javascript
复制
emacsclient -n myfile.txt
票数 22
EN

Stack Overflow用户

发布于 2015-01-18 02:14:45

您可以设置键盘命令C-x k,以便它将客户端缓冲区标记为已完成并终止正常缓冲区。

我不知羞耻地从Emacs Wiki的Emacs Client条目中窃取了以下代码片段:

代码语言:javascript
复制
(add-hook 'server-switch-hook
      (lambda ()
        (when (current-local-map)
          (use-local-map (copy-keymap (current-local-map))))
        (when server-buffer-clients
          (local-set-key (kbd "C-x k") 'server-edit))))

虽然这对其他杀死缓冲区的方法(如M-x list-buffers)没有帮助,但为了安全起见,它应该尊重一些shell脚本所期望的Emacs客户端行为。

下面是您的Emacs发行版中的文件server.el的摘录,它可能会稍微阐明我的意思:

代码语言:javascript
复制
;; When you finish editing a Server buffer, again call server-edit
;; to mark that buffer as done for the client and switch to the next
;; Server buffer.  When all the buffers for a client have been edited
;; and exited with server-edit, the client "editor" will return
;; to the program that invoked it.

后来,有一个明确的警告,缓冲区不应该被杀死,而应该被释放(至少我是这样解释的):

代码语言:javascript
复制
;; 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.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/268088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档