如何在Emacs中杀死临时缓冲区之前发出警告?

问题描述:

不止一次,我在Emacs中意外地杀死一个临时缓冲区而失去了工作。当我杀死一个不与文件关联的缓冲区时,可以设置Emacs给我一个警告吗?如何在Emacs中杀死临时缓冲区之前发出警告?

创建一个函数,询问您是否确定何时编辑缓冲区并且不与文件关联。然后将该函数添加到列表kill-buffer-query-functions

望着文档Buffer File Name你明白:

  • 一个缓冲区没有访问一个文件,当且仅当该变量buffer-file-name是零

透过这些分析写的函数:

(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) 
+0

这工作,但我不得不删除“缓冲”的说法。 – 2008-09-17 20:36:04

(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)