Как мне сохранить работу сервера Emacs, когда текущее окно закрыто (x) в окнах с использованием emacsW32?
Я использую EmacsW32 (исправлено) на Windows. Emacs работает в режиме сервера, поэтому последующие вызовы emacsclientw открывают файлы в том же сеансе сервера.
Я установил Cx Cc, чтобы сделать текущий фрейм невидимым и не убить процесс сервера emacs. Я хотел бы нажать кнопку X (закрыть) окна, чтобы также просто скрыть фрейм и не завершать процесс сервера, как это происходит в настоящее время.
Есть идеи? Спасибо!
1 ответ
Конечно, у меня есть способ сделать это. Возможны уточнения, но это хорошая отправная точка.
Сначала я устанавливаю переменную и советую функцию kill-emacs.
(defvar bnb/really-kill-emacs nil)
(defadvice kill-emacs (around bnb/really-exit activate)
"Only kill emacs if the variable is true"
(if bnb/really-kill-emacs
ad-do-it)
(bnb/exit))
Функция bnb/exit просто делает кадр невидимым, как то, что вы связали с Cx Cc.
Затем у меня есть дополнительная функция для правильного выхода из Emacs, если это когда-либо необходимо. Это установит переменную и вызовет kill-emacs следующим образом.
(defun bnb/really-kill-emacs ()
(interactive)
(setq bnb/really-kill-emacs t)
(kill-emacs))