2009-09-04 48 views
12

自從我安裝了一臺新機器上的Emacs我看到一個醜陋的行爲。不幸的是,我的舊的.emacs文件相當分散,我不能確定我是否曾經有過處理此問題的elisp。在Emacs中打開太多拆分屏幕!

問題是這樣的:它使用的是,當我執行命令,將打開一個新的緩衝區,如grep'ing,或點擊搜索結果中的文件名,一兩件事情會發生:

  1. 如果只有一個緩衝區顯示時,屏幕上會如果不止一個緩衝區顯示當前緩衝區窗口拆分後一度
  2. ,緩衝窗口會打開所需的文件

我想這種行爲背。我現在我得到如下:

Emacs會保持直到四個緩衝窗口打開分割窗口。如果我不斷點擊多個grep結果,它們打開的緩衝窗口將循環通過另外三個(非grep結果)緩衝窗口。如果他們只是在同一位置保持打開狀態,我會喜歡它:結果旁邊/下面的「下一個」緩衝窗口 - 每次都有相同的緩衝區窗口。

就如何實現這一行爲有什麼想法?

+0

我想這太,新的行爲驅使我堅果。 – 2011-01-13 07:42:15

回答

9

考慮設置split-height-threshold到比框架高度大的值;這將防止不必要的垂直分裂。

(setq split-height-threshold 999) 

如果您偏​​好水平分割的垂直分割,請改爲自定義split-width-threshold

有關如何顯示一個新的緩衝器更細粒度的控制,自定義display-buffer-function;這將允許您完全替換指定緩衝區顯示策略的默認display-buffer函數。

+1

其實,將其設置爲'nil'是禁用垂直分割......規定的方式「如果這是 爲零,'拆分窗口,理智」不允許分割窗口 垂直。」謝謝你的指針! – blalor 2011-12-05 13:24:58

+0

對於這個答案blalor的關鍵改進+1。 – 2014-09-17 00:33:46

1

我從emacs的22切換到23

我發現,設置display-buffer-reuse-frames到非空(由幫助display-buffer的建議)的幫助下,如果你已經有了一個緩衝區中打開文件時遇到了這一點。

3

這是我一直使用的是什麼了一會兒:

;;;--------------------------------------------------------------------- 
;;; display-buffer 

;; The default behaviour of `display-buffer' is to always create a new 
;; window. As I normally use a large display sporting a number of 
;; side-by-side windows, this is a bit obnoxious. 
;; 
;; The code below will make Emacs reuse existing windows, with the 
;; exception that if have a single window open in a large display, it 
;; will be split horisontally. 

(setq pop-up-windows nil) 

(defun my-display-buffer-function (buf not-this-window) 
    (if (and (not pop-up-frames) 
      (one-window-p) 
      (or not-this-window 
       (not (eq (window-buffer (selected-window)) buf))) 
      (> (frame-width) 162)) 
     (split-window-horizontally)) 
    ;; Note: Some modules sets `pop-up-windows' to t before calling 
    ;; `display-buffer' -- Why, oh, why! 
    (let ((display-buffer-function nil) 
     (pop-up-windows nil)) 
    (display-buffer buf not-this-window))) 

(setq display-buffer-function 'my-display-buffer-function) 
+0

適合我。有一點需要注意的是,它不關注編譯模式框架,並在關閉其他更重要的框架時保持它們的打開狀態。 – jupp0r 2014-08-26 07:19:31