(save-interprogram-paste-before-kill): New user option.
(kill-new): When `save-interprogram-paste-before-kill' is non-nil, save the interprogram-paste into kill-ring before overriding it with the Emacs kill.
This commit is contained in:
parent
5654bf6320
commit
4ed8c7aadb
2 changed files with 30 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
|||
2009-08-26 Sam Steingold <sds@gnu.org>
|
||||
|
||||
* simple.el (save-interprogram-paste-before-kill): New user option.
|
||||
(kill-new): When `save-interprogram-paste-before-kill' is non-nil,
|
||||
save the interprogram-paste into kill-ring before overriding it
|
||||
with the Emacs kill.
|
||||
|
||||
2009-08-26 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* vc.el (vc-trunk-p): Rename to vc-rcs-trunk-p and move to vc-rcs.el.
|
||||
|
|
|
@ -2794,6 +2794,17 @@ ring directly.")
|
|||
(defvar kill-ring-yank-pointer nil
|
||||
"The tail of the kill ring whose car is the last thing yanked.")
|
||||
|
||||
(defcustom save-interprogram-paste-before-kill nil
|
||||
"Save the paste strings into `kill-ring' before replacing it with emacs strings.
|
||||
When one selects something in another program to paste it into Emacs,
|
||||
but kills something in Emacs before actually pasting it,
|
||||
this selection is gone unless this variable is non-nil,
|
||||
in which case the other program's selection is saved in the `kill-ring'
|
||||
before the Emacs kill and one can still paste it using \\[yank] \\[yank-pop]."
|
||||
:type 'boolean
|
||||
:group 'killing
|
||||
:version "23.2")
|
||||
|
||||
(defun kill-new (string &optional replace yank-handler)
|
||||
"Make STRING the latest kill in the kill ring.
|
||||
Set `kill-ring-yank-pointer' to point to it.
|
||||
|
@ -2806,6 +2817,10 @@ inserted into a buffer; see `insert-for-yank' for details.
|
|||
When a yank handler is specified, STRING must be non-empty (the yank
|
||||
handler, if non-nil, is stored as a `yank-handler' text property on STRING).
|
||||
|
||||
When `save-interprogram-paste-before-kill' and `interprogram-paste-function'
|
||||
are non-nil, saves the interprogram paste string(s) into `kill-ring' before
|
||||
STRING.
|
||||
|
||||
When the yank handler has a non-nil PARAM element, the original STRING
|
||||
argument is not used by `insert-for-yank'. However, since Lisp code
|
||||
may access and use elements from the kill ring directly, the STRING
|
||||
|
@ -2819,6 +2834,14 @@ argument should still be a \"useful\" string for such uses."
|
|||
(list string "yank-handler specified for empty string"))))
|
||||
(if (fboundp 'menu-bar-update-yank-menu)
|
||||
(menu-bar-update-yank-menu string (and replace (car kill-ring))))
|
||||
(when save-interprogram-paste-before-kill
|
||||
(let ((interprogram-paste (and interprogram-paste-function
|
||||
(funcall interprogram-paste-function))))
|
||||
(when interprogram-paste
|
||||
(if (listp interprogram-paste)
|
||||
(dolist (s (nreverse interprogram-paste))
|
||||
(push s kill-ring))
|
||||
(push interprogram-paste kill-ring)))))
|
||||
(if (and replace kill-ring)
|
||||
(setcar kill-ring string)
|
||||
(push string kill-ring)
|
||||
|
|
Loading…
Add table
Reference in a new issue