2014-01-23 104 views
1

當用客戶端在守護程序中運行emacs並打開C-x k時,它說:Emacs緩衝區仍有客戶端。你確定你要退出嗎?Emacs客戶端:C-x k和C-x之間的區別#

但是,當使用C-x#時,它立即退出。

我不明白區別。爲什麼C-x k首先不能正常表現,如果它在客戶端?

我發現這個片段應該讓C-x k的行爲正常,但我不明白其中的差別。

此外,當emacs客戶端啓動時,它會從前一個緩衝區開始幾秒鐘,然後打開新的緩衝區。 emacs服務器不是加速初始啓動時間的重點嗎?爲什麼要這樣做/我該如何解決它?在初始加載時,它從頭開始幾秒鐘。

+0

「幾秒鐘」多久?我看不出你是否誇張,或者如果你確實意味着你在看到你想要的緩衝區之前看了上一個緩衝區多秒。你正在啓動GUI客戶端還是終端客戶端?其中一個比另一個快嗎?時間延遲是否比從Emacs內部加載文件所需的時間長得多?如果你在客戶端打開一個文件,用'C-x#'關閉它,然後在新客戶端重新打開相同的文件,是第二次比第一次更快? – phils

+0

如果在新客戶端中打開文件時,在一個客戶端窗口中可以看到「* Messages *」緩衝區,那麼當您完成緩衝區操作時,是否會看到除了輸入「Cx#」消息以外的任何其他活動? – phils

+0

它幾乎聽起來像你不離開一個'emacs'進程運行成爲服務器。所以無論何時'emacsclient'啓動它首先需要啓動'emacs'。我錯了嗎?因爲無論何時調用'emacsclient',我運行的emacs進程都有緩衝區並準備好供我使用。這意味着我不會在我調用'emacsclient'的shell中獲得編輯會話。 –

回答

3

我不能寫的C-X#更好的解釋比Emacs的已經給你了。只需鍵入ķCX

我認爲CXķ警告你,因爲你使用的機制,明確地告訴你就大功告成了客戶端是,並且您可能試圖從任意 Emacs框架中殺死緩衝區(並且除非您將Emacs作爲守護程序運行,否則將會有非客戶端框架),它會確保您知道緩衝區與某個客戶端相關聯。

該查詢本身來自server-kill-buffer-query-function,它被添加到kill-buffer-query-functions,並且可能無法告訴哪裏發生了殺死。它具有以下意見:

;; Ask before killing a server buffer. 
;; It was suggested to release its client instead, 
;; but I think that is dangerous--the client would proceed 
;; using whatever is on disk in that file. -- rms. 
+0

明白了。那個'scratch'問題呢?因此,emacsclient需要花費與emacs一樣多的時間加載,使其無用。 – darksky

0

基本上C-值X k殺死一個緩衝和C-X#通知編輯完成,並且客戶端可能會退出emacs的服務器。有點像使用kill或者正確退出程序來終止進程。

+0

明白了。那個'scratch'問題呢?因此,emacsclient需要花費與emacs一樣多的時間加載,使其無用。 – darksky

相關問題