Emacs 中用于 dired 模式的专用窗口?

问题描述 投票:0回答:3

通过使用 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),并且让默认为该模式的所有新缓冲区更喜欢该窗口。 这可能吗?

emacs elisp dired
3个回答
4
投票

尝试将您的代码与

dired-single
结合使用,这将导致所有定向导航发生在名为
*dired*
的单个缓冲区内。 为了充分披露,我写了
dired-single


3
投票

set-window-dedicated-p
强制 Emacs 仅显示该缓冲区的窗口,其他 Dired 缓冲区不能使用相同的窗口。 请参阅 *信息* 页面了解
set-window-dedicated-p

`显示缓冲区'(*注意选择 窗口::)从不使用专用的 用于显示另一个缓冲区的窗口 在里面。

也许 DiredReuseDirectoryBuffer wiki 页面上的软件包之一提供了您正在寻找的功能...


0
投票

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.
© www.soinside.com 2019 - 2024. All rights reserved.