bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#6256: 24.0.50; read-event in `repeat' command


From: Stefan Monnier
Subject: bug#6256: 24.0.50; read-event in `repeat' command
Date: Sat, 11 Sep 2010 20:25:30 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

> And suppose `my-map' is bound to `C-x p'.  I would like for `C-x p'
> followed by repeated mouse-wheel-up events to repeat command `foo'.

> That does not happen, however, because of this restrictive `eq' test in the
> definition of function `repeat':

> (while (eq (read-event) repeat-repeat-char)
>   (repeat repeat-arg))

> The event read will be something like this, for the wheel action:

> (wheel-down (#<window 8 on foo.el> 2051 (118 . 176) 158455015 nil
>             2051 (59 . 40) nil (26 . 2) (2 . 4)))

I installed the patch below in the emacs-23 branch (it seemed slightly
safer than your version of the code).
Please confirm that it fixes your problem,


        Stefan
        

=== modified file 'lisp/repeat.el'
--- lisp/repeat.el      2010-01-13 08:35:10 +0000
+++ lisp/repeat.el      2010-09-11 18:20:32 +0000
@@ -335,7 +335,12 @@
        (setq real-last-command 'repeat)
        (setq repeat-undo-count 1)
        (unwind-protect
-           (while (eq (read-event) repeat-repeat-char)
+           (while (let ((evt (read-event))) ;FIXME: read-key maybe?
+                     ;; For clicks, we need to strip the meta-data to
+                     ;; check the underlying event name.
+                     (eq (or (car-safe evt) evt)
+                         (or (car-safe repeat-repeat-char)
+                             repeat-repeat-char)))
              (repeat repeat-arg))
          ;; Make sure `repeat-undo-count' is reset.
          (setq repeat-undo-count nil))






reply via email to

[Prev in Thread] Current Thread [Next in Thread]