Emacs

如何阻止 emacs 詢問我是否要退出修改後的文件而不保存?

  • May 9, 2014

如果我正在關閉一個有修改的文件,emacs 會警告我並說我應該按 y 或 n。

即使我按“n”,它仍然告訴我修改後的緩衝區存在,並詢問我是否要保存。

有沒有辦法阻止第二個“已修改緩衝區存在”消息的出現?一旦我按下了’n’,emacs 應該清楚我不想保存。

不過,我確實希望它問我第一個“y 或 n”問題。

此警告內置於save-buffers-kill-emacs. 你不能輕易禁用它。

擺脫它的一種簡單方法是告訴 Emacs 保存所有緩衝區,方法是將前綴參數傳遞給save-buffers-kill-emacs命令(或save-buffers-kill-terminal呼叫它的命令): typeC-u C-x C-c而不是C-x C-c. 但是,您可能不想這樣做。

您可以使用建議工具來修改函式的行為。yes-or-no-p在這裡,它很麻煩,因為程式碼在一些難以破解的邏輯中間呼叫了一個通用函式 ( )。

(require 'cl)
(defadvice save-buffers-kill-emacs
 (around save-buffers-kill-emacs-no-modified-yes-no activate compile))
 (let ((real-yes-or-no-p (symbol-function 'yes-or-no-p)))
   (flet ((yes-or-no-p (msg)
            (or (equal msg "Modified buffers exist; exit anyway? ")
                (funcall real-yes-or-no-p msg)))))
   ad-do-it))

您可能更喜歡複製定義並刪除有問題的呼叫,但是隨著 Emacs 的發展,這可能需要更多的維護。


你真的需要這個嗎?首先,警告未保存的更改通常是個好主意,這就是 Emacs 這樣做的原因。其次,通常在您的會話中啟動 Emacs 並在您註銷時退出它,因此退出 Emacs 是很少發生的事情。

引用自:https://unix.stackexchange.com/questions/108260