Emacs中针对dired模式的专用窗口?

时间:2010-11-22 10:52:00

标签: emacs elisp dired

通过使用这个常见的elisp,我让emacs的行为或多或少地表现得如此:

(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窗口仅将其专用于该目录。向上或向下导航后,它会在单独的窗口中打开一个新缓冲区。我想要做的是将一个窗口专用于主要模式(在这种情况下为dired),并且默认为该模式的所有新缓冲区都更喜欢该窗口。这可能吗?

2 个答案:

答案 0 :(得分:4)

尝试将您的代码与dired-single结合使用,这将导致所有直接导航在名为*dired*的单个缓冲区内发生。为了充分披露,我写了dired-single

答案 1 :(得分:3)

set-window-dedicated-p强制Emacs仅显示该缓冲区的窗口,其他dired缓冲区不能使用相同的窗口。请参阅*info* page for set-window-dedicated-p

  

`display-buffer'(* note选择   窗口::)从不使用专用   显示另一个缓冲区的窗口   在它。

也许DiredReuseDirectoryBuffer维基页面上的其中一个软件包提供了您正在寻找的功能......