在杀死Emacs中的临时缓冲区之前,如何获得警告?
时间:2020-03-05 18:59:50 来源:igfitidea点击:
我不止一次地无意中杀死了Emacs中的临时缓冲区,从而失去了工作。杀死与文件无关的缓冲区时,可以设置Emacs发出警告吗?
解决方案
回答
创建一个函数,该函数将询问我们是否确定缓冲区何时已编辑并且未与文件关联。然后将该功能添加到" kill-buffer-query-functions"列表中。
查看有关"缓冲区文件名"的文档,我们会了解:
- 当且仅当变量" buffer-file-name"为nil时,缓冲区才不访问文件
使用该见解来编写函数:
(defun maybe-kill-buffer () (if (and (not buffer-file-name) (buffer-modified-p)) ;; buffer is not visiting a file (y-or-n-p "This buffer is not visiting a file but has been edited. Kill it anyway? ") t))
然后将函数添加到钩子中,如下所示:
(add-to-list 'kill-buffer-query-functions 'maybe-kill-buffer)
回答
(defun maybe-kill-buffer () (if (and (not buffer-file-name) (buffer-modified-p)) ;; buffer is not visiting a file (y-or-n-p (format "Buffer %s has been edited. Kill it anyway? " (buffer-name))) t)) (add-to-list 'kill-buffer-query-functions 'maybe-kill-buffer)