32.19 Text Properties
Each character position in a buffer or a string can have a text property list, much like the property list of a symbol (see Property Lists). The properties belong to a particular character at a particular place, such as, the letter ‘T
’ at the beginning of this sentence or the first ‘o
’ in ‘foo
’—if the same character occurs in two different places, the two occurrences in general have different properties.
Each property has a name and a value. Both of these can be any Lisp object, but the name is normally a symbol. Typically each property name symbol is used for a particular purpose; for instance, the text property face
specifies the faces for displaying the character (see Special Properties). The usual way to access the property list is to specify a name and ask what value corresponds to it.
If a character has a category
property, we call it the property category of the character. It should be a symbol. The properties of the symbol serve as defaults for the properties of the character.
Copying text between strings and buffers preserves the properties along with the characters; this includes such diverse functions as substring
, insert
, and buffer-substring
.
• Examining Properties | Looking at the properties of one character. | |
• Changing Properties | Setting the properties of a range of text. | |
• Property Search | Searching for where a property changes value. | |
• Special Properties | Particular properties with special meanings. | |
• Format Properties | Properties for representing formatting of text. | |
• Sticky Properties | How inserted text gets properties from neighboring text. | |
• Lazy Properties | Computing text properties in a lazy fashion only when text is examined. | |
• Clickable Text | Using text properties to make regions of text do something when you click on them. | |
• Fields | The field property defines fields within the buffer. | |
• Not Intervals | Why text properties do not use Lisp-visible text intervals. |