Изучение свойств текста
Самый простой способ изучения свойств текста — запросить значение определенного свойства определенного символа. Для этого используйте 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