Я хотел бы иметь возможность видеть местоположение родительского каталога текущего файла, независимо от текущего имени буфера.
mode-line
directories
secondplanet
источник
источник
Ответы:
Вы можете настроить формат строки режима по своему усмотрению. Если вы хотите показать родительский каталог вместе с именем буфера (обычно это имя файла, для буфера, который посещает файл), измените
mode-line-buffer-identification
; в противном случае добавьте запись вmode-line-format
. Не существует встроенной конструкции для «родительского каталога текущего файла», поэтому вам нужно создать ее самостоятельно , например, с помощью:eval
. Вот пример, который добавляет имя каталога после имени буфера и ничего не делает в буферах, которые не посещают файлы (включая Dired); Вы можете уточнить это с форматированием.Другой способ - установить переменную, содержащую текст, который вы хотите использовать
find-file-hooks
. Я также покажу, как вы можете установить свойства с помощью:propertize
конструкции.Если вы действительно хотели иметь имя каталога на тот случай, если у вас есть несколько файлов с одинаковым именем в разных каталогах, Emacs имеет встроенную библиотеку uniquify . Когда будет несколько буферов с одним и тем же именем, эта библиотека заставляет имя буфера выглядеть
file.ext<foo>
иfile.ext<bar>
вместоfile.ext
иfile.ext<2>
. Вы можете точно настроить формат, настроивuniquify-buffer-name-style
.источник
Я предполагаю, что вы имеете в виду, что вы хотите видеть каталог вместо имени буфера.
Или, если вы хотите, чтобы ваш домашний каталог был сокращен до
~/
(вместо абсолютного имени файла из корня), то:Или, если вам нужно только имя родительского каталога, в качестве одного имени компонента каталога, то:
Или, если вы хотите сохранить также имя буфера, как предполагает @Malabarba, то:
Дело в том, что вам просто нужно использовать значение
default-directory
(возможно, упрощенное от абсолютного имени, если хотите) вmode-line-buffer-identification
. Вы можете установить для этой переменной только имя каталога или установить для него значение, которое также содержит имя буфера.Если то, что вы просите, - это все, что вы хотите, просто настроить строку режима так
default-directory
, чтобы она отображалась, как бы вы ни хотели. Нет необходимости загружать несколько библиотек для этого (что иsmart-mode-line
делает).источник
Вы устанавливаете использовать smart-mode-line . Он настроен на отображение пути к файлу в строке режима, когда это актуально.
Просто установите его, а затем включите его с помощью
(sml/setup)
.У этого также есть много особенностей, чтобы сделать этот показ более кратким. Например, «~ / .emacs.d /» заменяется на «: ED:» (и вы можете настроить дальнейшие замены).
источник