summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buffer.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 9e27460fb44..d56ddad7aca 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1591,6 +1591,51 @@ DEFUN ("delete-overlay", Fdelete_overlay, Sdelete_overlay, 1, 1, 0,
return Qnil;
}
+/* Overlay dissection functions. */
+
+DEFUN ("overlay-start", Foverlay_start, Soverlay_start, 1, 1, 0,
+ "Return the position at which OVERLAY starts.")
+ (overlay)
+ Lisp_Object overlay;
+{
+ CHECK_OVERLAY (overlay, 0);
+
+ return (Fmarker_position (OVERLAY_START (overlay)));
+}
+
+DEFUN ("overlay-end", Foverlay_end, Soverlay_end, 1, 1, 0,
+ "Return the position at which OVERLAY ends.")
+ (overlay)
+ Lisp_Object overlay;
+{
+ CHECK_OVERLAY (overlay, 0);
+
+ return (Fmarker_position (OVERLAY_END (overlay)));
+}
+
+DEFUN ("overlay-buffer", Foverlay_buffer, Soverlay_buffer, 1, 1, 0,
+ "Return the buffer OVERLAY belongs to.")
+ (overlay)
+ Lisp_Object overlay;
+{
+ CHECK_OVERLAY (overlay, 0);
+
+ return Fmarker_buffer (OVERLAY_START (overlay));
+}
+
+DEFUN ("overlay-properties", Foverlay_properties, Soverlay_properties, 1, 1, 0,
+ "Return a list of the properties on OVERLAY.\n\
+This is a copy of OVERLAY's plist; modifying its conses has no effect on\n\
+OVERLAY.")
+ (overlay)
+ Lisp_Object overlay;
+{
+ CHECK_OVERLAY (overlay, 0);
+
+ return Fcopy_sequence (Fcdr_safe (XCONS (overlay)->cdr));
+}
+
+
DEFUN ("overlays-at", Foverlays_at, Soverlays_at, 1, 1, 0,
"Return a list of the overays that contain position POS.")
(pos)
@@ -2246,6 +2291,10 @@ Automatically local in all buffers.");
defsubr (&Smake_overlay);
defsubr (&Sdelete_overlay);
defsubr (&Smove_overlay);
+ defsubr (&Soverlay_start);
+ defsubr (&Soverlay_end);
+ defsubr (&Soverlay_buffer);
+ defsubr (&Soverlay_properties);
defsubr (&Soverlays_at);
defsubr (&Snext_overlay_change);
defsubr (&Soverlay_recenter);