]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow appending to the kill ring with mouse selections
authorLars Ingebrigtsen <larsi@gnus.org>
Sun, 19 Jun 2022 22:59:14 +0000 (00:59 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 19 Jun 2022 23:00:06 +0000 (01:00 +0200)
* lisp/bindings.el (ignore-preserving-kill-region): New function.
(global-map): Use it.

* lisp/mouse.el (mouse-set-region, mouse-drag-region)
(mouse-drag-track): Allow appending to kill ring with mouse
selections (bug#32747).

lisp/bindings.el
lisp/mouse.el

index ed1325e326c783f3241ebe4391bf3a6c229becc7..c67a104b4c13b69720b333f7ab573aa6df154079 100644 (file)
@@ -1339,7 +1339,15 @@ if `inhibit-field-text-motion' is non-nil."
 ;; can use S-tab instead to access that binding.
 (define-key function-key-map [S-tab] [backtab])
 
-(define-key global-map [mouse-movement] 'ignore)
+(defun ignore-preserving-kill-region (&rest _)
+  "Like `ignore', but don't overwrite `last-event' if it's `kill-region'."
+  (declare (completion ignore))
+  (interactive)
+  (when (eq last-command 'kill-region)
+    (setq this-command 'kill-region))
+  nil)
+
+(define-key global-map [mouse-movement] #'ignore-preserving-kill-region)
 
 (define-key global-map "\C-t" 'transpose-chars)
 (define-key esc-map "t" 'transpose-words)
index 14cb20c234a6b778b1797af56697b5038d66cd32..82c8a1469327167e9e3ae555409a4b7534723426 100644 (file)
@@ -1439,7 +1439,8 @@ command alters the kill ring or not."
         ;; Don't set this-command to `kill-region', so a following
         ;; C-w won't double the text in the kill ring.  Ignore
         ;; `last-command' so we don't append to a preceding kill.
-        (let (this-command last-command deactivate-mark)
+        (let ((last-command last-command)
+               this-command deactivate-mark)
           (copy-region-as-kill beg end)))
     (if (numberp beg) (goto-char beg))
     ;; On a text terminal, bounce the cursor.
@@ -1542,6 +1543,7 @@ is dragged over to."
       (mouse-drag-and-drop-region start-event)
     ;; Give temporary modes such as isearch a chance to turn off.
     (run-hooks 'mouse-leave-buffer-hook)
+    (ignore-preserving-kill-region)
     (mouse-drag-track start-event)))
 
 ;; Inhibit the region-confinement when undoing mouse-drag-region
@@ -1751,7 +1753,8 @@ The region will be defined with mark and point."
                                             nil start-point))
                         ((>= mouse-row bottom)
                          (mouse-scroll-subr start-window (1+ (- mouse-row bottom))
-                                            nil start-point))))))))
+                                            nil start-point))))))
+                 (ignore-preserving-kill-region)))
              map)
            t (lambda ()
                (funcall cleanup)