Mercurial > emacs
changeset 85397:1404d7fefc24
Tom Horsley <tom.horsley at att.net>
(interprogram-paste-function): Doc fix.
(current-kill): Accept list of strings as well
as single string from `interprogram-paste-function'.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Thu, 18 Oct 2007 04:52:06 +0000 |
parents | 9ed1cbc73fd9 |
children | e62de93b508a |
files | lisp/simple.el |
diffstat | 1 files changed, 14 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/simple.el Thu Oct 18 04:46:28 2007 +0000 +++ b/lisp/simple.el Thu Oct 18 04:52:06 2007 +0000 @@ -2564,6 +2564,11 @@ string, then the caller of the function \(usually `current-kill') should put this string in the kill ring as the latest kill. +This function may also return a list of strings if the window +system supports multiple selections. The first string will be +used as the pasted text, but the other will be placed in the +kill ring for easy access via `yank-pop'. + Note that the function should return a string only if a program other than Emacs has provided a string for pasting; if Emacs provided the most recent string, the function should return nil. If it is @@ -2647,11 +2652,11 @@ (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, then that string is added to the front of the -kill ring and 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." +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." (let ((interprogram-paste (and (= n 0) interprogram-paste-function (funcall interprogram-paste-function)))) @@ -2661,8 +2666,10 @@ ;; text to the kill ring, so Emacs doesn't try to own the ;; selection, with identical text. (let ((interprogram-cut-function nil)) - (kill-new interprogram-paste)) - interprogram-paste) + (if (listp interprogram-paste) + (mapc 'kill-new (nreverse interprogram-paste)) + (kill-new interprogram-paste))) + (car kill-ring)) (or kill-ring (error "Kill ring is empty")) (let ((ARGth-kill-element (nthcdr (mod (- n (length kill-ring-yank-pointer))