1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-08 00:33:13 -08:00

(yank-pop-change-selection): New option.

(current-kill): Obey it.
This commit is contained in:
Richard M. Stallman 2007-12-25 20:19:13 +00:00
parent 63571b5a84
commit 4496b02bed
3 changed files with 27 additions and 4 deletions

View file

@ -165,6 +165,10 @@ makes the new region into the primary selection (for interaction with
other window applications). If you enable this, you might want to bind
`mouse-yank-primary' to Mouse-2.
** If `yank-pop-change-selection' is t, rotating the kill ring
also updates the selection or clipboard to the current yank,
just as M-w would do so with the text it copies to the kill ring.
** Minibuffer changes:
*** In C-x d, if you type M-n you get the visited file name of the

View file

@ -2,6 +2,8 @@
* simple.el (select-active-regions): New option.
(set-mark): Obey it.
(yank-pop-change-selection): New option.
(current-kill): Obey it.
2007-12-25 David Golden <david.delaharpe.golden@gmail.com> (tiny change)

View file

@ -2659,13 +2659,26 @@ If `interprogram-cut-function' is set, pass the resulting kill to it."
(equal yank-handler (get-text-property 0 'yank-handler cur)))
yank-handler)))
(defcustom yank-pop-change-selection nil
"If non-nil, rotating the kill ring changes the window system selection."
:type 'boolean
:group 'killing
:version "23.1")
(defun current-kill (n &optional do-not-move)
"Rotate the yanking point by N places, and then return that kill.
If N is zero, `interprogram-paste-function' is set, and calling it returns a
string or list of strings, then that string (or list) is added to the front
of the kill ring and the string (or first string in the list) is returned as
the latest kill. If optional arg DO-NOT-MOVE is non-nil, then don't
actually move the yanking point; just return the Nth kill forward."
the latest kill.
If N is not zero, and if `yank-pop-change-selection' is
non-nil, use `interprogram-cut-function' to transfer the
kill at the new yank point into the window system selection.
If optional arg DO-NOT-MOVE is non-nil, then don't actually
move the yanking point; just return the Nth kill forward."
(let ((interprogram-paste (and (= n 0)
interprogram-paste-function
(funcall interprogram-paste-function))))
@ -2684,8 +2697,12 @@ actually move the yanking point; just return the Nth kill forward."
(nthcdr (mod (- n (length kill-ring-yank-pointer))
(length kill-ring))
kill-ring)))
(or do-not-move
(setq kill-ring-yank-pointer ARGth-kill-element))
(unless do-not-move
(setq kill-ring-yank-pointer ARGth-kill-element)
(when (and yank-pop-change-selection
(> n 0)
interprogram-cut-function)
(funcall interprogram-cut-function (car ARGth-kill-element))))
(car ARGth-kill-element)))))