summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1997-08-13 19:39:39 +0000
committerRichard M. Stallman <rms@gnu.org>1997-08-13 19:39:39 +0000
commitc9411d2f035ff9aa297aa53f8abf5337186e9a57 (patch)
treeb6c9f177b38f9cf7fc11c16c2f82be8da14895f9 /lisp/emacs-lisp
parent2f939ddd09db4442128d95e094b0d556788fb8bb (diff)
downloademacs-c9411d2f035ff9aa297aa53f8abf5337186e9a57.tar.gz
emacs-c9411d2f035ff9aa297aa53f8abf5337186e9a57.tar.bz2
emacs-c9411d2f035ff9aa297aa53f8abf5337186e9a57.zip
(extent-properties, extent-at): New functions.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/lucid.el25
1 files changed, 25 insertions, 0 deletions
diff --git a/lisp/emacs-lisp/lucid.el b/lisp/emacs-lisp/lucid.el
index e7dc74e4d4b..80c5973046c 100644
--- a/lisp/emacs-lisp/lucid.el
+++ b/lisp/emacs-lisp/lucid.el
@@ -141,6 +141,31 @@ bottom of the buffer stack."
(defun make-extent (beg end &optional buffer)
(make-overlay beg end buffer))
+(defun extent-properties (extent)
+ (overlay-properties extent))
+
+(defun extent-at (pos &optional object property before)
+ (with-current-buffer (or object (current-buffer))
+ (let ((overlays (overlays-at pos)))
+ (when property
+ (let (filtered)
+ (while overlays
+ (if (overlay-get (car overlays) property)
+ (setq filtered (cons (car overlays) filtered)))
+ (setq overlays (cdr overlays)))
+ (setq overlays filtered)))
+ (setq overlays
+ (sort overlays
+ (function (lambda (o1 o2)
+ (let ((p1 (or (overlay-get o1 'priority) 0))
+ (p2 (or (overlay-get o2 'priority) 0)))
+ (or (> p1 p2)
+ (and (= p1 p2)
+ (> (overlay-start o1) (overlay-start o2)))))))))
+ (if before
+ (nth 1 (memq before overlays))
+ (car overlays)))))
+
(defun set-extent-property (extent prop value)
;; Make sure that separate adjacent extents
;; with the same mouse-face value