Emacs: запретить закрытие из оконного менеджера - PullRequest
2 голосов
/ 10 декабря 2010

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

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

Ответы [ 2 ]

1 голос
/ 18 декабря 2010

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

1 голос
/ 10 декабря 2010

Один из возможных способов достижения этой цели - (ab-) использовать механизм verify-kill-emacs: это должна быть функция, которая запрашивает у пользователя подтверждение об уничтожении emacs. Однако вместо использования интерактивной функции вы можете ввести специальную переменную, которая имеет значение true, только если команда 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...