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

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

[nongnu] elpa/evil-goggles 89fcaebb6e 187/225: Add hint for `c`, `C` and


From: ELPA Syncer
Subject: [nongnu] elpa/evil-goggles 89fcaebb6e 187/225: Add hint for `c`, `C` and `S` actions #18
Date: Wed, 12 Jan 2022 08:59:07 -0500 (EST)

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

    Add hint for `c`, `C` and `S` actions #18
---
 README.md                 |  6 ++++++
 evil-goggles.el           | 50 +++++++++++++++++++++++++++++++++++++++++++++++
 test/evil-goggles-test.el |  7 +++++++
 3 files changed, 63 insertions(+)

diff --git a/README.md b/README.md
index 64262c3333..2e02975494 100644
--- a/README.md
+++ b/README.md
@@ -59,6 +59,8 @@ try for example `yy`, `p`, `dd` in normal state.
 #### edit actions with hint
 
 - delete
+- change
+- substitue
 - yank
 - paste
 - indent (`=` operator)
@@ -110,6 +112,8 @@ By default, all goggles' faces inherit 
`evil-goggles-default-face`, which in tur
 evil-goggles-default-face - inherits from `region` by default
 
 evil-goggles-delete-face - this, and the others below, inherit from 
`evil-goggles-default-face`
+evil-goggles-change-face
+evil-goggles-substitute-face
 evil-goggles-indent-face
 evil-goggles-yank-face
 evil-goggles-join-face
@@ -156,6 +160,8 @@ evil-goggles-record-macro-face
 ;; list of all on/off variables, their default value is `t`:
 ;;
 ;; evil-goggles-enable-delete
+;; evil-goggles-enable-change
+;; evil-goggles-enable-substitute
 ;; evil-goggles-enable-indent
 ;; evil-goggles-enable-yank
 ;; evil-goggles-enable-join
diff --git a/evil-goggles.el b/evil-goggles.el
index 3faa193fd3..48c2b57b6c 100644
--- a/evil-goggles.el
+++ b/evil-goggles.el
@@ -360,6 +360,7 @@ DUR-DOC is the docstring for DUR-NAME."
     (user-error "Can't load package diff-mode"))
   (custom-set-faces
    '(evil-goggles-delete-face           ((t (:inherit diff-removed))))
+   '(evil-goggles-change-face           ((t (:inherit diff-removed))))
    '(evil-goggles-paste-face            ((t (:inherit diff-added))))
    '(evil-goggles-yank-face             ((t (:inherit diff-changed))))
    '(evil-goggles-undo-redo-remove-face ((t (:inherit diff-removed))))
@@ -372,6 +373,7 @@ DUR-DOC is the docstring for DUR-NAME."
     (user-error "Can't load package diff-mode"))
   (custom-set-faces
    '(evil-goggles-delete-face           ((t (:inherit diff-refine-removed))))
+   '(evil-goggles-change-face           ((t (:inherit diff-refine-removed))))
    '(evil-goggles-paste-face            ((t (:inherit diff-refine-added))))
    '(evil-goggles-yank-face             ((t (:inherit diff-refine-changed))))
    '(evil-goggles-undo-redo-remove-face ((t (:inherit diff-refine-removed))))
@@ -402,6 +404,42 @@ BEG END &OPTIONAL TYPE REGISTER YANK-HANDLER are the 
arguments of the original f
   (evil-goggles--with-blocking-hint beg end 'evil-goggles-delete-face
     (evil-goggles--funcall-preserve-interactive orig-fun beg end type register 
yank-handler)))
 
