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)