2.4.8.4 Свойства текста в строках

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

#("characters" property-data...)

где property-data состоит из одного или более элементов, сгруппированных по три следующим образом:

beg end plist

Элементы beg и end являются целыми числами и вместе определяют диапазон индексов в строке; plist — это список свойств для этого диапазона. Например,

#("foo bar" 0 3 (face bold) 3 4 nil 4 7 (face italic))

представляет строку, текстовое содержимое которой — «foo bar», в которой первые три символа имеют свойство face со значением bold, а последние три имеют свойство face со значением italic. (Четвертый символ не имеет текстовых свойств, поэтому его список свойств равен nil. Фактически не обязательно упоминать диапазоны с nil в качестве списка свойств, поскольку любые символы, не упомянутые в каком-либо диапазоне, по умолчанию считаются не имеющими свойств.)

>