diff --git a/README.md b/README.md index 58eb4c2..d97345a 100644 --- a/README.md +++ b/README.md @@ -185,7 +185,7 @@ Run the tests with: * [Fuco](https://github.com/Fuco1) added the first version of `mc/mark-all-like-this-dwim` * [Zach Kost-Smith](https://github.com/smithzvk) added `mc/mark-pop` * [Maciej Katafiasz](https://github.com/mathrick) added `mc/mark-all-dwim` -* [Aleksey Fedotov](https://github.com/lexa) added `mc-hide-unmatched-lines-mode` and made undo restore your cursors after leaving mc-mode. +* [Aleksey Fedotov](https://github.com/lexa) added `mc-hide-unmatched-lines-mode` Thanks! diff --git a/features/multiple-cursors-core.feature b/features/multiple-cursors-core.feature index 73259f8..0a6e8b9 100644 --- a/features/multiple-cursors-core.feature +++ b/features/multiple-cursors-core.feature @@ -65,26 +65,6 @@ Feature: Multiple cursors core And I type "!" Then I should see "This text! contains the word text! twice" - Scenario: Undo mode - Given I have cursors at "text" in "This text contains the word text twice" - When I press "C-g" - And I press "M-f" - And I press "C-_" - And I type "!" - Then I should see "This !text contains the word !text twice" - - Scenario: Undo until mc mode will be disabled - Given I have cursors at "text" in "This text contains the word text twice" - And I should have 2 cursors - When I press "C-g" - And I should have 1 cursors - And I press "C-_" - And I should have 2 cursors - And I press "C-_" - And I should have 1 cursors - And I type "!" - Then I should see "This !text contains the word text twice" - Scenario: Setting and popping mark Given I have cursors at "text" in "This text contains the word text twice" And I press "C-SPC" diff --git a/multiple-cursors-core.el b/multiple-cursors-core.el index 2c76b42..d2b2c42 100644 --- a/multiple-cursors-core.el +++ b/multiple-cursors-core.el @@ -52,14 +52,6 @@ (setq buffer-undo-list ;; otherwise add a function to activate this cursor (cons (cons 'apply (cons 'activate-cursor-for-undo (list id))) buffer-undo-list)))))) - -(defun mc/get-all-fake-cursors-state () - "Return list of all fake cursor states -like this: ((CURSOR-POS MARK-POSITION (list of cursor specific variables)) ...)" - (mapcar (lambda (cursor) - (mc/get-state-from-overlay cursor)) - (mc/all-fake-cursors))) - (defun mc/all-fake-cursors (&optional start end) (remove-if-not 'mc/fake-cursor-p (overlays-in (or start (point-min)) @@ -160,23 +152,6 @@ highlights the entire width of the window." (dolist (var mc/cursor-specific-vars) (when (boundp var) (set var (overlay-get o var))))) -(defun mc/get-state-from-overlay (o) - "Return list describing state of cursor overlay" - (list - (marker-position (overlay-get o 'point)) - (marker-position (overlay-get o 'mark)) - (mapcar (lambda (var) - (when (boundp var) (cons var (overlay-get o var)))) - mc/cursor-specific-vars))) - -(defun mc/create-overlay-from-state (point mark cursor-vars) - "Creates cursor overlay according to cursor-info" - (goto-char point) - (push-mark mark t) - (loop for (var . value) in cursor-vars - do (setq var value)) - (mc/create-fake-cursor-at-point)) - (defun mc/remove-fake-cursor (o) "Delete overlay with state, including dependent overlays and markers." (set-marker (overlay-get o 'point) nil) @@ -484,20 +459,6 @@ They are temporarily disabled when multiple-cursors are active.") :group 'multiple-cursors) (put 'mc/mode-line 'risky-local-variable t) -(defun mc/restore-mode (real-cursor real-mark fake-cursors) - "Restore state of mc mode after undo" - (save-excursion - ;; remove all existing fake cursors - (when multiple-cursors-mode - (mc/remove-fake-cursors)) - ;; and create set a new one - (mapc #'(lambda (cursor) - (apply 'mc/create-overlay-from-state cursor)) - fake-cursors)) - (goto-char real-cursor) - (push-mark real-mark t) - (multiple-cursors-mode t)) - ;;;###autoload (define-minor-mode multiple-cursors-mode "Mode while multiple cursors are active." @@ -505,13 +466,11 @@ They are temporarily disabled when multiple-cursors are active.") (if multiple-cursors-mode (progn (mc/temporarily-disable-unsupported-minor-modes) - (push `(apply multiple-cursors-mode . ,(list 0)) buffer-undo-list) (add-hook 'pre-command-hook 'mc/make-a-note-of-the-command-being-run nil t) (add-hook 'post-command-hook 'mc/execute-this-command-for-all-cursors t t) (run-hooks 'multiple-cursors-mode-enabled-hook)) (remove-hook 'post-command-hook 'mc/execute-this-command-for-all-cursors t) (remove-hook 'pre-command-hook 'mc/make-a-note-of-the-command-being-run t) - (push `(apply mc/restore-mode . ,(list (point) (mark) (mc/get-all-fake-cursors-state))) buffer-undo-list) (setq mc--this-command nil) (mc--maybe-set-killed-rectangle) (mc/remove-fake-cursors)