Имя файла буфера
Имя файла буфера — это имя файла, на который ссылается этот буфер. Когда буфер не ссылается на файл, его имя файла буфера — 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 ⇒ "/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.Значение обычно представляет собой список вида
(filenum devnum). Эта пара чисел уникально идентифицирует файл среди всех файлов, доступных в системе. См. функциюfile-attributes, в Атрибуты файлов, для получения дополнительной информации об этих числах.Если
buffer-file-name— это имя символической ссылки, то оба числа относятся к рекурсивному целевому объекту.
- Функция: get-file-buffer filename
-
Эта функция возвращает буфер, который ссылается на файл filename. Если такого буфера нет, она возвращает
nil. Аргумент filename (который должен быть строкой) расширяется (см. Расширение имён файлов), затем сравнивается с именами посещаемых файлов всех активных буферов. Обратите внимание, что имя файла буфера должно точно совпадать с расширенным значением filename. Эта функция не распознаёт другие имена одного и того же файла.(get-file-buffer "buffers.texi") ⇒ #<buffer buffers.texi>В необычных обстоятельствах может быть более одного буфера, ссылающегося на одно и то же имя файла. В таких случаях эта функция возвращает первый такой буфер в списке буферов.
- Функция: find-buffer-visiting filename &optional predicate
Это похоже на
get-file-buffer, за исключением того, что она может вернуть любой буфер, посещающий файл возможно под другим именем. То есть имя файла буфера не обязательно должно точно совпадать с расширенным значением 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-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Buffer-File-Name.html