From: Sam Steingold Date: Thu, 27 Aug 2009 14:56:17 +0000 (+0000) Subject: (kill-do-not-save-duplicates): New user option. X-Git-Tag: emacs-pretest-23.1.90~1654 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ba83a64e18f8472176468255eb89a4bb55c726ae;p=emacs.git (kill-do-not-save-duplicates): New user option. (kill-new): When it is non-nil, and the new string is the same as the latest kill, set replace to t to avoid duplicates in kill-ring. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 32ca7ac6f46..a8ff996bbe7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2009-08-27 Sam Steingold + + * simple.el (kill-do-not-save-duplicates): New user option. + (kill-new): When it is non-nil, and the new string is the same as + the latest kill, set replace to t to avoid duplicates in kill-ring. + 2009-08-19 Julian Scheid (tiny change) * net/tramp.el (tramp-handle-process-file): Do not flush all diff --git a/lisp/simple.el b/lisp/simple.el index 88cc61a835b..f2926401213 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -2805,6 +2805,12 @@ before the Emacs kill and one can still paste it using \\[yank] \\[yank-pop]." :group 'killing :version "23.2") +(defcustom kill-do-not-save-duplicates nil + "Do not add a new string to `kill-ring' when it is the same as the last one." + :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. @@ -2832,6 +2838,9 @@ 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)))) (when save-interprogram-paste-before-kill