Modify at-full' and de-bruijn' overlays to color depth

* avy.el (avy-lead-face-2): New face.
(avy-lead-faces): New defconst. Each element will be used to color the
corresponding depth.
(avy--overlay-at-full): Use `avy-lead-faces' to represent the current
decision depth. For `de-bruijn', prepend the old stuff, so that nothing
moves.

Fixes #53
This commit is contained in:
Oleh Krehel 2015-06-03 18:19:00 +02:00
parent 6dfa445e07
commit 02bf35b6a0

24
avy.el
View File

@ -142,6 +142,10 @@ Typically, these modes don't use the text representation.")
'((t (:foreground "white" :background "gray")))
"Face used for matched leading chars.")
(defface avy-lead-face-2
'((t (:foreground "white" :background "#f86bf3")))
"Face used for leading chars.")
(defface avy-lead-face
'((t (:foreground "white" :background "#e52b50")))
"Face used for the leading chars.")
@ -150,6 +154,14 @@ Typically, these modes don't use the text representation.")
'((t (:foreground "gray40")))
"Face for whole window background during selection.")
(defconst avy-lead-faces '(avy-lead-face
avy-lead-face-0
avy-lead-face-2
avy-lead-face
avy-lead-face-0
avy-lead-face-2)
"Face sequence for `avy--overlay-at-full'.")
;;* Internals
;;** Tree
(defmacro avy-multipop (lst n)
@ -566,8 +578,16 @@ LEAF is normally ((BEG . END) . WND)."
(car leaf)))
(wnd (cdr leaf))
oov)
(when (or avy-highlight-first (> (length str) 1))
(set-text-properties 0 1 '(face avy-lead-face-0) str))
(dotimes (i len)
(set-text-properties (- len i 1) (- len i)
`(face ,(nth i avy-lead-faces))
str))
(when (eq avy-style 'de-bruijn)
(setq str (concat
(propertize avy-current-path
'face 'avy-lead-face-1)
str))
(setq len (length str)))
(with-selected-window wnd
(save-excursion
(goto-char beg)