2010-12-10 4 views
2

Я очень часто открываю большое количество окон проводника файловой системы (либо под linux или windows). Затем я делаю большую очистку и закрываю все. Часто я также закрываю Emacs по ошибке.Emacs: предотвратить закрытие с кнопки окна менеджера

Я хотел бы изменить поведение кнопки «X», чтобы свести к минимуму, а не закрывать (оставьте закрытие только до C-x C-c). Я почти уверен, что это возможно, но я не знаю, как это сделать. Кто-нибудь, чтобы помочь?

ответ

1

Один из возможных способов достижения этого - (ab-) использовать механизм confirm-kill-emacs: это функция, которая запрашивает у пользователя подтверждение об уничтожении emacs. Однако вместо использования интерактивной функции вы можете ввести специальную переменную, которая истинна, только если команда kill была вызвана через C-x C-c, а функция подтверждения просто возвращает значение этой переменной.

Поместите в ваш файл .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

Если вы советуете функцию 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/действительно уничтожающие-Emacs определяется так, что вы можете убить Emacs, когда это необходимо.

Смежные вопросы