Emacs, как получить каталог текущего буфера?

В emacs есть имя файла buffer-file, которое дает полный путь к файлу. Но есть ли способ получить только каталог файла, загруженного в текущий буфер?

Ответ 1

Вы можете использовать переменную default-directory.

Документация: Имя каталога по умолчанию текущего буфера. Должна закончиться косой чертой. Чтобы интерактивно изменить каталог по умолчанию, используйте команду `cd '.

Обратите внимание, что expand-file-name будет использовать default-directory по умолчанию, поэтому иногда вам даже не нужно упоминать об этом.

Ответ 2

Иногда default-directory для текущего буфера может быть установлено что-то отличное от текущего каталога файла, который сейчас посещает буфер, и в этом случае указанное выше решение не даст того, что искал искатель.

В таких случаях вы можете использовать метод file-name-directory, например: (file-name-directory buffer-file-name)

Вот ссылка на документы:

http://www.gnu.org/software/emacs/manual/html_node/elisp/File-Name-Components.html