Как мне сохранить работу сервера 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))
Другие вопросы по тегам