Spec-Zone.ru › Elisp

Имя файла буфера

Имя файла буфера — это имя файла, на который ссылается этот буфер. Когда буфер не ссылается на файл, его имя файла буфера — 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API