branch: elpa/evil-goggles
commit 01b23de219d72a165d2bf168b425c2eae6f9db17
Author: Evgeni Kolev <[email protected]>
Commit: Evgeni Kolev <[email protected]>

    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