emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/evil-goggles 01b23de219 004/225: Remove all advices on mod


From: ELPA Syncer
Subject: [nongnu] elpa/evil-goggles 01b23de219 004/225: Remove all advices on mode disable
Date: Wed, 12 Jan 2022 08:58:34 -0500 (EST)

branch: elpa/evil-goggles
commit 01b23de219d72a165d2bf168b425c2eae6f9db17
Author: Evgeni Kolev <evgenysw@gmail.com>
Commit: Evgeni Kolev <evgenysw@gmail.com>

    Remove all advices on mode disable
---
 evil-goggles.el | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/evil-goggles.el b/evil-goggles.el
index 0b2ed77a13..c339b3dcb5 100644
--- a/evil-goggles.el
+++ b/evil-goggles.el
@@ -62,17 +62,26 @@
         (end (nth 1 args)))
     (evil-goggles--generic-advice beg end orig-fun args 'region)))
 
+(defvar evil-goggles--hooks (make-hash-table))
+
+(defun evil-goggles--advice-add (fun advice-fun)
+  (when evil-goggles-mode
+    (advice-add fun :around advice-fun))
+  (puthash fun advice-fun evil-goggles--hooks))
+
+(defun evil-goggles--advice-remove-all ()
+  (maphash (lambda (advised-fun advice-fun) (advice-remove advised-fun 
advice-fun)) evil-goggles--hooks))
+
 (define-minor-mode evil-goggles-mode
   "evil-goggles global minor mode."
   :lighter " (⌐■-■)"
   :global t
   (cond
    (evil-goggles-mode
-    (advice-add 'evil-delete :around 'evil-goggles--evil-delete-advice)
-    (advice-add 'evil-indent :around 'evil-goggles--evil-indent-advice))
+    (evil-goggles--advice-add 'evil-delete 'evil-goggles--evil-delete-advice)
+    (evil-goggles--advice-add 'evil-indent 'evil-goggles--evil-indent-advice)
    (t
-    (advice-remove 'evil-delete 'evil-goggles--evil-delete-advice)
-    (advice-remove 'evil-indent 'evil-goggles--evil-indent-advice)
+    (evil-goggles--advice-remove-all)
     )))
 
 (provide 'evil-goggles)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]