В этом разделе описываются два примитива для создания буферов.
get-buffer-create создает буфер, если не найдено существующего
буфера с указанным именем; generate-new-buffer всегда
создает новый буфер и присваивает ему уникальное имя.
Обе функции принимают необязательный аргумент inhibit-buffer-hooks.
Если он не равен nil, созданный ими буфер не выполняет хуки
kill-buffer-hook, kill-buffer-query-functions
(см. Уничтожение буферов) и
buffer-list-update-hook
(см. Список буферов). Это позволяет избежать замедления внутренних или временных
буферов, которые никогда не показываются пользователям или не передаются другим
приложениям.
Другие функции, которые вы можете использовать для создания буферов, включают
with-output-to-temp-buffer (см. Временные отображения) и
create-file-buffer (см. Посещаемые файлы). Запуск
подпроцесса также может создать буфер (см. Процессы).
Эта функция возвращает буфер с именем buffer-or-name. Возвращаемый буфер не становится текущим буфером — эта функция не меняет текущий буфер.
buffer-or-name должен быть либо строкой, либо существующим буфером. Если
это строка, и существует живой буфер с таким именем,
get-buffer-create возвращает этот буфер. Если такой буфер не существует,
он создает новый буфер. Если buffer-or-name является буфером, а не
строкой, он возвращается как есть, даже если он мертв.
(get-buffer-create "foo")
⇒ #<buffer foo>
Основной режим для вновь созданного буфера устанавливается в Fundamental mode.
(Значение по умолчанию переменной major-mode обрабатывается на более высоком
уровне; см. Как Emacs выбирает основной режим.) Если имя начинается с пробела,
буфер изначально отключает запись информации об отмене (см. Отмена).
Эта функция возвращает вновь созданный, пустой буфер, но не делает его текущим. Имя буфера генерируется путем передачи name
функции generate-new-buffer-name (см. Имена буферов). Таким образом, если буфера с именем name не существует, то это
имя нового буфера; если это имя используется, к нему добавляется суффикс вида '<n>', где n — целое число.
Сигнализируется об ошибке, если name не является строкой.
(generate-new-buffer "bar")
⇒ #<buffer bar>
(generate-new-buffer "bar")
⇒ #<buffer bar<2>>
(generate-new-buffer "bar")
⇒ #<buffer bar<3>>
Основной режим для нового буфера устанавливается в Fundamental mode. Значение по умолчанию
переменной major-mode обрабатывается на более высоком уровне.
См. Как Emacs выбирает основной режим.