changeset 81894:fb5c5d1a8fe2

(delete-selection-pre-hook): Before a yank command, check also whether last-command is one of mouse-save-then-kill, mouse-secondary-save-then-kill, mouse-set-region, mouse-drag-region.
author Juri Linkov <juri@jurta.org>
date Sun, 15 Jul 2007 19:55:32 +0000
parents 5608c829dbac
children d59242324437
files lisp/delsel.el
diffstat 1 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/delsel.el	Sun Jul 15 19:55:14 2007 +0000
+++ b/lisp/delsel.el	Sun Jul 15 19:55:32 2007 +0000
@@ -87,12 +87,16 @@
 	  (cond ((eq type 'kill)
 		 (delete-active-region t))
 		((eq type 'yank)
-		 ;; Before a yank command,
-		 ;; make sure we don't yank the same region
-		 ;; that we are going to delete.
-		 ;; That would make yank a no-op.
-		 (when (string= (buffer-substring-no-properties (point) (mark))
-				(car kill-ring))
+		 ;; Before a yank command, make sure we don't yank the
+		 ;; head of the kill-ring that really comes from the
+		 ;; currently active region we are going to delete
+		 ;; (when last-command is one that uses copy-region-as-kill
+		 ;; or kill-new).  That would make yank a no-op.
+		 (when (and (string= (buffer-substring-no-properties (point) (mark))
+				     (car kill-ring))
+			    (memq last-command
+				  '(mouse-set-region mouse-drag-region
+				    mouse-save-then-kill mouse-secondary-save-then-kill)))
 		   (current-kill 1))
 		 (delete-active-region))
 		((eq type 'supersede)