emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/htmlize 726c77b 120/134: Correctly sort overlays in Emacs


From: ELPA Syncer
Subject: [nongnu] elpa/htmlize 726c77b 120/134: Correctly sort overlays in Emacs 24.
Date: Sat, 7 Aug 2021 09:17:19 -0400 (EDT)

branch: elpa/htmlize
commit 726c77b909f825b27e734a5460e3e2b63cfc60b0
Author: Hrvoje Niksic <hniksic@gmail.com>
Commit: Hrvoje Niksic <hniksic@gmail.com>

    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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]