[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.")))
- [nongnu] elpa/evil-goggles d4b0ea224d 169/225: Add tests covering the decision whether to pulse or not, (continued)
- [nongnu] elpa/evil-goggles d4b0ea224d 169/225: Add tests covering the decision whether to pulse or not, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles b620c7512c 170/225: Update README, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 2670fdf664 172/225: Revert `evaporate` overlay property, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 6d3247db6c 173/225: Enable pulsing by default on graphical displays, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles e2cccdf0c0 174/225: Tweak Makefile, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles a1a62d2b56 175/225: Fix failing CI by using latest evil-tests.el, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 1fd103dc13 177/225: evil-goggles--show-p: allow the "whitespace-only" check to be skipped, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles aad4b44727 181/225: evil-goggles--show-hint: fix value of evil-goggles--force-block, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles deab4966d7 183/225: README: reverse NEWS, newest on top, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles a7340dbb49 185/225: Run travis tests on Emacs 25.3, set `load-prefer-newer` to t in tests, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 89fcaebb6e 187/225: Add hint for `c`, `C` and `S` actions #18,
ELPA Syncer <=
- [nongnu] elpa/evil-goggles 57f45c2582 189/225: Temporarily disable change hint until #19 is resolved, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles c0afde5d66 202/225: Remove depracated variable, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 2e5452b6a5 216/225: Revert "evil-goggles--show-p: no need to check evil-inhibit-operator-value", ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 78454a7e8b 220/225: Merge pull request #24 from unhammer/count-lines-speedup, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 1f8ca71acd 221/225: Fix custom variable's label, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles fa7dca4f82 016/225: Cleanup delete advice, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 0afe8cf165 020/225: Fix no-whitespace check, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 55ecf5c2c4 045/225: Update README.md, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 450e153a2d 046/225: Depend on emacs 25 for `funcall-interactively', ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 99d3416598 049/225: Update README.md, ELPA Syncer, 2022/01/12