Go to the first, previous, next, last section, table of contents.


Changing Text Properties

The primitives for changing properties apply to a specified range of text in a buffer or string. The function set-text-properties (see end of section) sets the entire property list of the text in that range; more often, it is useful to add, change, or delete just certain properties specified by name.

Since text properties are considered part of the contents of the buffer (or string), and can affect how a buffer looks on the screen, any change in buffer text properties mark the buffer as modified. Buffer text property changes are undoable also (see section Undo).

Function: put-text-property start end prop value &optional object
This function sets the prop property to value for the text between start and end in the string or buffer object. If object is nil, it defaults to the current buffer.

Function: add-text-properties start end props &optional object
This function adds or overrides text properties for the text between start and end in the string or buffer object. If object is nil, it defaults to the current buffer.

The argument props specifies which properties to add. It should have the form of a property list (see section Property Lists): a list whose elements include the property names followed alternately by the corresponding values.

The return value is t if the function actually changed some property's value; nil otherwise (if props is nil or its values agree with those in the text).

For example, here is how to set the comment and face properties of a range of text:

(add-text-properties start end
                     '(comment t face highlight))

Function: remove-text-properties start end props &optional object
This function deletes specified text properties from the text between start and end in the string or buffer object. If object is nil, it defaults to the current buffer.

The argument props specifies which properties to delete. It should have the form of a property list (see section Property Lists): a list whose elements are property names alternating with corresponding values. But only the names matter--the values that accompany them are ignored. For example, here's how to remove the face property.

(remove-text-properties start end '(face nil))

The return value is t if the function actually changed some property's value; nil otherwise (if props is nil or if no character in the specified text had any of those properties).

To remove all text properties from certain text, use set-text-properties and specify nil for the new property list.

Function: set-text-properties start end props &optional object
This function completely replaces the text property list for the text between start and end in the string or buffer object. If object is nil, it defaults to the current buffer.

The argument props is the new property list. It should be a list whose elements are property names alternating with corresponding values.

After set-text-properties returns, all the characters in the specified range have identical properties.

If props is nil, the effect is to get rid of all properties from the specified range of text. Here's an example:

(set-text-properties start end nil)

See also the function buffer-substring-no-properties (see section Examining Buffer Contents) which copies text from the buffer but does not copy its properties.


Go to the first, previous, next, last section, table of contents.