diff lisp/extents.el @ 442:abe6d1db359e r21-2-36

Import from CVS: tag r21-2-36
author cvs
date Mon, 13 Aug 2007 11:35:02 +0200
parents 3ecd8885ac67
children 0d43872986b6
line wrap: on
line diff
--- a/lisp/extents.el	Mon Aug 13 11:33:40 2007 +0200
+++ b/lisp/extents.el	Mon Aug 13 11:35:02 2007 +0200
@@ -1,6 +1,7 @@
 ;;; extents.el --- miscellaneous extent functions not written in C
 
 ;; Copyright (C) 1993-4, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 2000 Ben Wing.
 
 ;; Keywords: internal, dumped
 
@@ -25,7 +26,10 @@
 
 ;;; Commentary:
 
-;; some help from stig@hackvan.com here.
+;;; Authorship:
+
+;; Created 1995 Ben Wing.
+;; mapcar-extents (and extent-list?) from stig@hackvan.com, c. 1996.
 
 ;;; Code:
 
@@ -53,7 +57,7 @@
                  buffer-or-string from to nil flags property value)
     (nreverse *result*)))
 
-(defun extent-list (&optional buffer-or-string from to flags)
+(defun extent-list (&optional buffer-or-string from to flags property value)
   "Return a list of the extents in BUFFER-OR-STRING.
 BUFFER-OR-STRING defaults to the current buffer if omitted.
 FROM and TO can be used to limit the range over which extents are
@@ -65,11 +69,28 @@
 end of BUFFER-OR-STRING, respectively.
 
 FLAGS controls how end cases are treated.  For a discussion of this,
-and exactly what ``overlap'' means, see `map-extents'.
+and exactly what ``overlap'' means, see `map-extents'.  PROPERTY and VALUE
+are also as in `map-extents'.
 
 If you want to map a function over the extents in a buffer or string,
-consider using `map-extents' or `mapcar-extents' instead."
-  (mapcar-extents 'identity nil buffer-or-string from to flags))
+consider using `map-extents' or `mapcar-extents' instead.
+
+See also `extents-at'."
+  (mapcar-extents 'identity nil buffer-or-string from to flags property value))
+
+(defun extent-at-event (event &optional property before at-flag)
+  "Return the smallest extent under EVENT, if any.
+PROPERTY, BEFORE, and AT-FLAG are as in `extent-at'."
+  (let* ((win (event-window event))
+	 (p (event-point event)))
+    (and win p (extent-at p (window-buffer win) property before at-flag))))
+
+(defun extents-at-event (event &optional property before at-flag)
+  "Return a list of all extents under EVENT.
+PROPERTY, BEFORE, and AT-FLAG are as in `extent-at'."
+  (let* ((win (event-window event))
+	 (p (event-point event)))
+    (and win p (extents-at p (window-buffer win) property before at-flag))))
 
 (defun extent-string (extent)
   "Return the string delimited by the bounds of EXTENT."