2013-12-15 62 views
1

我有很多框架總是在emacs中打開。就像我使用emacsclient(守護進程)並且幾乎從不重新啓動計算機一樣,這些幀永遠不會關閉。我可以用C-x k關閉一個,但如何關閉所有打開的幀?如何關閉emacsclient中的所有打開的框架?

+0

你是指任何偶然的緩衝區?檢查'C-x C-b'或'list-buffers' – progo

+0

另外'C-x k'殺死一個緩衝區,而不是相關的幀。 'C-x 5 0'殺死幀(但保留緩衝區)。 – tripleee

+0

無論如何,爲什麼你首先要創造如此多的框架?看到http://stackoverflow.com/questions/9968740/create-or-reuse-existing-emacs-gui-frame – tripleee

回答

1

這似乎工作可以接受。它會詢問你是否有殺手列表上的某個緩衝區有未保存的更改。

(defun close-all-other-buffers-and-frames() 
    "Destroy all frames except this one, kill all buffers, display `*scratch*'." 
    (interactive) 
    (set-buffer "*scratch*") 
    (delete-other-frames) 
    (let ((l (buffer-list)) b) 
    (while l 
     (setq b (car l) 
      l (cdr l)) 
     (and (buffer-file-name b) 
      (kill-buffer b))))) 

我有一種感覺,循環殺死緩衝區可以做得更優雅 - 請建議改進​​!

+0

我在編輯中有類似的東西(您可以訪問它並查看是否要採用它)。由於我沒有找到安全檢測我想保持打開的最後一個打開的文件的方法,所以我放棄了它。 (我想在'find-file-hook'中調用它。)我還添加了'buffer-modified-p'並殺死了只有未修改的緩衝區。 – Tobias

1

關閉所有框架只是退出,不是嗎?

如果您想關閉除一個框架以外的所有框架,您可以使用delete-other-frames以及鍵序列C-x 5 1

+0

我想避免關閉窗口,然後重新啓動emacsclient,仍然有很多緩衝區打開。我想退出emacsclient就像我退出emacs(通過關閉每個緩衝區)。當我再次啓動emacsclient時,我想要一個沒有打開緩衝區的全新emacs。 – ppr

+0

如果你想像emacs一樣退出emacs-client,我不明白你爲什麼要使用emacs-client。然後你可以直接使用emacs。 – Tobias

+0

我使用emacsclient,因爲啓動速度比emacs快很多。我在一臺非常舊的電腦上...... – ppr

相關問題