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.

Probably introduced at or before Emacs version 20.1.

Shortdoc

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

Aliases

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

Source Code

// Defined in /usr/src/emacs/src/buffer.c
{
  Lisp_Object tail, buffer;
  bool changed;

  CHECK_OVERLAY (overlay);

  buffer = Fmarker_buffer (OVERLAY_START (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 (! NILP (buffer))
    {
      if (changed)
	modify_overlay (XBUFFER (buffer),
			marker_position (OVERLAY_START (overlay)),
			marker_position (OVERLAY_END   (overlay)));
      if (EQ (prop, Qevaporate) && ! NILP (value)
	  && (OVERLAY_POSITION (OVERLAY_START (overlay))
	      == OVERLAY_POSITION (OVERLAY_END (overlay))))
	Fdelete_overlay (overlay);
    }

  return value;
}