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

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

[nongnu] elpa/evil a8385a3178: Allow setting selected visual area marks


From: ELPA Syncer
Subject: [nongnu] elpa/evil a8385a3178: Allow setting selected visual area marks
Date: Tue, 5 Jul 2022 05:58:26 -0400 (EDT)

branch: elpa/evil
commit a8385a3178939869f0acb7823acdcf4a40acb4f2
Author: Dmitry Antonyuk <32649457+dantonyuk@users.noreply.github.com>
Commit: Tom Dalziel <33435574+tomdl89@users.noreply.github.com>

    Allow setting selected visual area marks
    
    It's useful to set these marks (`<` and `>`) to change what the `gv`
    command selects.
    
    Fixes #1634
---
 evil-common.el |  4 ++++
 evil-tests.el  | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+)

diff --git a/evil-common.el b/evil-common.el
index 00e0d020ce..5adcdd9036 100644
--- a/evil-common.el
+++ b/evil-common.el
@@ -2009,6 +2009,10 @@ otherwise, it stays behind."
     (let ((marker (evil-get-marker char t)) alist)
       (unless (markerp marker)
         (cond
+         ((eq marker 'evil-visual-beginning)
+          (setq marker evil-visual-mark))
+         ((eq marker 'evil-visual-goto-end)
+          (setq marker evil-visual-point))
          ((and marker (symbolp marker) (boundp marker))
           (set marker (or (symbol-value marker) (make-marker)))
           (setq marker (symbol-value marker)))
diff --git a/evil-tests.el b/evil-tests.el
index f6821be676..27dd84e5eb 100644
--- a/evil-tests.el
+++ b/evil-tests.el
@@ -7189,6 +7189,61 @@ echo foxtrot\ngolf hotel"
       "alpha bravo\ncharlie delta
 <alpha bravo\ncharlie delta\n>golf hotel")))
 
+(ert-deftest evil-test-visual-redefine ()
+  "Test redefining a previous selection"
+  :tags '(evil visual)
+  (ert-info ("Redefine characterwise selection")
+    (evil-test-buffer
+      ";; <[T]his> buffer is for notes."
+      ([escape] "gv")
+      ";; <[T]his> buffer is for notes."
+      ([escape] "2lm<2wm>gv")
+      ";; Th<is buffer [i]>s for notes."))
+  (ert-info ("Redefine linewise selection")
+    (evil-test-buffer
+      :visual line
+      "<[a]lpha bravo
+>charlie delta
+echo foxtrot
+golf hotel"
+      ([escape] "gv")
+      "<[a]lpha bravo
+>charlie delta
+echo foxtrot
+golf hotel"
+      ([escape] "2jm>gv")
+      "<alpha bravo
+charlie delta
+[e]cho foxtrot
+>golf hotel"
+      ([escape] "km<gv")
+      "alpha bravo
+<charlie delta
+[e]cho foxtrot
+>golf hotel"))
+  (ert-info ("Redefine blockwise selection")
+    (evil-test-buffer
+      :visual block
+      "<alpha bravo
+charli[e]> delta
+echo foxtrot
+golf hotel"
+      ([escape] "gv")
+      "<alpha bravo
+charli[e]> delta
+echo foxtrot
+golf hotel"
+      ([escape] "2jm>gv")
+      "<alpha bravo
+charlie delta
+echo foxtrot
+golf h[o]>tel"
+      ([escape] "k0m<gv")
+      "alpha bravo
+charlie delta
+<echo foxtrot
+golf h[o]>tel")))
+
 ;;; Replace state
 
 (ert-deftest evil-test-replacement ()



reply via email to

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