From e2f1fdab9105065bda0212bf1558eca186c2f3cb Mon Sep 17 00:00:00 2001 From: Leo Liu Date: Tue, 13 Mar 2012 02:21:35 +0800 Subject: [PATCH] * lisp/simple.el (kill-new): Use equal-including-properties for comparison. (kill-do-not-save-duplicates): Doc fix. --- lisp/ChangeLog | 6 ++++++ lisp/simple.el | 12 ++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index bb03ba0b436..4f883b1cf94 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2012-03-12 Leo Liu + + * simple.el (kill-new): Use equal-including-properties for + comparison. + (kill-do-not-save-duplicates): Doc fix. + 2012-03-12 Stefan Monnier * dabbrev.el: Fix cycle completion (bug#10963). diff --git a/lisp/simple.el b/lisp/simple.el index f42ea3e7a50..936037f5caa 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -3069,7 +3069,8 @@ before the Emacs kill and one can still paste it using \\[yank] \\[yank-pop]." :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." + "Do not add a new string to `kill-ring' if it duplicates the last one. +The comparison is done using `equal-including-properties'." :type 'boolean :group 'killing :version "23.2") @@ -3097,7 +3098,10 @@ argument should still be a \"useful\" string for such uses." (signal 'args-out-of-range (list string "yank-handler specified for empty string")))) (unless (and kill-do-not-save-duplicates - (equal string (car kill-ring))) + ;; Due to text properties such as 'yank-handler that + ;; can alter the contents to yank, comparison using + ;; `equal' is unsafe. + (equal-including-properties 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 @@ -3108,10 +3112,10 @@ argument should still be a \"useful\" string for such uses." (nreverse interprogram-paste) (list interprogram-paste))) (unless (and kill-do-not-save-duplicates - (equal s (car kill-ring))) + (equal-including-properties s (car kill-ring))) (push s kill-ring)))))) (unless (and kill-do-not-save-duplicates - (equal string (car kill-ring))) + (equal-including-properties string (car kill-ring))) (if (and replace kill-ring) (setcar kill-ring string) (push string kill-ring) -- 2.11.4.GIT