Mercurial > emacs
diff lisp/simple.el @ 108902:1f795f817d05
Merge from mainline.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Sun, 06 Jun 2010 22:46:17 +0000 |
parents | e7c6230ab85d |
children | a52944b44517 |
line wrap: on
line diff
--- a/lisp/simple.el Thu Jun 03 23:18:01 2010 +0000 +++ b/lisp/simple.el Sun Jun 06 22:46:17 2010 +0000 @@ -2905,24 +2905,27 @@ (if yank-handler (signal 'args-out-of-range (list string "yank-handler specified for empty string")))) - (when (and kill-do-not-save-duplicates - (equal string (car kill-ring))) - (setq replace t)) - (if (fboundp 'menu-bar-update-yank-menu) - (menu-bar-update-yank-menu string (and replace (car kill-ring)))) + (unless (and kill-do-not-save-duplicates + (equal string (car kill-ring))) + (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) - (if (> (length kill-ring) kill-ring-max) - (setcdr (nthcdr (1- kill-ring-max) kill-ring) nil))) + (dolist (s (if (listp interprogram-paste) + (nreverse interprogram-paste) + (list interprogram-paste))) + (unless (and kill-do-not-save-duplicates + (equal s (car kill-ring))) + (push s kill-ring)))))) + (unless (and kill-do-not-save-duplicates + (equal string (car kill-ring))) + (if (and replace kill-ring) + (setcar kill-ring string) + (push string kill-ring) + (if (> (length kill-ring) kill-ring-max) + (setcdr (nthcdr (1- kill-ring-max) kill-ring) nil)))) (setq kill-ring-yank-pointer kill-ring) (if interprogram-cut-function (funcall interprogram-cut-function string (not replace))))