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