Как сделать так, чтобы имена буферов Dired включали полный путь?

9

У меня часто diredоткрыто много буферов, в том числе для папок с одинаковыми именами. Иногда это заставляет меня переключиться на неправильный, поэтому я ищу способ исправить это.

В настоящее время, если у меня открыто несколько папок с одинаковыми именами dired, мой список буферов выглядит примерно так:

foo
foo<2>
bar
foo<3>
bar<2>

Я хотел бы включить полный путь (или некоторую его часть) в имя буфера, чтобы я мог видеть, на какую папку я на самом деле переключаюсь. Я бы предпочел сделать это так:

foo</full/path/to/foo>
foo</another/path>

и так далее. Я мог бы также согласиться, например:

/full/path/to/foo
/another/path/foo

но я бы предпочел первый, потому что обычно легче найти нужный буфер по имени папки сначала, а затем полный путь. Как это может быть сделано?

Скотт Уэлдон
источник

Ответы:

8

Вы можете получить это поведение, используя uniquifyследующие настройки:

(require 'uniquify)
(setq uniquify-buffer-name-style 'post-forward-angle-brackets
      uniquify-min-dir-content 999)

Однако обратите внимание, что uniquify работает глобально, а не только для буферов с задержкой.

паприка
источник
Хорошо, спасибо! Я подожду и посмотрю, есть ли решение, которое дает полный путь, прежде чем я приму ответ.
Скотт Уэлдон
1
Я только добавил записку о том uniquify-min-dir-content, что должно помочь вам в этом. Обратите внимание, что это глобальная настройка: она применяется ко всем буферам, а не только к буферам с задержкой!
паприка
5

В моем .emacs я установил полные пути для буферов Dired следующим образом:

(add-hook 'dired-after-readin-hook
      (lambda ()
        ;; Set name of dired buffers to absolute directory name.
        ;; Use `generate-new-buffer-name' for vc-directory
        ;; which creates duplicate buffers.
        (rename-buffer (generate-new-buffer-name dired-directory))))
link0ff
источник