Изучение текстовых свойств
Самый простой способ изучить текстовые свойства — запросить значение определённого свойства определённого символа. Для этого используйте get-text-property. Используйте text-properties-at, чтобы получить полный список свойств символа. Функции для изучения свойств нескольких символов одновременно описаны в разделе Функции поиска текстовых свойств.
Эти функции работают как со строками, так и с буферами. Помните, что позиции в строке начинаются с 0, тогда как позиции в буфере начинаются с 1. Передача буфера, отличного от текущего, может выполняться медленно.
- Функция: get-text-property pos prop &optional object
-
Эта функция возвращает значение свойства prop символа после позиции pos в object (буфере или строке). Аргумент object необязателен и по умолчанию равен текущему буферу.
Если position находится в конце object, значением будет
nil, однако сужение буфера на это значение не влияет. То есть, если object — буфер илиnil, и буфер сужен, а position находится в конце суженного буфера, результат может быть не-nil.Если свойства 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, по умолчанию используется текущий буфер.Если position находится в конце object, значением будет
nil, однако сужение буфера на это значение не влияет. То есть, если object — буфер илиnil, и буфер сужен, а position находится в конце суженного буфера, результат может быть не-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-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Examining-Properties.html