在我用emacsclient打开一些东西后,当我杀死那个缓冲区(C-x )时,我会得到一个确认对话框:
Buffer `blah' still has clients; kill it? (yes or no)但是当我删除直接从Emacs打开的缓冲区时,我不会这样做。有没有办法在emacsclient打开它们时不获取它们?
发布于 2008-11-06 10:19:15
这对我很有效:
(remove-hook 'kill-buffer-query-functions 'server-kill-buffer-query-function)这里有更多关于Using Emacsclient blog entry的信息。
发布于 2008-11-06 14:26:21
另一种选择是将-n选项与emacsclient一起使用,这样它就不需要等到文件被编辑后才退出。
例如:
emacsclient -n myfile.txt发布于 2015-01-18 02:14:45
您可以设置键盘命令C-x k,以便它将客户端缓冲区标记为已完成并终止正常缓冲区。
我不知羞耻地从Emacs Wiki的Emacs Client条目中窃取了以下代码片段:
(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的摘录,它可能会稍微阐明我的意思:
;; 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.后来,有一个明确的警告,缓冲区不应该被杀死,而应该被释放(至少我是这样解释的):
;; 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.https://stackoverflow.com/questions/268088
复制相似问题