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)