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:
parent
087fc47ace
commit
0665f66133
@ -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.
|
||||
|
@ -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))))
|
||||
|
Loading…
Reference in New Issue
Block a user