branch: master
commit db4214fe0cf4cac3945d6590b879c2af44845d61
Author: Oleh Krehel <[email protected]>
Commit: Oleh Krehel <[email protected]>

    Allow to display the full path using `at-full' style
    
    * avy-jump.el (avy--overlay-at-full): New defun.
    (avy--style-fn): Update.
    (avy-goto-char-style): Update.
    (avy-goto-word-style): Update.
    
    Fixes #5
---
 avy-jump.el |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/avy-jump.el b/avy-jump.el
index 848a50d..46e1968 100644
--- a/avy-jump.el
+++ b/avy-jump.el
@@ -26,6 +26,7 @@
 
 ;;; Code:
 ;;* Requires
+(require 'cl-lib)
 (require 'avy)
 
 ;;* Customization
@@ -238,6 +239,31 @@ LEAF is normally ((BEG . END) . WND)."
                                  str))
       (push ol avy--overlays-lead))))
 
+(defun avy--overlay-at-full (path leaf)
+  "Create an overlay with PATH at LEAF.
+PATH is a list of keys from tree root to LEAF.
+LEAF is normally ((BEG . END) . WND)."
+  (let* ((str (propertize
+               (apply #'string (reverse path))
+               'face 'avy-lead-face))
+         (len (length path))
+         (pt (if (consp (car leaf))
+                 (caar leaf)
+               (car leaf)))
+         (wnd (cdr leaf)))
+    (let ((ol (make-overlay pt (+ pt len)
+                            (window-buffer wnd)))
+          (old-str (with-selected-window wnd
+                     (buffer-substring pt (1+ pt)))))
+      (when avy-background
+        (setq old-str (propertize
+                       old-str 'face 'avy-background-face)))
+      (overlay-put ol 'window wnd)
+      (overlay-put ol 'display (if (string= old-str "\n")
+                                   (concat str "\n")
+                                 str))
+      (push ol avy--overlays-lead))))
+
 (defun avy--overlay-post (path leaf)
   "Create an overlay with PATH at LEAF.
 PATH is a list of keys from tree root to LEAF.
@@ -260,6 +286,7 @@ LEAF is normally ((BEG . END) . WND)."
   (cl-case style
     (pre #'avy--overlay-pre)
     (at #'avy--overlay-at)
+    (at-full 'avy--overlay-at-full)
     (post #'avy--overlay-post)
     (t (error "Unexpected style %S" style))))
 
@@ -281,6 +308,7 @@ STYLE determines the leading char overlay style."
   :type '(choice
           (const :tag "Pre" pre)
           (const :tag "At" at)
+          (const :tag "At Full" at-full)
           (const :tag "Post" post)))
 
 (defcustom avy-goto-word-style 'pre
@@ -288,6 +316,7 @@ STYLE determines the leading char overlay style."
   :type '(choice
           (const :tag "Pre" pre)
           (const :tag "At" at)
+          (const :tag "At Full" at-full)
           (const :tag "Post" post)))
 
 ;;* Commands

Reply via email to