summary refs log tree commit diff stats
path: root/lisp/+avy.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/+avy.el')
-rw-r--r--lisp/+avy.el60
1 files changed, 60 insertions, 0 deletions
diff --git a/lisp/+avy.el b/lisp/+avy.el index 5010e95..0606405 100644 --- a/lisp/+avy.el +++ b/lisp/+avy.el
@@ -17,5 +17,65 @@
17 (cdr (ring-ref avy-ring 0)))) 17 (cdr (ring-ref avy-ring 0))))
18 t) 18 t)
19 19
20
21;;; Remove `buffer-face-mode' when avy is active.
22
23(defcustom +avy-buffer-face-functions '(avy-goto-char
24 avy-goto-char-in-line
25 avy-goto-char-2
26 avy-goto-char-2-above
27 avy-goto-char-2-below
28 avy-goto-word-0
29 avy-goto-whitespace-end
30 avy-goto-word-0-above
31 avy-goto-word-0-below
32 avy-goto-whitespace-end-above
33 avy-goto-whitespace-end-below
34 avy-goto-word-1
35 avy-goto-word-1-above
36 avy-goto-word-1-below
37 avy-goto-symbol-1
38 avy-goto-symbol-1-above
39 avy-goto-symbol-1-below
40 avy-goto-subword-0
41 avy-goto-subword-1
42 avy-goto-word-or-subword-1
43 avy-goto-line
44 avy-goto-line-above
45 avy-goto-line-below
46 avy-goto-end-of-line
47 avy-goto-char-timer)
48 "Functions to disable `buffer-face-mode' during.")
49
50(defvar-local +avy-buffer-face-mode-face nil
51 "The state of `buffer-face-mode' before calling `avy-with'.")
52
53(defun +avy@un-buffer-face (&rest _)
54 "BEFORE advice on `avy-with' to disable `buffer-face-mode'."
55 (when buffer-face-mode
56 (setq +avy-buffer-face-mode-face buffer-face-mode-face)
57 (buffer-face-mode -1)))
58
59(defun +avy@re-buffer-face (&rest _)
60 "AFTER advice on `avy-with' to re-enable `buffer-face-mode'."
61 (when +avy-buffer-face-mode-face
62 (setq buffer-face-mode-face +avy-buffer-face-mode-face)
63 (buffer-face-mode +1)))
64
65(define-minor-mode +avy-buffer-face-local-mode
66 "Turn off `buffer-face-mode' before doing Avy selections.
67Restore the mode after the selection."
68 :lighter ""
69 :global t
70 (setq +avy-buffer-face-mode-face nil)
71 (cond
72 (+avy-buffer-face-mode
73 (dolist (fn +avy-buffer-face-functions)
74 (advice-add fn :before #'+avy@un-buffer-face))
75 (advice-add 'avy--done :after #'+avy@re-buffer-face))
76 (t (dolist (fn +avy-buffer-face-functions)
77 (advice-remove fn #'+avy@un-buffer-face))
78 (advice-remove 'avy--done #'+avy@re-buffer-face))))
79
20(provide '+avy) 80(provide '+avy)
21;;; avy.el ends here 81;;; avy.el ends here