branch: elpa/meow
commit 1e69067c1647ea634c87c021c5acf4a81152f4b2
Author: DogLooksGood <doglooksg...@gmail.com>
Commit: DogLooksGood <doglooksg...@gmail.com>

    Add shim code for diff-hl
---
 meow-shims.el | 93 ++++++++++++++++++++++++++++++++---------------------------
 1 file changed, 51 insertions(+), 42 deletions(-)

diff --git a/meow-shims.el b/meow-shims.el
index b59b1f551b..f70af67494 100644
--- a/meow-shims.el
+++ b/meow-shims.el
@@ -31,6 +31,16 @@
 (declare-function meow-motion-mode "meow")
 (declare-function meow-insert-exit "meow-command")
 
+(defun meow--switch-to-motion (&rest _ignore)
+  "Switch to motion state, used for advice.
+Optional argument IGNORE ignored."
+  (meow--switch-state 'motion))
+
+(defun meow--switch-to-normal (&rest _ignore)
+  "Switch to normal state, used for advice.
+Optional argument IGNORE ignored."
+  (meow--switch-state 'normal))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; undo-tree
 
@@ -95,22 +105,29 @@ Argument ENABLE non-nil means turn on."
       (add-hook 'meow-insert-exit-hook #'meow--company-maybe-abort-advice)
     (remove-hook 'meow-insert-exit-hook #'meow--company-maybe-abort-advice)))
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; repeat-map
+
+(defvar meow--diff-hl-setup nil
+  "Whether already setup diff-hl.")
+
+(defun meow--setup-diff-hl (enable)
+  "Setup diff-hl."
+  (if enable
+      (progn
+        (advice-add 'diff-hl-show-hunk-inline-popup :before 
'meow--switch-to-motion)
+        (advice-add 'diff-hl-show-hunk-posframe :before 
'meow--switch-to-motion)
+        (advice-add 'diff-hl-show-hunk-hide :after 'meow--switch-to-normal))
+    (advice-remove diff-hl-show-hunk-inline-popup 'meow--switch-to-motion)
+    (advice-remove diff-hl-show-hunk-posframe 'meow--switch-to-motion)
+    (advice-remove diff-hl-show-hunk-hide 'meow--switch-to-normal)))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; wgrep
 
 (defvar meow--wgrep-setup nil
   "Whether already setup wgrep.")
 
-(defun meow--wgrep-to-normal (&rest _ignore)
-  "Switch to normal state, used in advice for wgrep.
-Optional argument IGNORE ignored."
-  (meow--switch-state 'normal))
-
-(defun meow--wgrep-to-motion (&rest _ignore)
-  "Switch to motion state, used in advice for wgrep.
-Optional argument IGNORE ignored."
-  (meow--switch-state 'motion))
-
 (defun meow--setup-wgrep (enable)
   "Setup wgrep.
 
@@ -119,14 +136,14 @@ Argument ENABLE non-nil means turn on."
   (setq meow--wgrep-setup enable)
   (if enable
       (progn
-        (advice-add 'wgrep-change-to-wgrep-mode :after #'meow--wgrep-to-normal)
-        (advice-add 'wgrep-exit :after #'meow--wgrep-to-motion)
-        (advice-add 'wgrep-finish-edit :after #'meow--wgrep-to-motion)
-        (advice-add 'wgrep-save-all-buffers :after #'meow--wgrep-to-motion))
-    (advice-remove 'wgrep-change-to-wgrep-mode #'meow--wgrep-to-normal)
-    (advice-remove 'wgrep-exit #'meow--wgrep-to-motion)
-    (advice-remove 'wgrep-finish-edit #'meow--wgrep-to-motion)
-    (advice-remove 'wgrep-save-all-buffers #'meow--wgrep-to-motion)))
+        (advice-add 'wgrep-change-to-wgrep-mode :after 
#'meow--switch-to-normal)
+        (advice-add 'wgrep-exit :after #'meow--switch-to-motion)
+        (advice-add 'wgrep-finish-edit :after #'meow--switch-to-motion)
+        (advice-add 'wgrep-save-all-buffers :after #'meow--switch-to-motion))
+    (advice-remove 'wgrep-change-to-wgrep-mode #'meow--switch-to-normal)
+    (advice-remove 'wgrep-exit #'meow--switch-to-motion)
+    (advice-remove 'wgrep-finish-edit #'meow--switch-to-motion)
+    (advice-remove 'wgrep-save-all-buffers #'meow--switch-to-motion)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; wdired
@@ -140,16 +157,6 @@ Argument ENABLE non-nil means turn on."
 (declare-function wdired-finish-edit "wgrep")
 (declare-function wdired-abort-changes "wgrep")
 
-(defun meow--wdired-enter (&rest _ignore)
-  "Switch to normal state, used in hook for wdired.
-Optional argument IGNORE ignored."
-  (meow--switch-state 'normal))
-
-(defun meow--wdired-exit (&rest _ignore)
-  "Switch to motion state, used in advice for wdired.
-Optional argument IGNORE ignored."
-  (meow--switch-state 'motion))
-
 (defun meow--setup-wdired (enable)
   "Setup wdired.
 
@@ -157,14 +164,14 @@ Argument ENABLE non-nil means turn on."
   (setq meow--wdired-setup enable)
   (if enable
       (progn
-        (add-hook 'wdired-mode-hook #'meow--wdired-enter)
-        (advice-add #'wdired-exit :after #'meow--wdired-exit)
-        (advice-add #'wdired-abort-changes :after #'meow--wdired-exit)
-        (advice-add #'wdired-finish-edit :after #'meow--wdired-exit))
-    (remove-hook 'wdired-mode-hook #'meow--wdired-enter)
-    (advice-remove #'wdired-exit #'meow--wdired-exit)
-    (advice-remove #'wdired-abort-changes #'meow--wdired-exit)
-    (advice-remove #'wdired-finish-edit #'meow--wdired-exit)))
+        (add-hook 'wdired-mode-hook #'meow--switch-to-normal)
+        (advice-add #'wdired-exit :after #'meow--switch-to-motion)
+        (advice-add #'wdired-abort-changes :after #'meow--switch-to-motion)
+        (advice-add #'wdired-finish-edit :after #'meow--switch-to-motion))
+    (remove-hook 'wdired-mode-hook #'meow--switch-to-normal)
+    (advice-remove #'wdired-exit #'meow--switch-to-motion)
+    (advice-remove #'wdired-abort-changes #'meow--switch-to-motion)
+    (advice-remove #'wdired-finish-edit #'meow--switch-to-motion)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; rectangle-mark-mode
@@ -194,8 +201,8 @@ Argument ENABLE non-nil means turn on."
 (defun meow--edebug-hook-function ()
   "Switch meow state when entering/leaving edebug."
   (if (bound-and-true-p edebug-mode)
-      (meow--switch-state 'motion)
-    (meow--switch-state 'normal)))
+      (meow--switch-to-motion)
+    (meow--switch-to-normal)))
 
 (defun meow--setup-edebug (enable)
   "Setup edebug.
@@ -213,8 +220,8 @@ Argument ENABLE non-nil means turn on."
 (defun meow--cider-debug-hook-function ()
   "Switch meow state when entering/leaving cider debug."
   (if (bound-and-true-p cider--debug-mode)
-      (meow--switch-state 'motion)
-    (meow--switch-state 'normal)))
+      (meow--switch-to-motion)
+    (meow--switch-to-normal)))
 
 (defun meow--setup-cider (enable)
   "Setup cider.
@@ -284,7 +291,8 @@ Argument ENABLE non-nil means turn on."
   (eval-after-load "polymode" (lambda () (meow--setup-polymode t)))
   (eval-after-load "cider" (lambda () (meow--setup-cider t)))
   (eval-after-load "which-key" (lambda () (meow--setup-which-key t)))
-  (eval-after-load "undo-tree" (lambda () (meow--setup-undo-tree t))))
+  (eval-after-load "undo-tree" (lambda () (meow--setup-undo-tree t)))
+  (eval-after-load "diff-hl" (lambda () (meow--setup-diff-hl t))))
 
 (defun meow--disable-shims ()
   "Remove shim setups."
@@ -297,7 +305,8 @@ Argument ENABLE non-nil means turn on."
   (when meow--wgrep-setup (meow--setup-wgrep nil))
   (when meow--polymode-setup (meow--setup-polymode nil))
   (when meow--cider-setup (meow--setup-cider nil))
-  (when meow--which-key-setup (meow--setup-which-key nil)))
+  (when meow--which-key-setup (meow--setup-which-key nil))
+  (when meow--diff-hl-setup (meow--setup-diff-hl nil)))
 
 ;;; meow-shims.el ends here
 (provide 'meow-shims)

Reply via email to