mirror of
https://github.com/magnars/multiple-cursors.el.git
synced 2025-10-13 21:03:05 +00:00
Make interprogram-paste work for all cursors.
This commit is contained in:
parent
71f444aab4
commit
ba11b12c74
@ -39,6 +39,7 @@ highlights the entire width of the window."
|
|||||||
"Store relevant info about point and mark in the given overlay."
|
"Store relevant info about point and mark in the given overlay."
|
||||||
(overlay-put o 'point (set-marker (make-marker) (point)))
|
(overlay-put o 'point (set-marker (make-marker) (point)))
|
||||||
(overlay-put o 'kill-ring kill-ring)
|
(overlay-put o 'kill-ring kill-ring)
|
||||||
|
(overlay-put o 'kill-ring-yank-pointer kill-ring-yank-pointer)
|
||||||
(overlay-put o 'mark (set-marker (make-marker) (mark)))
|
(overlay-put o 'mark (set-marker (make-marker) (mark)))
|
||||||
(overlay-put o 'mark-ring mark-ring)
|
(overlay-put o 'mark-ring mark-ring)
|
||||||
(overlay-put o 'mark-active mark-active)
|
(overlay-put o 'mark-active mark-active)
|
||||||
@ -51,6 +52,7 @@ highlights the entire width of the window."
|
|||||||
"Restore point and mark from stored info in the given overlay."
|
"Restore point and mark from stored info in the given overlay."
|
||||||
(goto-char (overlay-get o 'point))
|
(goto-char (overlay-get o 'point))
|
||||||
(setq kill-ring (overlay-get o 'kill-ring))
|
(setq kill-ring (overlay-get o 'kill-ring))
|
||||||
|
(setq kill-ring-yank-pointer (overlay-get o 'kill-ring-yank-pointer))
|
||||||
(set-marker (mark-marker) (overlay-get o 'mark))
|
(set-marker (mark-marker) (overlay-get o 'mark))
|
||||||
(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))
|
||||||
@ -189,6 +191,32 @@ from being executed if in multiple-cursors-mode."
|
|||||||
(unsupported-cmd isearch-backward ". Feel free to add a compatible version.")
|
(unsupported-cmd isearch-backward ". Feel free to add a compatible version.")
|
||||||
(unsupported-cmd delete-char ", delete-forward-char is preferred for interactive use.")
|
(unsupported-cmd delete-char ", delete-forward-char is preferred for interactive use.")
|
||||||
|
|
||||||
|
;; Fixing certain commands
|
||||||
|
;;----------------------------------------------------------------------------------------
|
||||||
|
;; Make sure pastes from other programs are added to all kill-rings when yanking
|
||||||
|
(defadvice current-kill (before interprogram-paste-for-all-cursors activate)
|
||||||
|
(let ((interprogram-paste (and (= n 0)
|
||||||
|
interprogram-paste-function
|
||||||
|
(funcall interprogram-paste-function))))
|
||||||
|
(when interprogram-paste
|
||||||
|
;; Add interprogram-paste to normal kill ring, just
|
||||||
|
;; like current-kill usually does for itself.
|
||||||
|
(let ((interprogram-cut-function nil))
|
||||||
|
(if (listp interprogram-paste)
|
||||||
|
(mapc 'kill-new (nreverse interprogram-paste))
|
||||||
|
(kill-new interprogram-paste))
|
||||||
|
;; And then add interprogram-paste to the kill-rings
|
||||||
|
;; of all the other cursors too.
|
||||||
|
(mc/for-each-fake-cursor
|
||||||
|
(let ((kill-ring (overlay-get cursor 'kill-ring))
|
||||||
|
(kill-ring-yank-pointer (overlay-get cursor 'kill-ring-yank-pointer)))
|
||||||
|
(if (listp interprogram-paste)
|
||||||
|
(mapc 'kill-new (nreverse interprogram-paste))
|
||||||
|
(kill-new interprogram-paste))
|
||||||
|
(overlay-put cursor 'kill-ring kill-ring)
|
||||||
|
(overlay-put cursor 'kill-ring-yank-pointer kill-ring-yank-pointer)))))))
|
||||||
|
;;----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
;; Commands to run only once (not yet in use)
|
;; Commands to run only once (not yet in use)
|
||||||
(setq mc--cmds-run-once '(mark-next-like-this
|
(setq mc--cmds-run-once '(mark-next-like-this
|
||||||
save-buffer
|
save-buffer
|
||||||
|
Loading…
x
Reference in New Issue
Block a user