2010-01-04 35 views
2

我在windows上使用EmacsW32 (patched)。 Emacs在服務器模式下運行,以便隨後調用emacsclientw在同一服務器會話中打開文件。如何在使用emacsW32的窗口關閉當前窗口(x)時保持emacs服務器運行?

我有C-x C-c映射爲使當前幀不可見並且不殺死emacs服務器進程。我想單擊窗口的X(關閉)按鈕,也只是隱藏框架&不會像當前那樣終止服務器進程。

任何想法?謝謝!

+0

請問您如何「使當前幀不可見並且不殺死emacs服務器進程」? – harpo 2010-10-07 00:38:19

+0

沒關係,我發現它...供參考,這完美的作品:http://emacs-fu.blogspot.com/2009/03/windows-and-daemons.html – harpo 2010-10-07 00:58:09

回答

2

當然,我有一個這樣做的方法。可能會有改進,但這是一個很好的起點。

首先,我設置一個變量,並建議殺-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)) 

泡泡堂/ exit函數只是使框架無形像你勢必C-X C-C什麼。

然後我有一個額外的功能來正確退出emacs,如果這是必要的。這將設置變量並按如下所示調用kill-emacs。

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

謝謝!大多數時候我會使用Cx Cc,但最近發現自己已經不在窗口了,服務器重新啓動讓我瘋狂:-) – sbaker 2010-01-04 21:43:54

+0

+1感謝您的提示......但是您會介意提供* * BNB /退出**功能呢?我把這段代碼放在我的init.el中,現在我不能在不調用bnb/really-kill-emacs **的情況下退出,因爲它顯示「Symbol的函數定義是void:bnb/exit」。對不起,我是emacs的新手,無法弄清楚如何編寫有問題的函數。 – harpo 2010-10-04 22:05:05

相關問題