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

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

[elpa] master be74714 34/36: avy.el (avy--overlay-at-full): Work-around


From: Oleh Krehel
Subject: [elpa] master be74714 34/36: avy.el (avy--overlay-at-full): Work-around 20607
Date: Tue, 19 May 2015 12:38:20 +0000

branch: master
commit be74714fd465383f5fcdf0f1951413c201e6628d
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>

    avy.el (avy--overlay-at-full): Work-around 20607
    
    * avy.el (avy--overlay-at-full): There's a problem when there are two
      overlays at the same point in the same buffer, but in different
      windows, *only if* they are of different length. Make them the same
      length to work-around this bug.
    
    See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20607
    
    Fixes #47
---
 avy.el |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/avy.el b/avy.el
index da5f537..423d5d2 100644
--- a/avy.el
+++ b/avy.el
@@ -466,6 +466,21 @@ LEAF is normally ((BEG . END) . WND)."
                                                  (line-end-position))))
           (setq str (substring str 0 1))
           (setq len 1))
+        (let ((other-ov (cl-find-if
+                         (lambda (o)
+                           (and (eq (overlay-get o 'category) 'avy)
+                                (eq (overlay-start o) beg)
+                                (not (eq (overlay-get o 'window) wnd))))
+                         (overlays-in (point) (min (+ (point) len)
+                                                   (line-end-position))))))
+          (when (and other-ov
+                     (> (overlay-end other-ov)
+                        (+ beg len)))
+            (setq str (concat str (buffer-substring
+                                   (+ beg len)
+                                   (overlay-end other-ov))))
+            (setq len (- (overlay-end other-ov)
+                         beg))))
         (let* ((end (if (= beg (line-end-position))
                         (1+ beg)
                       (min (+ beg



reply via email to

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