From dd3afe747ecf51f87d33318c2ad68953d153495f Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Mon, 23 May 2022 20:12:53 -0500 Subject: meh --- lisp/+avy.el | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'lisp/+avy.el') 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 @@ (cdr (ring-ref avy-ring 0)))) t) + +;;; Remove `buffer-face-mode' when avy is active. + +(defcustom +avy-buffer-face-functions '(avy-goto-char + avy-goto-char-in-line + avy-goto-char-2 + avy-goto-char-2-above + avy-goto-char-2-below + avy-goto-word-0 + avy-goto-whitespace-end + avy-goto-word-0-above + avy-goto-word-0-below + avy-goto-whitespace-end-above + avy-goto-whitespace-end-below + avy-goto-word-1 + avy-goto-word-1-above + avy-goto-word-1-below + avy-goto-symbol-1 + avy-goto-symbol-1-above + avy-goto-symbol-1-below + avy-goto-subword-0 + avy-goto-subword-1 + avy-goto-word-or-subword-1 + avy-goto-line + avy-goto-line-above + avy-goto-line-below + avy-goto-end-of-line + avy-goto-char-timer) + "Functions to disable `buffer-face-mode' during.") + +(defvar-local +avy-buffer-face-mode-face nil + "The state of `buffer-face-mode' before calling `avy-with'.") + +(defun +avy@un-buffer-face (&rest _) + "BEFORE advice on `avy-with' to disable `buffer-face-mode'." + (when buffer-face-mode + (setq +avy-buffer-face-mode-face buffer-face-mode-face) + (buffer-face-mode -1))) + +(defun +avy@re-buffer-face (&rest _) + "AFTER advice on `avy-with' to re-enable `buffer-face-mode'." + (when +avy-buffer-face-mode-face + (setq buffer-face-mode-face +avy-buffer-face-mode-face) + (buffer-face-mode +1))) + +(define-minor-mode +avy-buffer-face-local-mode + "Turn off `buffer-face-mode' before doing Avy selections. +Restore the mode after the selection." + :lighter "" + :global t + (setq +avy-buffer-face-mode-face nil) + (cond + (+avy-buffer-face-mode + (dolist (fn +avy-buffer-face-functions) + (advice-add fn :before #'+avy@un-buffer-face)) + (advice-add 'avy--done :after #'+avy@re-buffer-face)) + (t (dolist (fn +avy-buffer-face-functions) + (advice-remove fn #'+avy@un-buffer-face)) + (advice-remove 'avy--done #'+avy@re-buffer-face)))) + (provide '+avy) ;;; avy.el ends here -- cgit 1.4.1-21-gabe81