]> code.delx.au - gnu-emacs-elpa/commitdiff
Allow to display the full path using `at-full' style
authorOleh Krehel <ohwoeowho@gmail.com>
Sat, 9 May 2015 11:03:24 +0000 (13:03 +0200)
committerOleh Krehel <ohwoeowho@gmail.com>
Sat, 9 May 2015 11:06:52 +0000 (13:06 +0200)
* 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

index 848a50daf479f391aa659b68e73c9a03baf73f2a..46e196871b7d6baff74ef9f0911b01612c42760b 100644 (file)
@@ -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