From 7aeb7370f3e160c4c39a594b257c43e871ec1d36 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 27 Aug 1996 01:03:35 +0000 Subject: [PATCH] (mouse-region-delete-keys): New variable. (mouse-show-mark): If one of those keys is next, delete the region. --- lisp/mouse.el | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/lisp/mouse.el b/lisp/mouse.el index c10101bf64b..3a2ad550ead 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -732,6 +732,10 @@ If DIR is positive skip forward; if negative, skip backward." nil))) ;; Momentarily show where the mark is, if highlighting doesn't show it. + +(defvar mouse-region-delete-keys '([delete]) + "List of keys which shall cause the mouse region to be deleted.") + (defun mouse-show-mark () (if transient-mark-mode (if window-system @@ -739,15 +743,22 @@ If DIR is positive skip forward; if negative, skip backward." (if window-system (let ((inhibit-quit t) (echo-keystrokes 0) - event events) + event events key) (move-overlay mouse-drag-overlay (point) (mark t)) (while (progn (setq event (read-event)) (setq events (append events (list event))) + (setq key (apply 'vector events)) (and (memq 'down (event-modifiers event)) - (not (key-binding (apply 'vector events))) + (not (key-binding key)) + (not (member key mouse-region-delete-keys)) (not (mouse-undouble-last-event events))))) - (setq unread-command-events - (nconc events unread-command-events)) + ;; For certain special keys, delete the region. + (if (member key mouse-region-delete-keys) + (delete-region (overlay-start mouse-drag-overlay) + (overlay-end mouse-drag-overlay)) + ;; Otherwise, unread the key so it gets executed normally. + (setq unread-command-events + (nconc events unread-command-events))) (setq quit-flag nil) (delete-overlay mouse-drag-overlay)) (save-excursion -- 2.39.2