mirror of
https://github.com/magnars/multiple-cursors.el.git
synced 2025-10-13 13:03:03 +00:00
Cycle through cursors with C-v and M-v
This commit is contained in:
parent
d69ae15fef
commit
092b0a1017
48
mc-cycle-cursors.el
Normal file
48
mc-cycle-cursors.el
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
(eval-when-compile (require 'cl))
|
||||||
|
|
||||||
|
(defun mc/next-cursor-after-point ()
|
||||||
|
(let ((pos (point))
|
||||||
|
(next-pos (point-max))
|
||||||
|
next)
|
||||||
|
(mc/for-each-fake-cursor
|
||||||
|
(let ((cursor-pos (overlay-get cursor 'point)))
|
||||||
|
(when (and (< pos cursor-pos)
|
||||||
|
(< cursor-pos next-pos))
|
||||||
|
(setq next-pos cursor-pos)
|
||||||
|
(setq next cursor))))
|
||||||
|
next))
|
||||||
|
|
||||||
|
(defun mc/prev-cursor-before-point ()
|
||||||
|
(let ((pos (point))
|
||||||
|
(prev-pos (point-min))
|
||||||
|
prev)
|
||||||
|
(mc/for-each-fake-cursor
|
||||||
|
(let ((cursor-pos (overlay-get cursor 'point)))
|
||||||
|
(when (and (> pos cursor-pos)
|
||||||
|
(> cursor-pos prev-pos))
|
||||||
|
(setq prev-pos cursor-pos)
|
||||||
|
(setq prev cursor))))
|
||||||
|
prev))
|
||||||
|
|
||||||
|
(defun mc/cycle-forward ()
|
||||||
|
(interactive)
|
||||||
|
(let ((next-cursor (mc/next-cursor-after-point)))
|
||||||
|
(unless next-cursor
|
||||||
|
(error "We're already at the last cursor"))
|
||||||
|
(mc/create-fake-cursor-at-point)
|
||||||
|
(mc/pop-state-from-overlay next-cursor)
|
||||||
|
(recenter)))
|
||||||
|
|
||||||
|
(defun mc/cycle-backward ()
|
||||||
|
(interactive)
|
||||||
|
(let ((prev-cursor (mc/prev-cursor-before-point)))
|
||||||
|
(unless prev-cursor
|
||||||
|
(error "We're already at the first cursor"))
|
||||||
|
(mc/create-fake-cursor-at-point)
|
||||||
|
(mc/pop-state-from-overlay prev-cursor)
|
||||||
|
(recenter)))
|
||||||
|
|
||||||
|
(define-key mc/keymap (kbd "C-v") 'mc/cycle-forward)
|
||||||
|
(define-key mc/keymap (kbd "M-v") 'mc/cycle-backward)
|
||||||
|
|
||||||
|
(provide 'mc-cycle-cursors)
|
@ -74,6 +74,7 @@
|
|||||||
|
|
||||||
(require 'multiple-cursors-core)
|
(require 'multiple-cursors-core)
|
||||||
(require 'mc-edit-lines)
|
(require 'mc-edit-lines)
|
||||||
|
(require 'mc-cycle-cursors)
|
||||||
(require 'mc-mark-multiple-integration)
|
(require 'mc-mark-multiple-integration)
|
||||||
(require 'rectangular-region-mode)
|
(require 'rectangular-region-mode)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user