Имя файла буфера
Имя файла буфера — это имя файла, открытого в этом буфере. Если буфер не связан с файлом, его имя файла буфера — nil. Чаще всего имя буфера совпадает с частью имени файла буфера, не содержащей каталог, но имя файла буфера и имя буфера — разные понятия, и их можно задавать независимо. См. раздел Работа с файлами.
- Функция: buffer-file-name &optional buffer
-
Эта функция возвращает полностью раскрытое абсолютное имя файла, открытого в buffer. Если buffer не связан ни с одним файлом,
buffer-file-nameвозвращаетnil. Если аргумент buffer не указан, по умолчанию используется текущий буфер.(buffer-file-name (other-buffer)) ⇒ "/usr/user/lewis/manual/files.texi"
- Переменная: buffer-file-name
-
Эта локальная переменная буфера содержит абсолютное имя файла, открытого в текущем буфере, или
nil, если буфер не связан с файлом. Это постоянная локальная переменная, на которую не влияетkill-all-local-variables. Ее значение совпадает со значением, возвращаемым функциейbuffer-file-name.buffer-file-name ⇒ "/usr/user/lewis/manual/buffers.texi"Изменять значение этой переменной рискованно, если не выполнить ряд других действий. Обычно лучше использовать
set-visited-file-name(см. ниже); некоторые выполняемые ею действия, например изменение имени буфера, строго говоря, необязательны, но другие необходимы, чтобы не запутать Emacs.
- Переменная: buffer-file-truename
Эта локальная переменная буфера содержит сокращенное истинное имя файла, открытого в текущем буфере, или
nil, если ни один файл не открыт. Это постоянная локальная переменная, на которую не влияетkill-all-local-variables. См. раздел Истинные имена и функцию abbreviate-file-name.
- Переменная: buffer-file-number
-
Эта локальная переменная буфера содержит номер индексного дескриптора и идентификатор устройства файла, открытого в текущем буфере, или
nil, если файл не открыт или не существует. Это постоянная локальная переменная, на которую не влияетkill-all-local-variables.Обычно ее значение — список вида
(inodenum device). Этот кортеж однозначно идентифицирует файл среди всех файлов, доступных в системе. Подробнее об этом см. описание функцииfile-attributesв разделе Атрибуты файлов.Если
buffer-file-name— имя символической ссылки, то и inodenum, и device относятся к конечному файлу, на который указывает ссылка.
- Функция: get-file-buffer filename
-
Эта функция возвращает буфер, в котором открыт файл filename. Если такого буфера нет, она возвращает
nil. Аргумент filename, который должен быть строкой, раскрывается (см. раздел Функции раскрытия имен файлов), а затем сравнивается с именами файлов, открытых во всех активных буферах. Обратите внимание:buffer-file-nameбуфера должно в точности совпадать с раскрытым значением filename. Эта функция не распознает другие имена того же файла.(get-file-buffer "buffers.texi") ⇒ #<buffer buffers.texi>В необычных обстоятельствах один и тот же файл могут открывать несколько буферов. В таких случаях функция возвращает первый из этих буферов в списке буферов.
- Функция: find-buffer-visiting filename &optional predicate
Эта функция похожа на
get-file-buffer, но может вернуть любой буфер, открывающий файл возможно, под другим именем. То естьbuffer-file-nameбуфера не обязательно должно в точности совпадать с раскрытым значением filename; достаточно, чтобы оно указывало на тот же файл. Если predicate не равноnil, оно должно быть функцией с одним аргументом — буфером, открывающим filename. Буфер считается подходящим для возврата, только если predicate возвращает значение, не равноеnil. Если подходящий буфер найти не удается,find-buffer-visitingвозвращаетnil.
- Команда: set-visited-file-name filename &optional no-query along-with-file
-
Если filename — непустая строка, эта функция меняет имя файла, открытого в текущем буфере, на filename. (Если буфер не был связан с файлом, теперь он будет с ним связан.) При следующем сохранении буфер будет записан в файл с новым именем.
Эта команда помечает буфер как измененный, поскольку, насколько известно Emacs, его содержимое не совпадает с содержимым файла filename, даже если оно совпадало с содержимым прежнего открытого файла. Кроме того, она переименовывает буфер в соответствии с новым именем файла, если это имя еще не занято.
Если filename равно
nilили является пустой строкой, это означает «файл не открыт». В этом случаеset-visited-file-nameпомечает буфер как не связанный с файлом, не меняя флаг изменения буфера.Обычно эта функция запрашивает у пользователя подтверждение, если буфер, открывающий filename, уже существует. Если no-query не равно
nil, этот запрос не выводится. Если буфер, открывающий filename, уже существует и пользователь подтверждает действие либо no-query не равноnil, эта функция делает имя нового буфера уникальным, добавляя к filename номер в угловых скобках ‘<…>’.Если along-with-file не равно
nil, предполагается, что прежний открытый файл был переименован в filename. В этом случае команда не меняет флаг изменения буфера и записанное время последнего изменения файла, возвращаемое функциейvisited-file-modtime(см. раздел Время изменения буфера). Если along-with-file равноnil, эта функция сбрасывает записанное время последнего изменения файла, после чегоvisited-file-modtimeвозвращает ноль.При интерактивном вызове функции
set-visited-file-nameона запрашивает filename в минибуфере.
- Переменная: list-buffers-directory
Эта локальная переменная буфера задает строку, отображаемую в списке буферов вместо имени открытого файла для буферов, не связанных с файлом. Эта переменная используется буферами Dired.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Buffer-File-Name.html