1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-24 07:20:37 +00:00

Respect mouse-drag-copy-region upon mouse-3 region adjustment.

* mouse.el (mouse-save-then-kill): Save region to kill-ring when
mouse-drag-copy-region is non-nil (Bug#6956).
This commit is contained in:
David De La Harpe Golden 2010-09-05 23:40:57 +01:00
parent 8d76af4ad0
commit 93d68d4f02
2 changed files with 25 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2010-09-05 David De La Harpe Golden <david@harpegolden.net>
* mouse.el (mouse-save-then-kill): Save region to kill-ring
when mouse-drag-copy-region is non-nil (Bug#6956).
2010-09-05 Chong Yidong <cyd@stupidchicken.com>
* dired.el (dired-ls-sorting-switches, dired-sort-by-name-regexp):

View File

@ -43,7 +43,10 @@
:group 'mouse)
(defcustom mouse-drag-copy-region nil
"If non-nil, mouse drag copies region to kill-ring."
"If non-nil, copy to kill-ring upon mouse adjustments of the region.
This affects `mouse-save-then-kill' (\\[mouse-save-then-kill]) in
addition to mouse drags."
:type 'boolean
:version "24.1"
:group 'mouse)
@ -1348,8 +1351,13 @@ moving point or mark, whichever is closer, to CLICK. But if you
have selected whole words or lines, move point or mark to the
word or line boundary closest to CLICK instead.
If `mouse-drag-copy-region' is non-nil, this command also saves the
new region to the kill ring (replacing the previous kill if the
previous region was just saved to the kill ring).
If this command is called a second consecutive time with the same
CLICK position, kill the region."
CLICK position, kill the region (or delete it
if `mouse-drag-copy-region' is non-nil)"
(interactive "e")
(mouse-minibuffer-check click)
(let* ((posn (event-start click))
@ -1371,7 +1379,11 @@ CLICK position, kill the region."
((and (eq last-command 'mouse-save-then-kill)
(eq click-pt mouse-save-then-kill-posn)
(eq window (selected-window)))
(kill-region (mark t) (point))
(if mouse-drag-copy-region
;; Region already saved in the previous click;
;; don't make a duplicate entry, just delete.
(delete-region (mark t) (point))
(kill-region (mark t) (point)))
(setq mouse-selection-click-count 0)
(setq mouse-save-then-kill-posn nil))
@ -1394,6 +1406,9 @@ CLICK position, kill the region."
(goto-char (nth 1 range)))
(setq deactivate-mark nil)
(mouse-set-region-1)
(when mouse-drag-copy-region
;; Region already copied to kill-ring once, so replace.
(kill-new (filter-buffer-substring (mark t) (point)) t))
;; Arrange for a repeated mouse-3 to kill the region.
(setq mouse-save-then-kill-posn click-pt)))
@ -1405,6 +1420,8 @@ CLICK position, kill the region."
(if before-scroll (goto-char before-scroll)))
(exchange-point-and-mark)
(mouse-set-region-1)
(when mouse-drag-copy-region
(kill-new (filter-buffer-substring (mark t) (point))))
(setq mouse-save-then-kill-posn click-pt)))))