Как мне поддерживать работу сервера Emacs, когда текущее окно закрыто (x) на окнах, использующих emacsW32? - PullRequest
2 голосов
/ 04 января 2010

Я использую EmacsW32 (исправлено) на окнах. Emacs работает в режиме сервера, поэтому последующие вызовы emacsclientw открывают файлы в том же сеансе сервера.

У меня есть C-x C-c , чтобы сделать текущий кадр невидимым и не убить процесс сервера emacs. Я бы хотел, чтобы кнопка X (закрыть) окна также просто скрывала фрейм и не прекращала процесс сервера, как это происходит в настоящее время.

Есть идеи? Спасибо!

1 Ответ

2 голосов
/ 05 января 2010

Конечно, у меня есть способ сделать это. Возможны уточнения, но это хорошая отправная точка.

Сначала я настраиваю переменную и советую функцию 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 просто делает кадр невидимым, как то, к чему вы привязаны C-x C-c .

У меня есть дополнительная функция для правильного выхода из Emacs, если это когда-либо необходимо. Это установит переменную и вызовет kill-emacs следующим образом.

(defun bnb/really-kill-emacs ()
    (interactive)
    (setq bnb/really-kill-emacs t)
    (kill-emacs))
...