Имя файла буфера — это имя файла, который посещается в этом
буфере. Когда буфер не посещает файл, его имя файла буфера
равно nil. В большинстве случаев имя буфера совпадает с
некаталоговой частью имени файла буфера, но имя файла буфера и
имя буфера — это различные понятия, и их можно устанавливать независимо.
См. Посещение файлов.
Эта функция возвращает абсолютное имя файла, который посещает
buffer. Если buffer не посещает никакой файл,
buffer-file-name возвращает nil. Если buffer не
указан, по умолчанию используется текущий буфер.
(buffer-file-name (other-buffer))
⇒ "/usr/user/lewis/manual/files.texi"
Эта локальная переменная буфера содержит имя файла, посещаемого
в текущем буфере, или nil, если он не посещает файл. Это
постоянная локальная переменная, на которую не влияет
kill-all-local-variables.
buffer-file-name
⇒ "/usr/user/lewis/manual/buffers.texi"
Изменять значение этой переменной без выполнения различных других
действий рискованно. Обычно лучше использовать set-visited-file-name (см.
ниже); некоторые из выполняемых там действий, такие как изменение имени буфера,
не являются строго необходимыми, но другие необходимы, чтобы не запутывать
Emacs.
Эта локальная переменная буфера содержит сокращённое истинное имя файла,
посещаемого в текущем буфере, или nil, если файл не посещается.
Это постоянная локальная переменная, на которую не влияет
kill-all-local-variables. См. Истинные имена и
abbreviate-file-name.
Эта локальная переменная буфера содержит номер инода и идентификатор
устройства файла, посещаемого в текущем буфере, или nil, если
файл не посещается или посещаемый файл не существует. Это постоянная
локальная переменная, на которую не влияет kill-all-local-variables.
Значение обычно представляет собой список вида (inodenum
device). Эта пара уникально идентифицирует файл среди
всех файлов, доступных в системе. См. функцию
file-attributes в Атрибуты файлов для получения дополнительной информации
о них.
Если buffer-file-name является именем символической ссылки, то и
inodenum, и device относятся к рекурсивному целевому объекту ссылки.
Эта функция возвращает буфер, посещающий файл filename. Если
такого буфера нет, она возвращает nil. Аргумент
filename, который должен быть строкой, раскрывается (см. Функции, раскрывающие имена файлов), а затем сравнивается с именами посещаемых файлов всех живых
буферов. Обратите внимание, что buffer-file-name буфера должен точно
соответствовать раскрытию filename. Эта функция не будет
распознавать другие имена того же файла.
(get-file-buffer "buffers.texi")
⇒ #<buffer buffers.texi>
В необычных обстоятельствах может быть более одного буфера, посещающего один и тот же файл. В таких случаях эта функция возвращает первый такой буфер в списке буферов.
Эта функция подобна get-file-buffer, за исключением того, что она может вернуть любой
буфер, посещающий файл возможно под другим именем. То
есть buffer-file-name буфера не обязан точно совпадать с
раскрытием filename, достаточно, чтобы он ссылался на тот же
файл. Если predicate не равен nil, он должен быть
функцией одного аргумента — буфера, посещающего filename.
Буфер считается подходящим возвращаемым значением, только если predicate
возвращает не nil. Если не удаётся найти подходящий буфер для
возврата, find-buffer-visiting возвращает nil.
Если 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 в минибуфере.
Эта локальная переменная буфера задаёт строку, отображаемую в списке буферов там, где обычно указывается имя посещаемого файла, для буферов, у которых нет имени посещаемого файла. Буферы Dired используют эту переменную.