Function: next-single-property-change
next-single-property-change is a function defined in textprop.c.
Signature
(next-single-property-change POSITION PROP &optional OBJECT LIMIT)
Documentation
Return the position of next property change for a specific property.
Scans characters forward from POSITION till it finds
a change in the PROP property, then returns the position of the change.
If the optional third argument OBJECT is a buffer (or nil, which means
the current buffer), POSITION is a buffer position (integer or marker).
If OBJECT is a string, POSITION is a 0-based index into it.
The property values are compared with eq.
Return nil if LIMIT is nil or omitted, and the property is constant all
the way to the end of OBJECT; if the value is non-nil, it is a position
greater than POSITION, never equal.
If the optional fourth argument LIMIT is non-nil, don't search past position LIMIT; return LIMIT if nothing is found before LIMIT.
Other relevant functions are documented in the text-properties group.
Probably introduced at or before Emacs version 19.23.
Shortdoc
;; text-properties
(next-single-property-change (point) 'face (current-buffer))
Aliases
Source Code
// Defined in /usr/src/emacs/src/textprop.c
{
register INTERVAL i, next;
register Lisp_Object here_val;
if (NILP (object))
XSETBUFFER (object, current_buffer);
if (!NILP (limit))
CHECK_FIXNUM_COERCE_MARKER (limit);
i = validate_interval_range (object, &position, &position, soft);
if (!i)
return limit;
here_val = textget (i->plist, prop);
next = next_interval (i);
while (next
&& EQ (here_val, textget (next->plist, prop))
&& (NILP (limit) || next->position < XFIXNUM (limit)))
next = next_interval (next);
if (!next
|| (next->position
>= (FIXNUMP (limit)
? XFIXNUM (limit)
: (STRINGP (object)
? SCHARS (object)
: BUF_ZV (XBUFFER (object))))))
return limit;
else
return make_fixnum (next->position);
}