当使用emacsW32在Windows上关闭当前窗口(x)时,如何保持emacs服务器运行?

时间:2010-01-04 19:07:24

标签: emacs emacs23 emacsw32

我在Windows上使用EmacsW32 (patched)。 Emacs正在服务器模式下运行,以便后续调用emacsclientw在同一服务器会话中打开文件。

我将 C-x C-c 映射为使当前帧不可见而不会终止emacs服务器进程。我想点击窗口的 X (关闭)按钮,也可以隐藏框架&不要像现在那样终止服务器进程。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

当然,我有一种方法可以做到这一点。可能有一些改进,但这是一个很好的起点。

首先,我设置一个变量并建议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))