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

    Enable/disable all registered advices by (evil-goggles-mode)
---
 evil-goggles.el | 43 +++++++++++++++++++++++++++++--------------
 1 file changed, 29 insertions(+), 14 deletions(-)

diff --git a/evil-goggles.el b/evil-goggles.el
index 77955c2cb4..f9137b0e10 100644
--- a/evil-goggles.el
+++ b/evil-goggles.el
@@ -55,7 +55,7 @@
 (defun evil-goggles--evil-delete-advice (orig-fun &rest args)
   (let ((beg (nth 0 args))
         (end (nth 1 args)))
-    (evil-goggles--generic-advice beg end orig-fun args 'diff-removed)))
+    (evil-goggles--generic-advice beg end orig-fun args 'region)))
 
 (defun evil-goggles--evil-indent-advice (orig-fun &rest args)
   (let ((beg (nth 0 args))
@@ -65,30 +65,45 @@
 (defun evil-goggles--evil-yank-advice (orig-fun &rest args)
   (let ((beg (nth 0 args))
         (end (nth 1 args)))
-    (evil-goggles--generic-advice beg end orig-fun args 'diff-added)))
+    (evil-goggles--generic-advice beg end orig-fun args 'region)))
+
+(define-minor-mode evil-goggles-mode
+  "evil-goggles global minor mode."
+  :lighter " (⌐■-■)"
+  :global t
+  (cond
+   (evil-goggles-mode
+    (evil-goggles--advice-add-all))
+   (t
+    (evil-goggles--advice-remove-all)
+    )))
 
 (defvar evil-goggles--hooks (make-hash-table))
 
 (defun evil-goggles--advice-add (fun advice-fun)
   (when evil-goggles-mode
+    ;; clear any old advice
+    (let ((old-advice-fun (gethash fun evil-goggles--hooks)))
+      (when old-advice-fun
+        (message "Replacing advice of %s" fun)
+        (advice-remove fun old-advice-fun)))
+
+    ;; add the new advice
     (advice-add fun :around advice-fun))
+
+  ;; store the advice so it can be enabled/disabled by the mode
   (puthash fun advice-fun evil-goggles--hooks))
 
+(defun evil-goggles--advice-add-all ()
+  (maphash (lambda (advised-fun advice-fun) (advice-add advised-fun :around 
advice-fun)) evil-goggles--hooks))
+
+(evil-goggles--advice-add 'evil-delete 'evil-goggles--evil-delete-advice)
+(evil-goggles--advice-add 'evil-indent 'evil-goggles--evil-indent-advice)
+(evil-goggles--advice-add 'evil-yank   'evil-goggles--evil-yank-advice)
+
 (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
-    (evil-goggles--advice-add 'evil-delete 'evil-goggles--evil-delete-advice)
-    (evil-goggles--advice-add 'evil-indent 'evil-goggles--evil-indent-advice)
-    (evil-goggles--advice-add 'evil-yank   'evil-goggles--evil-yank-advice))
-   (t
-    (evil-goggles--advice-remove-all)
-    )))
 
 (provide 'evil-goggles)
 

Reply via email to