通过使用这个常见的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),并且默认为该模式的所有新缓冲区都更喜欢该窗口。这可能吗?
答案 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维基页面上的其中一个软件包提供了您正在寻找的功能......