From 5d677f765c114fdf3aafd2b37f13721166a17596 Mon Sep 17 00:00:00 2001 From: Justin Dove Date: Mon, 8 Jun 2015 09:20:46 -0400 Subject: [PATCH] Unrevert "Support unmarking with no region. Change mc/mark-lines to preserve point." This reverts commit 2588ccef6939b77896105f23642483c30c4a4e06. --- mc-mark-more.el | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/mc-mark-more.el b/mc-mark-more.el index fc8a9af..1e87521 100644 --- a/mc-mark-more.el +++ b/mc-mark-more.el @@ -127,14 +127,14 @@ Use like case-fold-search, don't recommend setting it globally.") With negative ARG, delete the last one instead. With zero ARG, skip the last one and mark next." (interactive "p") - (if (region-active-p) - (if (< arg 0) - (let ((cursor (mc/furthest-cursor-after-point))) - (if cursor - (mc/remove-fake-cursor cursor) - (error "No cursors to be unmarked"))) - (mc/mark-more-like-this (= arg 0) 'forwards)) - (mc/mark-lines arg 'forwards)) + (if (< arg 0) + (let ((cursor (mc/furthest-cursor-after-point))) + (if cursor + (mc/remove-fake-cursor cursor) + (error "No cursors to be unmarked"))) + (if (region-active-p) + (mc/mark-more-like-this (= arg 0) 'forwards) + (mc/mark-lines arg 'forwards))) (mc/maybe-multiple-cursors-mode)) ;;;###autoload @@ -155,14 +155,14 @@ With zero ARG, skip the last one and mark next." With negative ARG, delete the last one instead. With zero ARG, skip the last one and mark next." (interactive "p") - (if (region-active-p) - (if (< arg 0) - (let ((cursor (mc/furthest-cursor-before-point))) - (if cursor - (mc/remove-fake-cursor cursor) - (error "No cursors to be unmarked"))) - (mc/mark-more-like-this (= arg 0) 'backwards)) - (mc/mark-lines arg 'backwards)) + (if (< arg 0) + (let ((cursor (mc/furthest-cursor-before-point))) + (if cursor + (mc/remove-fake-cursor cursor) + (error "No cursors to be unmarked"))) + (if (region-active-p) + (mc/mark-more-like-this (= arg 0) 'backwards) + (mc/mark-lines arg 'backwards))) (mc/maybe-multiple-cursors-mode)) ;;;###autoload @@ -179,12 +179,16 @@ With zero ARG, skip the last one and mark next." (defun mc/mark-lines (num-lines direction) (dotimes (i num-lines) - (mc/create-fake-cursor-at-point) - (ecase direction - (forwards (loop do (next-logical-line 1 nil) - while (mc/all-fake-cursors (point) (1+ (point))))) - (backwards (loop do (previous-logical-line 1 nil) - while (mc/all-fake-cursors (point) (1+ (point)))))))) + (mc/save-excursion + (let ((furthest-cursor (ecase direction + (forwards (mc/furthest-cursor-after-point)) + (backwards (mc/furthest-cursor-before-point))))) + (if (overlayp furthest-cursor) + (goto-char (overlay-get furthest-cursor 'point)))) + (ecase direction + (forwards (next-logical-line 1 nil)) + (backwards (previous-logical-line 1 nil))) + (mc/create-fake-cursor-at-point)))) ;;;###autoload (defun mc/mark-next-lines (arg)