Spec-Zone.ru › Elisp

Выборочная визуализация

Выборочная визуализация относится к паре связанных функций для скрытия определённых строк на экране.

Первый вариант, явная выборочная визуализация, был разработан для использования в программе Lisp: он управляет скрытием строк, изменяя текст. Этот вид скрытия устарел и устаревший; вместо этого вы должны использовать свойство invisible (см. Невидимый текст), чтобы получить тот же эффект.

Во втором варианте выбор строк для скрытия выполняется автоматически на основе отступа. Этот вариант предназначен для функции на уровне пользователя.

Способ управления явной выборочной визуализацией заключается в замене новой строки (управляющий символ j) символом возврата каретки (управляющий символ m). Текст, который ранее был строкой, следующей за этой новой строкой, теперь скрыт. Строго говоря, он временно больше не является строкой, поскольку только новые строки могут разделять строки; теперь он является частью предыдущей строки.

Выборочная визуализация не влияет напрямую на команды редактирования. Например, C-f (forward-char) перемещает точку без колебаний в скрытый текст. Однако замена символов новой строки символами возврата каретки влияет на некоторые команды редактирования. Например, next-line пропускает скрытые строки, так как ищет только новые строки. Режимы, использующие выборочную визуализацию, также могут определять команды, учитывающие новые строки или управляющие частями скрытого текста.

При записи буфера с выборочной визуализацией в файл все управляющие символы m выводятся как новые строки. Это означает, что при последующем чтении файла он выглядит нормально, без скрытых элементов. Эффект выборочной визуализации виден только в Emacs.

Переменная: selective-display

Эта переменная, локальная для буфера, включает выборочную визуализацию. Это означает, что строки или части строк могут быть скрыты.

  • Если значение selective-display равно t, то символ управляющий символ m отмечает начало скрытого текста; управляющий символ m и остальная часть строки после него не отображаются. Это явная выборочная визуализация.
  • Если значение selective-display является положительным целым числом, то строки, начинающиеся с отступа более чем на это количество столбцов, не отображаются.

Когда какая-то часть буфера скрыта, команды вертикального перемещения работают так, как если бы эта часть не существовала, что позволяет одной команде next-line пропустить любое количество скрытых строк. Однако команды перемещения символов (например, forward-char) не пропускают скрытую часть, и возможно (хотя и сложно) вставить или удалить текст в скрытой части.

В примерах ниже показан вид отображения буфера foo, который меняется в зависимости от значения selective-display. Содержимое буфера не меняется.

(setq selective-display nil)
     ⇒ nil

---------- Buffer: foo ----------
1 on this column
 2on this column
  3n this column
  3n this column
 2on this column
1 on this column
---------- Buffer: foo ----------
(setq selective-display 2)
     ⇒ 2

---------- Buffer: foo ----------
1 on this column
 2on this column
 2on this column
1 on this column
---------- Buffer: foo ----------
Параметр пользователя: selective-display-ellipses

Если эта переменная, локальная для буфера, не является nil, то Emacs отображает «…» в конце строки, за которой следует скрытый текст. Этот пример является продолжением предыдущего.

(setq selective-display-ellipses t)
     ⇒ t

---------- Buffer: foo ----------
1 on this column
 2on this column ...
 2on this column
1 on this column
---------- Buffer: foo ----------

Вы можете использовать таблицу отображения для замены другого текста на многоточие («…»). См. Таблицы отображения.

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/Selective-Display.html

Spec-Zone.ru

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