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

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

2 ответов


можно использовать default-directory переменной.

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

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


иногда 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