1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-22 07:09:54 +00:00

* 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
This commit is contained in:
Juri Linkov 2010-06-04 21:38:11 +03:00
parent 087fc47ace
commit 0665f66133
2 changed files with 28 additions and 14 deletions

View File

@ -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.

View File

@ -2905,24 +2905,27 @@ argument should still be a \"useful\" string for such uses."
(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))))