Самый простой способ просмотреть свойства текста — это запросить значение
определенного свойства определенного символа. Для этого используйте
get-text-property. Используйте text-properties-at,
чтобы получить полный список свойств символа. См. Функции поиска свойств текста,
для функций, позволяющих просмотреть свойства нескольких символов одновременно.
Эти функции работают как со строками, так и с буферами. Имейте в виду, что позиции в строке начинаются с 0, тогда как позиции в буфере начинаются с 1. Передача буфера, отличного от текущего, может быть медленной.
Эта функция возвращает значение свойства prop символа после позиции pos в object (буфере или строке). Аргумент object является необязательным и по умолчанию устанавливается в текущий буфер.
Если position находится в конце object,
значение равно nil, но обратите внимание, что сужение буфера
не влияет на это значение. То есть, если object — это буфер
или nil, и буфер сужен, а position находится
в конце суженного буфера, результат может быть не-nil.
Если свойство prop строго говоря отсутствует, но символ имеет
категорию свойства, которая является символом, то get-text-property
возвращает свойство prop этой категории.
Эта функция похожа на get-text-property, за исключением того,
что она сначала проверяет наложения, а затем свойства текста. См. Наложения.
Аргумент object может быть строкой, буфером или окном. Если это окно, то для свойств текста и наложений используется буфер, отображаемый в этом окне, но рассматриваются только наложения, активные для этого окна. Если object является буфером, то сначала рассматриваются наложения в этом буфере в порядке убывания приоритета, а затем свойства текста. Если object — это строка, рассматриваются только свойства текста, поскольку строки никогда не имеют наложений.
Эта функция похожа на get-char-property, за исключением того,
что она учитывает настройки "липкости" свойств и продвижения наложений, а не свойство
символа по (то есть, сразу после) position.
Это похоже на get-char-property, но предоставляет дополнительную
информацию о наложении, откуда взято значение свойства.
Ее значение представляет собой ячейку cons, где CAR — это
значение свойства, то же самое, которое вернул бы get-char-property
с теми же аргументами. CDR — это наложение, в котором было
найдено свойство, или nil, если оно было найдено как свойство текста
или не найдено вовсе.
Если position находится в конце object, и CAR,
и CDR значения равны nil.
Эта переменная содержит alist, который сопоставляет имена свойств списку
альтернативных имен свойств. Если символ не указывает прямое значение для свойства,
проверяются альтернативные имена свойств по порядку; используется первое не-nil
значение. Эта переменная имеет приоритет над default-text-properties,
а свойства category имеют приоритет над этой переменной.
Эта функция возвращает полный список свойств символа по
position в строке или буфере object. Если object
равен nil, по умолчанию используется текущий буфер.
Если position находится в конце object,
значение равно nil, но обратите внимание, что сужение буфера
не влияет на это значение. То есть, если object — это буфер
или nil, и буфер сужен, а position находится
в конце суженного буфера, результат может быть не-nil.
Эта переменная содержит список свойств, предоставляющий значения по
умолчанию для свойств текста. Всякий раз, когда символ не указывает значение
для свойства, ни напрямую, ни через символ категории, ни через
char-property-alias-alist, используется значение, хранящееся в
этом списке. Вот пример:
(setq default-text-properties '(foo 69)
char-property-alias-alist nil)
;; Убедитесь, что у символа 1 нет собственных свойств.
(set-text-properties 1 2 nil)
;; То, что мы получаем, когда спрашиваем, — это значение по умолчанию.
(get-text-property 1 'foo)
⇒ 69
Эта функция возвращает копию интервалов (то есть свойств текста) в object в виде списка интервалов. object должен быть строкой или буфером. Изменение структуры этого списка не меняет интервалы в объекте.
(object-intervals (propertize "foo" 'face 'bold))
⇒ ((0 3 (face bold)))
Каждый элемент в возвращаемом списке представляет один интервал. Каждый интервал состоит из трех частей: первая — начало, вторая — конец, а третья часть — само свойство текста.