branch: elpa/htmlize
commit 726c77b909f825b27e734a5460e3e2b63cfc60b0
Author: Hrvoje Niksic <[email protected]>
Commit: Hrvoje Niksic <[email protected]>
Correctly sort overlays in Emacs 24.
---
htmlize.el | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/htmlize.el b/htmlize.el
index 9bcf38b..6cbe110 100644
--- a/htmlize.el
+++ b/htmlize.el
@@ -1275,6 +1275,23 @@ overlays that specify `face'."
faces :test 'equal))))
faces))
+(if (>= emacs-major-version 25)
+ (defun htmlize-sorted-overlays-at (pos)
+ (overlays-at pos t))
+
+ (defun htmlize-sorted-overlays-at (pos)
+ ;; Like OVERLAYS-AT with the SORTED argument, for older Emacsen.
+ (let ((overlays (sort* overlays #'<
+ :key (lambda (o)
+ (- (overlay-end o) (overlay-start o))))))
+ (setq overlays
+ (stable-sort overlays #'<
+ :key (lambda (o)
+ (let ((prio (overlay-get o 'priority)))
+ (if (numberp prio) prio 0)))))
+ (nreverse overlays))))
+
+
;; htmlize-faces-at-point returns the faces in use at point. The
;; faces are sorted by increasing priority, i.e. the last face takes
;; precedence.
@@ -1294,10 +1311,7 @@ overlays that specify `face'."
;; Collect overlays at point that specify `face'.
(delete-if-not (lambda (o)
(overlay-get o 'face))
- (nreverse
- (if (>= emacs-major-version 25)
- (overlays-at (point) t)
- (overlays-at (point))))))
+ (nreverse (htmlize-sorted-overlays-at (point)))))
list face-prop)
(dolist (overlay overlays)
(setq face-prop (overlay-get overlay 'face)