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

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

[nongnu] elpa/multiple-cursors b48e2b7 137/434: mc/edit-lines: Don't inc


From: ELPA Syncer
Subject: [nongnu] elpa/multiple-cursors b48e2b7 137/434: mc/edit-lines: Don't include the 'invisible' line
Date: Sat, 7 Aug 2021 09:20:12 -0400 (EDT)

branch: elpa/multiple-cursors
commit b48e2b7682d98720f4f48a30472096fdccdb402a
Author: Magnar Sveen <magnars@gmail.com>
Commit: Magnar Sveen <magnars@gmail.com>

    mc/edit-lines: Don't include the 'invisible' line
    
     - when marking a region from bottom to top there is an invisible line
       in the region if mark is at the beginning of the line.
     - don't count that line when doing mc/edit-lines
---
 features/edit-lines.feature | 12 ++++++++++++
 mc-edit-lines.el            |  9 +++++++--
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/features/edit-lines.feature b/features/edit-lines.feature
index de62c80..69c40a6 100644
--- a/features/edit-lines.feature
+++ b/features/edit-lines.feature
@@ -18,6 +18,18 @@ Feature: Switching from a multiline region to multiple 
cursors
     And I press "C-S-c C-S-c"
     Then I should have 2 cursors
 
+  Scenario: Edit lines from bottom up
+    When I insert:
+    """
+    hello
+    there
+    """
+    And I go to the front of the word "there"
+    And I set the mark
+    And I go to the front of the word "hello"
+    And I press "C-S-c C-S-c"
+    Then I should have one cursor
+
   Scenario: Edit only real lines, even in visual-line-mode
     Given I turn on visual-line-mode
     And I insert:
diff --git a/mc-edit-lines.el b/mc-edit-lines.el
index de6d343..76452cc 100644
--- a/mc-edit-lines.el
+++ b/mc-edit-lines.el
@@ -38,13 +38,18 @@ line point is on."
   (when (not (use-region-p))
     (error "Mark a set of lines first."))
   (mc/remove-fake-cursors)
-  (let* ((point-line (line-number-at-pos))
+  (let* ((col (current-column))
+         (point-line (line-number-at-pos))
          (mark-line (progn (exchange-point-and-mark) (line-number-at-pos)))
          (direction (if (< point-line mark-line) :up :down)))
     (deactivate-mark)
+    (when (and (eq direction :up) (bolp))
+      (forward-line -1)
+      (move-to-column col))
     (while (not (eq (line-number-at-pos) point-line))
       (mc/create-fake-cursor-at-point)
-      (if (eq direction :up) (forward-line -1) (forward-line 1)))
+      (if (eq direction :up) (forward-line -1) (forward-line 1))
+      (move-to-column col))
     (multiple-cursors-mode)))
 
 ;;;###autoload



reply via email to

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