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

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

[nongnu] elpa/evil-goggles 661e9b17ac 006/225: Enable/disable all regist


From: ELPA Syncer
Subject: [nongnu] elpa/evil-goggles 661e9b17ac 006/225: Enable/disable all registered advices by (evil-goggles-mode)
Date: Wed, 12 Jan 2022 08:58:35 -0500 (EST)

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

    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

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