]> git.eshelyaron.com Git - emacs.git/commitdiff
(cua-paste): Before a yank command,
authorJuri Linkov <juri@jurta.org>
Sun, 15 Jul 2007 19:58:18 +0000 (19:58 +0000)
committerJuri Linkov <juri@jurta.org>
Sun, 15 Jul 2007 19:58:18 +0000 (19:58 +0000)
check also whether last-command is one of mouse-save-then-kill,
mouse-secondary-save-then-kill, mouse-set-region, mouse-drag-region.

lisp/ChangeLog
lisp/emulation/cua-base.el

index 29e342f94eae9628c87a6e22f6813e7b0e1fffc0..f880e6899e9b94876fa29ed169ce8d84599bd022 100644 (file)
@@ -1,3 +1,10 @@
+2007-07-15  Juri Linkov  <juri@jurta.org>
+
+       * delsel.el (delete-selection-pre-hook):
+       * emulation/cua-base.el (cua-paste): 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.
+
 2007-07-15  Michael Albinus  <albinus@localhost>
 
        * recentf.el (recentf-keep-default-predicate): New defun.
index 653597fb83b6625ec490ce18c5e1742c75cdbe47..b9cbf0118b4ca93f7d4f87d52a0cb0b2587595f0 100644 (file)
@@ -898,9 +898,6 @@ If global mark is active, copy from register or one character."
      (t
       ;; Must save register here, since delete may override reg 0.
       (if mark-active
-         ;; 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.
          (if cua--rectangle
              (progn
                (goto-char (min (mark) (point)))
@@ -908,8 +905,16 @@ If global mark is active, copy from register or one character."
                (setq paste-lines (cua--delete-rectangle))
                (if (= paste-lines 1)
                    (setq paste-lines nil))) ;; paste all
-           (if (string= (filter-buffer-substring (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.
+           (if (and (string= (filter-buffer-substring (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))
            (cua-delete-region)))
       (cond