我经常打开很多文件系统资源管理器窗口(在linux或windows下)。然后我做了一个大清理并关闭一切。通常,我也错误地关闭了Emacs。
我想更改“X”按钮的行为以最小化而不是关闭(仅限于C-x C-c
)。我几乎可以肯定这是可能的,但我不知道如何。有人帮忙吗?
答案 0 :(得分:1)
实现此目的的一种可能方法是(ab-)使用confirm-kill-emacs机制:这是一个要求用户确认杀死emacs的函数。但是,除了使用交互式函数之外,您还可以引入一个特殊变量,该变量仅在通过C-x C-c调用kill命令时才为真,并且confirm函数simple返回该变量的值。
将以下内容放入.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)
答案 1 :(得分:1)
如果您建议使用kill-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。