Function: next-overlay-change
next-overlay-change is a function defined in buffer.c.
Signature
(next-overlay-change POS)
Documentation
Return the next position after POS where an overlay starts or ends.
If there are no overlay boundaries from POS to (point-max), the value is (point-max).
Other relevant functions are documented in the overlay group.
Probably introduced at or before Emacs version 19.29.
Shortdoc
;; overlay
(next-overlay-change 1)
e.g. => 20
Aliases
semantic-overlay-next-change (obsolete since 27.1)
Source Code
// Defined in /usr/src/emacs/src/buffer.c
{
ptrdiff_t i, len, noverlays;
ptrdiff_t endpos;
Lisp_Object *overlay_vec;
CHECK_FIXNUM_COERCE_MARKER (pos);
if (!buffer_has_overlays ())
return make_fixnum (ZV);
len = 10;
overlay_vec = xmalloc (len * sizeof *overlay_vec);
/* Put all the overlays we want in a vector in overlay_vec.
Store the length in len.
endpos gets the position where the next overlay starts. */
noverlays = overlays_at (XFIXNUM (pos), 1, &overlay_vec, &len,
&endpos, 0, 1);
/* If any of these overlays ends before endpos,
use its ending point instead. */
for (i = 0; i < noverlays; i++)
{
Lisp_Object oend;
ptrdiff_t oendpos;
oend = OVERLAY_END (overlay_vec[i]);
oendpos = OVERLAY_POSITION (oend);
if (oendpos < endpos)
endpos = oendpos;
}
xfree (overlay_vec);
return make_fixnum (endpos);
}