我經常打開很多文件系統資源管理器窗口(在linux或windows下)。然後我做一個大清理,關閉一切。通常,我也會錯誤地關閉Emacs。Emacs:防止從窗口管理器按鈕關閉
我想改變'X'按鈕的行爲來最小化而不是關閉(請僅關注C-x C-c
)。我幾乎可以肯定這是可能的,但我不知道如何。任何人提供幫助?
我經常打開很多文件系統資源管理器窗口(在linux或windows下)。然後我做一個大清理,關閉一切。通常,我也會錯誤地關閉Emacs。Emacs:防止從窗口管理器按鈕關閉
我想改變'X'按鈕的行爲來最小化而不是關閉(請僅關注C-x C-c
)。我幾乎可以肯定這是可能的,但我不知道如何。任何人提供幫助?
實現此目的的一種可能方式是(ab-)使用confirm-kill-emacs機制:這意味着要求用戶確認有關殺死emacs。但是,不是使用交互式函數,而是隻有在通過C-x C-c調用kill命令並且confirm函數簡單返回該變量的值時才引入一個特殊變量。
把你的.emacs文件如下:
(defvar killed-from-keyboard nil)
(setq confirm-kill-emacs '(lambda (prompt) killed-from-keyboard))
(defun save-buffers-kill-emacs-from-keyboard (&optional arg)
(interactive)
(condition-case nil
(progn (setq killed-from-keyboard t)
(save-buffers-kill-terminal arg))
((quit error)
(setq killed-from-keyboard nil))))
(global-set-key [(control x) (control c)] 'save-buffers-kill-emacs-from-keyboard)
如果你勸殺-emacs的功能,那麼你就可以得到你想要的功能。我的代碼使得我的emacs框架不可見(隱藏),但是您可以使用類似於以下代碼的圖標來代替它。
(defvar bnb/really-kill-emacs nil)
(defadvice kill-emacs (around bnb/really-exit activate)
"Only kill emacs if a prefix is set"
(if bnb/really-kill-emacs
ad-do-it)
(iconify-frame))
(defun bnb/really-kill-emacs()
(interactive)
(setq bnb/really-kill-emacs t)
(kill-emacs))
定義了bnb/really-kill-emacs函數,以便在必要時可以真正殺死emacs。