From 0136e1e36cf02aa96d14d2b2e2b3c0ff98236f6a Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 12 Jul 1994 17:03:13 +0000 Subject: [PATCH] (mouse-drag-secondary): Don't start making an overlay when the range is empty. (mouse-secondary-save-then-kill): The first time, make a new kill ring entry. --- lisp/mouse.el | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/lisp/mouse.el b/lisp/mouse.el index f7977689634..c43b25457c9 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -629,11 +629,14 @@ This must be bound to a button-down mouse event." ;; Are we moving within the original window? ((and (eq (posn-window end) start-window) (integer-or-marker-p end-point)) - (set-marker mouse-secondary-start nil) (let ((range (mouse-start-end start-point end-point click-count))) - (move-overlay mouse-secondary-overlay - (car range) (nth 1 range)))) + (if (or (/= start-point end-point) + (null (marker-position mouse-secondary-start))) + (progn + (set-marker mouse-secondary-start nil) + (move-overlay mouse-secondary-overlay + (car range) (nth 1 range)))))) (t (let ((mouse-row (cdr (cdr (mouse-position))))) (cond @@ -787,11 +790,20 @@ again. If you do this twice in the same position, it kills the selection." (overlay-start mouse-secondary-overlay) click-posn)) (setq deactivate-mark nil))) - (setcar kill-ring (buffer-substring - (overlay-start mouse-secondary-overlay) - (overlay-end mouse-secondary-overlay))) - (if interprogram-cut-function - (funcall interprogram-cut-function (car kill-ring)))) + (if (eq last-command 'mouse-secondary-save-then-kill) + (progn + ;; If the front of the kill ring comes from + ;; an immediately previous use of this command, + ;; replace it with the extended region. + ;; (It would be annoying to make a separate entry.) + (setcar kill-ring + (buffer-substring + (overlay-start mouse-secondary-overlay) + (overlay-end mouse-secondary-overlay))) + (if interprogram-cut-function + (funcall interprogram-cut-function (car kill-ring)))) + (copy-region-as-kill (overlay-start mouse-secondary-overlay) + (overlay-end mouse-secondary-overlay)))) (if mouse-secondary-start ;; All we have is one end of a selection, ;; so put the other end here. -- 2.39.5