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

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

[elpa] master 2d07a49 50/78: Make avy--overlay-at use avy--overlay


From: Oleh Krehel
Subject: [elpa] master 2d07a49 50/78: Make avy--overlay-at use avy--overlay
Date: Sat, 23 Jan 2016 14:00:09 +0000

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

    Make avy--overlay-at use avy--overlay
    
    * avy.el (avy--overlay): Add optional COMPOSE-FN argument.
    (avy--overlay-at): Use `avy--overlay'.
---
 avy.el |   35 +++++++++++++++++++----------------
 1 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/avy.el b/avy.el
index 61dac3a..c321482 100644
--- a/avy.el
+++ b/avy.el
@@ -621,8 +621,9 @@ When GROUP is non-nil, (BEG . END) should delimit that 
regex group."
         (propertize old-str 'face 'avy-background-face)
       old-str)))
 
-(defun avy--overlay (str pt wnd)
-  "Create an overlay with STR at PT in WND."
+(defun avy--overlay (str pt wnd &optional compose-fn)
+  "Create an overlay with STR at PT in WND.
+COMPOSE-FN is a lambda that concatenates the old string at PT with STR."
   (when (<= (1+ pt) (with-selected-window wnd (point-max)))
     (let* ((pt (+ pt avy--overlay-offset))
            (ol (make-overlay pt (1+ pt) (window-buffer wnd)))
@@ -634,7 +635,9 @@ When GROUP is non-nil, (BEG . END) should delimit that 
regex group."
       (when os-wrap-prefix
         (add-text-properties 0 1 `(wrap-prefix ,os-wrap-prefix) str))
       (overlay-put ol 'window wnd)
-      (overlay-put ol 'display (concat str old-str))
+      (overlay-put ol 'display (funcall
+                                (or compose-fn #'concat)
+                                str old-str))
       (push ol avy--overlays-lead))))
 
 (defcustom avy-highlight-first nil
@@ -698,19 +701,19 @@ LEAF is normally ((BEG . END) . WND)."
   (let* ((path (mapcar #'avy--key-to-char path))
          (str (propertize
                (string (car (last path)))
-               'face 'avy-lead-face))
-         (pt (+ (avy-candidate-beg leaf) avy--overlay-offset))
-         (wnd (cdr leaf))
-         (ol (make-overlay pt (1+ pt) (window-buffer wnd)))
-         (old-str (avy--old-str pt wnd)))
-    (overlay-put ol 'window wnd)
-    (overlay-put ol 'display (if (string= old-str "\n")
-                                 (concat str "\n")
-                               ;; add padding for wide-width character
-                               (if (eq (string-width old-str) 2)
-                                   (concat str " ")
-                                 str)))
-    (push ol avy--overlays-lead)))
+               'face 'avy-lead-face)))
+    (avy--overlay
+     str
+     (avy-candidate-beg leaf)
+     (avy-candidate-wnd leaf)
+     (lambda (str old-str)
+       (cond ((string= old-str "\n")
+              (concat str "\n"))
+             ;; add padding for wide-width character
+             ((eq (string-width old-str) 2)
+              (concat str " "))
+             (t
+              str))))))
 
 (defun avy--overlay-at-full (path leaf)
   "Create an overlay with PATH at LEAF.



reply via email to

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