changeset 15941:f063cae001ee

(mouse-region-delete-keys): New variable. (mouse-show-mark): If one of those keys is next, delete the region.
author Richard M. Stallman <rms@gnu.org>
date Tue, 27 Aug 1996 01:03:35 +0000
parents 5f980c3b53e0
children ff30ec8aab54
files lisp/mouse.el
diffstat 1 files changed, 15 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mouse.el	Tue Aug 27 00:14:26 1996 +0000
+++ b/lisp/mouse.el	Tue Aug 27 01:03:35 1996 +0000
@@ -732,6 +732,10 @@
       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 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