Save er/history for each cursor, to be able to contract.

This commit is contained in:
Magnar Sveen 2012-06-07 07:45:38 +02:00
parent a682c154a1
commit 9938acaf71
2 changed files with 14 additions and 4 deletions

View File

@ -119,6 +119,7 @@ Also makes a copy of the kill-ring to be used by this cursor."
(overlay-put overlay 'mark-ring mark-ring) (overlay-put overlay 'mark-ring mark-ring)
(overlay-put overlay 'mark-active mark-active) (overlay-put overlay 'mark-active mark-active)
(overlay-put overlay 'mark (set-marker (make-marker) (mark))) (overlay-put overlay 'mark (set-marker (make-marker) (mark)))
(overlay-put overlay 'er/history er/history)
(when (use-region-p) (when (use-region-p)
(overlay-put overlay 'region-overlay (overlay-put overlay 'region-overlay
(mc/make-region-overlay-between-point-and-mark))) (mc/make-region-overlay-between-point-and-mark)))
@ -133,6 +134,7 @@ cursor with updated info."
(let ((current-kill-ring kill-ring) (let ((current-kill-ring kill-ring)
(current-mark-ring mark-ring) (current-mark-ring mark-ring)
(current-mark-active mark-active) (current-mark-active mark-active)
(current-er/history er/history)
(annoying-arrows-mode nil)) (annoying-arrows-mode nil))
(save-excursion (save-excursion
(mapc #'(lambda (o) (mapc #'(lambda (o)
@ -143,6 +145,7 @@ cursor with updated info."
(set-marker (overlay-get o 'mark) nil) (set-marker (overlay-get o 'mark) nil)
(setq mark-ring (overlay-get o 'mark-ring)) (setq mark-ring (overlay-get o 'mark-ring))
(setq mark-active (overlay-get o 'mark-active)) (setq mark-active (overlay-get o 'mark-active))
(setq er/history (overlay-get o 'er/history))
(delete-region-overlay o) (delete-region-overlay o)
(delete-overlay o) (delete-overlay o)
(ignore-errors (ignore-errors
@ -152,7 +155,8 @@ cursor with updated info."
(overlays-in (point-min) (point-max)))) (overlays-in (point-min) (point-max))))
(setq kill-ring current-kill-ring) (setq kill-ring current-kill-ring)
(setq mark-ring current-mark-ring) (setq mark-ring current-mark-ring)
(setq mark-active current-mark-active))) (setq mark-active current-mark-active)
(setq er/history current-er/history)))
(defun delete-region-overlay (o) (defun delete-region-overlay (o)
(ignore-errors (ignore-errors

View File

@ -1,10 +1,16 @@
* TODO: [2/8] * TODO: [3/9]
** DONE (set-marker MARKER nil) for performance ** DONE (set-marker MARKER nil) for performance
** DONE C-g deactivates regions first, before disabling multiple-cursors ** DONE C-g deactivates regions first, before disabling multiple-cursors
** TODO remove mark-multiple integration ** DONE more state to save per cursor: er/history
** TODO refactor ** TODO refactor
an object with all the current state, used for both overlays and current an object with all the current state, used for both overlays and current
** TODO add tests ** TODO add tests
** TODO more state to save per cursor: er/history
** TODO collapse cursors at same point ** TODO collapse cursors at same point
** TODO unknown command: (t)ry all or (i)gnore -> (did that work ok? (k)eep doing that or (d)on't) ** TODO unknown command: (t)ry all or (i)gnore -> (did that work ok? (k)eep doing that or (d)on't)
** TODO separate mark-multiple and multiple-cursors
mark-multiple goes back to being the util? or just dies?
given the problem with extract-var and undo, may just kill mark-multiple.
problem with that is: C-g when doing rename-tag shouldn't go to multiple-cursors.
** TODO there's something going wrong with last-command/this-command?
expand-region works nicely, even collapse when we save er/history, but last collapse puts all cursors in same spot