2010-11-22 71 views
5

我已經emacs的行爲或多或少我如何想使用的elisp這個公共位:Emacs中dired模式的專用窗口?

(defun toggle-current-window-dedication() 
(interactive) 
(let* ((window (selected-window)) 
     (dedicated (window-dedicated-p window))) 
    (set-window-dedicated-p window (not dedicated)) 
    (message "Window %sdedicated to %s" 
      (if dedicated "no longer " "") 
      (buffer-name)))) 

(global-set-key [pause] 'toggle-current-window-dedication) 

不幸的是,dired使用爲緩衝區名的目錄,所以專一dired窗口只有它致力於到目錄。一旦你向上或向下導航,它將在一個單獨的窗口中打開一個新的緩衝區。我想要做的是將一個窗口專用於一個主要模式(在這種情況下直接),並且使所有默認爲該模式的新緩衝區都偏好該窗口。這可能嗎?

回答

4

嘗試使用代碼結合dired-single的功能,這將導致所有dired導航內發生一個名爲*dired*的緩衝區。爲了充分披露,我寫了dired-single

+0

謝謝喬,那就是我一直在尋找的! – 2010-11-26 04:31:59

+0

不幸的是,'dired-single'在與* * dired *'緩衝區相同的窗口中打開文件。雖然這對於目錄來說是完美的,但如果可以像使用'dired-find-file-other-window'那樣處理文件,那將會很好。 – hupf 2014-04-10 09:29:28

3

set-window-dedicated-p強制Emacs只顯示該緩衝區的窗口,其他dired緩衝區不能使用相同的窗口。見*info* page for set-window-dedicated-p

`顯示緩衝區」(*注意選擇 窗口::)從來沒有使用專用的 窗口中顯示它另一個緩衝區 。

或許DiredReuseDirectoryBuffer wiki頁面上的軟件包中的一個提供你正在尋找...

+0

謝謝,Trey。我正在使用dired-find-alternate-file來防止打開新的緩衝區,併爲dired緩衝區設置了相同的窗口正則表達式。這使我獲得了我想要的90%的位置,但其他緩衝區仍然可以在我的直接窗口中打開(幫助,完成等)。如果我對elisp有更好的理解,我會在打開一個新的緩衝區之前,在窗口中直接掛鉤一個正則表達式匹配。 :) – 2010-11-23 02:23:16