+;;; change
+
+(evil-goggles--define-switch-and-face
+    evil-goggles-enable-change "If non-nil, enable change support"
+    evil-goggles-change-face "Face for change action")
+
+(defun evil-goggles--evil-change-advice (orig-fun beg end &optional type 
register yank-handler delete-func)
+  "Around-advice for function `evil-change`.
+
+ORIG-FUN is the original function.
+BEG END TYPE REGISTER YANK-HANDLER DELETE-FUNC are the arguments of the 
original function."
+  (evil-goggles--with-blocking-hint beg end 'evil-goggles-change-face
+    (funcall orig-fun beg end type register yank-handler delete-func)))
+
+(defun evil-goggles--evil-change-line-advice (orig-fun beg end &optional type 
register yank-handler)
+  "Around-advice for function `evil-change-line`.
+
+ORIG-FUN is the original function.
+BEG END TYPE REGISTER YANK-HANDLER are the arguments of the original function."
+  (evil-goggles--with-blocking-hint beg end 'evil-goggles-change-face
+    (funcall orig-fun beg end type register yank-handler)))
+
+;;; substitute
+
+(evil-goggles--define-switch-and-face
+    evil-goggles-enable-substitute "If non-nil, enable substitute support"
+    evil-goggles-substitute-face "Face for substitute action")
+
+(defun evil-goggles--evil-change-whole-line-advice (orig-fun beg end &optional 
type register yank-handler)
+  "Around-advice for function `evil-change-whole-line`.
+
+ORIG-FUN is the original function.
+BEG END TYPE REGISTER YANK-HANDLER are the arguments of the original function."
+  (evil-goggles--with-blocking-hint beg end 'evil-goggles-substitute-face
+    (funcall orig-fun beg end type register yank-handler)))
+
 ;;; indent
 
 (evil-goggles--define-switch-and-face
@@ -770,6 +808,15 @@ COUNT BEG &OPTIONAL END TYPE REGISTER are the arguments of 
the original function
     (when evil-goggles-enable-delete
       (advice-add 'evil-delete :around 'evil-goggles--evil-delete-advice))
 
+    ;; `c' and `C' normal state keys
+    (when evil-goggles-enable-change
+      (advice-add 'evil-change :around 'evil-goggles--evil-change-advice)
+      (advice-add 'evil-change-line :around 
'evil-goggles--evil-change-line-advice))
+
+    ;; `s' and `S' normal state keys
+    (when evil-goggles-enable-substitute
+      (advice-add 'evil-change-whole-line :around 
'evil-goggles--evil-change-whole-line-advice))
+
     (when evil-goggles-enable-indent
       (advice-add 'evil-indent :around 'evil-goggles--evil-indent-advice))
 
@@ -820,6 +867,9 @@ COUNT BEG &OPTIONAL END TYPE REGISTER are the arguments of 
the original function
       (advice-add 'evil-replace-with-register :around 
'evil-goggles--evil-replace-with-register-advice)))
    (t
     (advice-remove 'evil-delete 'evil-goggles--evil-delete-advice)
+    (advice-remove 'evil-change 'evil-goggles--evil-change-advice)
+    (advice-remove 'evil-change-line 'evil-goggles--evil-change-line-advice)
+    (advice-remove 'evil-change-whole-line 
'evil-goggles--evil-change-whole-line-advice)
     (advice-remove 'evil-indent 'evil-goggles--evil-indent-advice)
     (advice-remove 'evil-yank 'evil-goggles--evil-yank-advice)
     (advice-remove 'undo-tree-undo 'evil-goggles--undo-tree-undo-advice)
diff --git a/test/evil-goggles-test.el b/test/evil-goggles-test.el
index efd65a1597..3fbf647222 100644
--- a/test/evil-goggles-test.el
+++ b/test/evil-goggles-test.el
@@ -81,3 +81,10 @@
       (should (equal
                (evil-goggles--should-blink-or-pulse 'evil-goggles--test-face)
                '(blink evil-goggles-default-face))))))
+
+(ert-deftest evil-goggles-test-substitute ()
+  (ert-info ("Test visual substitute")
+    (evil-test-buffer
+      ";; [T]his buffer is for notes."
+      ("v3lcABC" [escape])
+      ";; AB[C] buffer is for notes.")))



reply via email to

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