[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mouse-show-mark bug
From: |
David Kastrup |
Subject: |
Re: mouse-show-mark bug |
Date: |
Thu, 28 Oct 2004 14:17:32 +0200 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/21.3.50 (gnu/linux) |
David PONCE <address@hidden> writes:
> Since this change:
>
> 2004-10-27 Richard M. Stallman <address@hidden>
>
> * mouse.el (mouse-show-mark): Do most processing the same
> regardless of transient-mark-mode.
>
> Each time I try to delete a selected region with transient-mark-mode
> enabled I get this error:
>
> Debugger entered--Lisp error: (wrong-type-argument integer-or-marker-p nil)
> delete-region(nil nil)
> (if (member key mouse-region-delete-keys) (delete-region
> (overlay-start mouse-drag-overlay) (overlay-end mouse-drag-overlay))
> (setq unread-command-events (nconc events unread-command-events)))
> (if ignore nil (if (member key mouse-region-delete-keys)
> (delete-region ... ...) (setq unread-command-events ...)))
> (let ((inhibit-quit t) (echo-keystrokes 0) event events key ignore
> (x-lost-selection-hooks ...)) (add-hook (quote
> x-lost-selection-hooks) (lambda ... ...)) (if transient-mark-mode
> (delete-overlay mouse-drag-overlay) (move-overlay mouse-drag-overlay
> ... ...)) (catch (quote mouse-show-mark) (while ... ...)) (if ignore
> nil (if ... ... ...)) (setq quit-flag nil) (unless
> transient-mark-mode (delete-overlay mouse-drag-overlay)))
> mouse-show-mark()
> mouse-drag-region-1((double-down-mouse-1 (#<window 22 on *shell*>
> 127 (215 . 61) 21028920 nil 127 (26 . 2) nil (7 . 9) (8 . 16)) 2))
> mouse-drag-region((double-down-mouse-1 (#<window 22 on *shell*> 127
> (215 . 61) 21028920 nil 127 (26 . 2) nil (7 . 9) (8 . 16)) 2))
> call-interactively(mouse-drag-region)
>
> This is because at this point mouse-drag-overlay has been deleted.
>
> This patch seems to fix the bug for me. Please could someone review
> it?
>
> Regards
> David
>
> Index: mouse.el
> ===================================================================
> RCS file: /cvsroot/emacs/emacs/lisp/mouse.el,v
> retrieving revision 1.252
> diff -c -r1.252 mouse.el
> *** mouse.el 27 Oct 2004 17:44:59 -0000 1.252
> --- mouse.el 28 Oct 2004 11:50:55 -0000
> ***************
> *** 1066,1072 ****
> (if ignore
> nil
> ;; 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.
> --- 1066,1073 ----
> (if ignore
> nil
> ;; For certain special keys, delete the region.
> ! (if (and (not transient-mark-mode)
> ! (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.
Looks dangerous to me. Why not simply use as a check that
mouse-drag-overlay is not detached?
--
David Kastrup, Kriemhildstr. 15, 44793 Bochum