diff options
Diffstat (limited to 'lisp/+avy.el')
-rw-r--r-- | lisp/+avy.el | 60 |
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. | ||
67 | Restore 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 |