通过使用 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),并且让默认为该模式的所有新缓冲区更喜欢该窗口。 这可能吗?
set-window-dedicated-p
强制 Emacs 仅显示该缓冲区的窗口,其他 Dired 缓冲区不能使用相同的窗口。 请参阅 *信息* 页面了解 set-window-dedicated-p
:
`显示缓冲区'(*注意选择 窗口::)从不使用专用的 用于显示另一个缓冲区的窗口 在里面。
也许 DiredReuseDirectoryBuffer wiki 页面上的软件包之一提供了您正在寻找的功能...
将
dired-kill-when-opening-new-dired-buffer
emacs 变量设置为 t
。 例如,将以下内容添加到您的 init.el
:
(setq dired-kill-when-opening-new-dired-buffer t)
来自文档:
If non-nil, kill the current buffer when selecting a new directory.
This variable was added, or its default value changed, in Emacs 28.1.