Mercurial > emacs
changeset 108889:e7c6230ab85d
* lisp/simple.el (kill-new): Fix logic of kill-do-not-save-duplicates.
Instead of setting `replace' to t and replacing the same string
with itself, don't do certain actions when
kill-do-not-save-duplicates is non-nil and string is equal to car
of kill-ring: don't call menu-bar-update-yank-menu, don't push
interprogram-paste strings to kill-ring, and don't push the input
argument `string' to kill-ring.
http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00072.html
author | Juri Linkov <juri@jurta.org> |
---|---|
date | Fri, 04 Jun 2010 21:38:11 +0300 |
parents | c2ac5cece5ea |
children | d9257436d2b1 |
files | lisp/ChangeLog lisp/simple.el |
diffstat | 2 files changed, 28 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Fri Jun 04 16:13:35 2010 +0200 +++ b/lisp/ChangeLog Fri Jun 04 21:38:11 2010 +0300 @@ -1,3 +1,14 @@ +2010-06-04 Juri Linkov <juri@jurta.org> + + * simple.el (kill-new): Fix logic of kill-do-not-save-duplicates. + Instead of setting `replace' to t and replacing the same string + with itself, don't do certain actions when + kill-do-not-save-duplicates is non-nil and string is equal to car + of kill-ring: don't call menu-bar-update-yank-menu, don't push + interprogram-paste strings to kill-ring, and don't push the input + argument `string' to kill-ring. + http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00072.html + 2010-06-04 Juanma Barranquero <lekktu@gmail.com> * subr.el (directory-sep-char): Move from fileio.c and make a defconst.
--- a/lisp/simple.el Fri Jun 04 16:13:35 2010 +0200 +++ b/lisp/simple.el Fri Jun 04 21:38:11 2010 +0300 @@ -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))))