Function: previous-overlay-change
previous-overlay-change is a function defined in buffer.c.
Signature
(previous-overlay-change POS)
Documentation
Return the previous position before POS where an overlay starts or ends.
If there are no overlay boundaries from (point-min) to POS, the value is (point-min).
Other relevant functions are documented in the overlay group.
Probably introduced at or before Emacs version 19.29.
Shortdoc
;; overlay
(previous-overlay-change 30)
e.g. => 20
Aliases
semantic-overlay-previous-change (obsolete since 27.1)
Source Code
// Defined in /usr/src/emacs/src/buffer.c
{
ptrdiff_t prevpos;
Lisp_Object *overlay_vec;
ptrdiff_t len;
CHECK_FIXNUM_COERCE_MARKER (pos);
if (!buffer_has_overlays ())
return make_fixnum (BEGV);
/* At beginning of buffer, we know the answer;
avoid bug subtracting 1 below. */
if (XFIXNUM (pos) == BEGV)
return pos;
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.
prevpos gets the position of the previous change. */
overlays_at (XFIXNUM (pos), 1, &overlay_vec, &len,
0, &prevpos, 1);
xfree (overlay_vec);
return make_fixnum (prevpos);
}