Spec-Zone.ru › Elisp

Изучение свойств текста

Самый простой способ изучения свойств текста — запросить значение определенного свойства определенного символа. Для этого используйте get-text-property. Используйте text-properties-at для получения всего списка свойств символа. См. Поиск свойств для функций, позволяющих изучить свойства нескольких символов одновременно.

Эти функции обрабатывают как строки, так и буферы. Имейте в виду, что позиции в строке начинаются с 0, а позиции в буфере — с 1. Передача буфера, отличного от текущего, может быть медленной.

Функция: get-text-property pos prop &optional object

Эта функция возвращает значение свойства prop символа после позиции pos в object (буфер или строка). Аргумент object необязателен и по умолчанию равен текущему буферу.

Если строго говоря, свойства prop нет, но символ имеет категорию свойства, которая является символом, то get-text-property возвращает свойство prop этого символа.

Функция: get-char-property position prop &optional object

Эта функция аналогична get-text-property, за исключением того, что она сначала проверяет наложения, а затем свойства текста. См. Наложения.

Аргумент object может быть строкой, буфером или окном. Если это окно, то для свойств текста и наложений используется буфер, отображаемый в этом окне, но учитываются только наложения, активные для этого окна. Если object — это буфер, то сначала рассматриваются наложения в этом буфере в порядке убывания приоритета, за которыми следуют свойства текста. Если object — это строка, учитываются только свойства текста, так как строки никогда не имеют наложений.

Функция: get-pos-property position prop &optional object

Эта функция аналогична get-char-property, за исключением того, что она обращает внимание на прилипание свойств и настройки продвижения наложений, а не на свойство символа в (т.е., сразу после) position.

Функция: get-char-property-and-overlay position prop &optional object

Это аналогично get-char-property, но предоставляет дополнительную информацию о наложении, из которого происходит значение свойства.

Его значение — списковая ячейка, чьё CAR — это значение свойства, то же значение, которое get-char-property вернул бы с теми же аргументами. Его CDR — это наложение, в котором было найдено свойство, или nil, если оно было найдено как свойство текста или вообще не было найдено.

Если position находится в конце object, и CAR, и CDR значения равны nil.

Переменная: char-property-alias-alist

Эта переменная содержит список пар ключ-значение, который сопоставляет имена свойств списку альтернативных имён свойств. Если символ не указывает прямое значение для свойства, альтернативные имена свойств проверяются по порядку; используется первое ненулевое nil значение. Эта переменная имеет приоритет над default-text-properties, и свойства category имеют приоритет над этой переменной.

Функция: text-properties-at position &optional object

Эта функция возвращает весь список свойств символа в позиции position в строке или буфере object. Если object nil, он по умолчанию равен текущему буферу.

Переменная: default-text-properties

Эта переменная содержит список свойств, задающих значения по умолчанию для свойств текста. Всякий раз, когда символ не указывает значение для свойства, ни прямо, ни через символ категории, ни через char-property-alias-alist, используется значение, хранящееся в этом списке. Вот пример:

(setq default-text-properties '(foo 69)
      char-property-alias-alist nil)
;; Make sure character 1 has no properties of its own.
(set-text-properties 1 2 nil)
;; What we get, when we ask, is the default value.
(get-text-property 1 'foo)
     ⇒ 69
Функция: object-intervals OBJECT

Эта функция возвращает копию интервалов (т.е., свойств текста) в object в виде списка интервалов. object должен быть строкой или буфером. Изменение структуры этого списка не изменяет интервалы в объекте.

(object-intervals (propertize "foo" 'face 'bold))
     ⇒ ((0 3 (face bold)))

Каждый элемент в возвращаемом списке представляет один интервал. Каждый интервал состоит из трёх частей: первая — начало, вторая — конец, а третья — само свойство текста.

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/Examining-Properties.html

Spec-Zone.ru

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