Spec-Zone.ru › Elisp

Косвенные буферы

Косвенный буфер разделяет текст с некоторым другим буфером, который называется базовым буфером косвенного буфера. В некотором смысле это аналог символической ссылки между файлами для буферов. Базовый буфер сам по себе не может быть косвенным буфером.

Текст косвенного буфера всегда идентичен тексту его базового буфера; изменения, внесённые при редактировании любого из них, немедленно видны в другом. Это включает свойства текста, а также сами символы.

Во всех остальных отношениях косвенный буфер и его базовый буфер полностью независимы. У них разные имена, независимые значения точки, независимое сужение, независимые маркеры и наложения (хотя вставка или удаление текста в любом буфере перемещает маркеры и наложения для обоих), независимые основные режимы и независимые привязки переменных, относящихся к буферу.

Косвенный буфер не может посетить файл, но его базовый буфер может. Если вы попытаетесь сохранить косвенный буфер, это фактически сохранит базовый буфер.

Уничтожение косвенного буфера не влияет на его базовый буфер. Уничтожение базового буфера фактически уничтожает косвенный буфер, так как он больше никогда не может быть текущим буфером.

Команда: make-indirect-buffer имя-базового-буфера &опциональный clone inhibit-buffer-hooks

Это создаёт и возвращает косвенный буфер с именем name, базовый буфер которого — base-buffer. Аргумент base-buffer может быть активным буфером или именем (строкой) существующего буфера. Если name — имя существующего буфера, генерируется ошибка.

Если clone не nil, то косвенный буфер изначально разделяет состояние base-buffer, такое как основной режим, вспомогательные режимы, переменные, относящиеся к буферу, и так далее. Если clone опущено или nil, состояние косвенного буфера устанавливается в стандартное состояние для новых буферов.

Если base-buffer является косвенным буфером, его базовый буфер используется в качестве основы для нового буфера. Если, кроме того, clone не nil, начальное состояние копируется из фактического базового буфера, а не из base-buffer.

См. Создание буферов для значения inhibit-buffer-hooks.

Команда: clone-indirect-buffer newname display-flag &опциональный norecord

Эта функция создаёт и возвращает новый косвенный буфер, который разделяет базовый буфер текущего буфера и копирует остальные атрибуты текущего буфера. (Если текущий буфер не косвенный, он используется в качестве базового буфера.)

Если display-flag не nil, как это всегда происходит при интерактивном вызове, это означает отображение нового буфера с помощью вызова pop-to-buffer. Если norecord не nil, это означает, что новый буфер не помещается в начало списка буферов.

Функция: buffer-base-buffer &опциональный buffer

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

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/Indirect-Buffers.html

Spec-Zone.ru

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