как мне сохранить работу сервера emacs, когда текущее окно закрыто (x) в окнах с помощью emacsW32?

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

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

Любые идеи ? Спасибо!


person sbaker    schedule 04.01.2010    source источник
comment
Могу я спросить, как вы делаете текущий кадр невидимым и не убиваете серверный процесс emacs?   -  person harpo    schedule 07.10.2010
comment
Ничего, я нашел это... для справки, это работает отлично: emacs-fu.blogspot.com/2009/03/windows-and-daemons.html   -  person harpo    schedule 07.10.2010


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

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

(defun bnb/really-kill-emacs ()
    (interactive)
    (setq bnb/really-kill-emacs t)
    (kill-emacs))
person bnbeckwith    schedule 04.01.2010
comment
Спасибо! Большую часть времени я буду использовать C-x C-c, но недавно обнаружил, что X-вылетает из окна, и перезапуски сервера сводили меня с ума :-) - person sbaker; 05.01.2010
comment
+1 Спасибо за совет... но не могли бы вы также предоставить функцию bnb/exit? Я поместил этот код в свой init.el, и теперь я не могу выйти без вызова bnb/really-kill-emacs, потому что он говорит, что определение функции Symbol недействительно: bnb/exit. Извините, я новичок в emacs и не мог понять, как написать рассматриваемую функцию. - person harpo; 05.10.2010