28.3 Имена буферов

Каждый буфер имеет уникальное имя, которое является строкой. Многие из функций, работающих с буферами, принимают в качестве аргумента либо буфер, либо имя буфера. Любой аргумент, называемый buffer-or-name, относится к этому типу, и сигнализируется об ошибке, если он не является ни строкой, ни буфером. Любой аргумент, называемый buffer, должен быть фактическим объектом буфера, а не именем.

Буферы, которые являются эфемерными и, как правило, не представляют интереса для пользователя, имеют имена, начинающиеся с пробела, чтобы команды list-buffers и buffer-menu не упоминали их (но если такой буфер открывает файл, он упоминается). Имя, начинающееся с пробела, также изначально отключает запись информации об отмене; см. Отмена.

Функция: buffer-name &optional buffer

Эта функция возвращает имя buffer в виде строки. buffer по умолчанию — это текущий буфер.

Если buffer-name возвращает nil, это означает, что buffer был уничтожен. См. Уничтожение буферов.

(buffer-name)
     ⇒ "buffers.texi"

(setq foo (get-buffer "temp"))
     ⇒ #<buffer temp>
(kill-buffer foo)
     ⇒ nil
(buffer-name foo)
     ⇒ nil
foo
     ⇒ #<killed buffer>
Команда: rename-buffer newname &optional unique

Эта функция переименовывает текущий буфер в newname. Сигнализируется об ошибке, если newname не является строкой.

Обычно rename-buffer сигнализирует об ошибке, если newname уже используется. Однако, если unique не равен nil, он изменяет newname, чтобы создать имя, которое не используется. В интерактивном режиме вы можете сделать unique не равным nil с помощью числового префикса аргумента. (Так реализована команда rename-uniquely.)

Эта функция возвращает имя, фактически присвоенное буферу.

Функция: get-buffer buffer-or-name

Эта функция возвращает буфер, указанный buffer-or-name. Если buffer-or-name является строкой, и буфера с таким именем нет, возвращается значение nil. Если buffer-or-name является буфером, он возвращается как есть; это не очень полезно, поэтому аргумент обычно является именем. Например:

(setq b (get-buffer "lewis"))
     ⇒ #<buffer lewis>
(get-buffer b)
     ⇒ #<buffer lewis>
(get-buffer "Frazzle-nots")
     ⇒ nil

См. также функцию get-buffer-create в Создание буферов.

Функция: generate-new-buffer-name starting-name &optional ignore

Эта функция возвращает имя, которое было бы уникальным для нового буфера — но не создает буфер. Оно начинается с starting-name и генерирует имя, которое в настоящее время не используется ни для какого буфера, добавляя число внутри «<…>». Оно начинается с 2 и продолжает увеличивать число до тех пор, пока оно не станет именем существующего буфера.

Если необязательный второй аргумент ignore не равен nil, он должен быть строкой — потенциальным именем буфера. Это означает, что потенциальный буфер считается приемлемым, если он будет проверен, даже если это имя существующего буфера (которое обычно отклоняется). Таким образом, если существуют буферы с именами «foo», «foo<2>», «foo<3>» и «foo<4>»,

(generate-new-buffer-name "foo")
     ⇒ "foo<5>"
(generate-new-buffer-name "foo" "foo<3>")
     ⇒ "foo<3>"
(generate-new-buffer-name "foo" "foo<6>")
     ⇒ "foo<5>"

См. связанную функцию generate-new-buffer в Создание буферов.

Функция: buffer-last-name &optional buffer

Эта функция возвращает предыдущее имя buffer до того, как он был уничтожен или до последнего переименования. Если buffer равен nil или опущен, buffer по умолчанию — это текущий буфер.