我曾经因为不小心在Emacs中清除了临时缓冲区而失去了工作。我是否可以设置Emacs在我清除未与文件关联的缓冲区时发出警告?
我曾经因为不小心在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)
buffer-modified-p'之后的
and'中,您可以将以下内容放入:(not (equal (buffer-name) "Open Recent")) - EfForEffort