Function: overlay-put

overlay-put is a function defined in buffer.c.

Signature

(overlay-put OVERLAY PROP VALUE)

Documentation

Set one property of overlay OVERLAY: give property PROP value VALUE.

VALUE will be returned.

Other relevant functions are documented in the overlay group.

View in manual

Probably introduced at or before Emacs version 20.1.

Shortdoc

;; overlay
(overlay-put foo 'happy t)
    e.g. => t

Aliases

speedbar-overlay-put (obsolete since 27.1) semantic-overlay-put (obsolete since 27.1) viper-overlay-put (obsolete since 27.1) reftex-overlay-put (obsolete since 28.1)

Source Code

// Defined in /usr/src/emacs/src/buffer.c
{
  Lisp_Object tail;
  struct buffer *b;
  bool changed;

  CHECK_OVERLAY (overlay);

  b = OVERLAY_BUFFER (overlay);

  for (tail = XOVERLAY (overlay)->plist;
       CONSP (tail) && CONSP (XCDR (tail));
       tail = XCDR (XCDR (tail)))
    if (EQ (XCAR (tail), prop))
      {
	changed = !EQ (XCAR (XCDR (tail)), value);
	XSETCAR (XCDR (tail), value);
	goto found;
      }
  /* It wasn't in the list, so add it to the front.  */
  changed = !NILP (value);
  set_overlay_plist
    (overlay, Fcons (prop, Fcons (value, XOVERLAY (overlay)->plist)));
 found:
  if (b)
    {
      if (changed)
	modify_overlay (b, OVERLAY_START (overlay),
                        OVERLAY_END (overlay));
      if (EQ (prop, Qevaporate) && ! NILP (value)
	  && (OVERLAY_START (overlay)
              == OVERLAY_END (overlay)))
	Fdelete_overlay (overlay);
    }

  return value;
}