unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#12232: 24.1.50; regression: repeat.el commit 2012-05-05 breaks repeating commands
@ 2012-08-19  2:55 Drew Adams
  2012-08-24 14:57 ` Drew Adams
  0 siblings, 1 reply; 11+ messages in thread
From: Drew Adams @ 2012-08-19  2:55 UTC (permalink / raw)
  To: 12232

I believe this regression was introduced by the following commit:
 
Stefan Monnier2012-05-05 02:50:20Revision ID: monnier@iro.umontreal.ca-2012=
0505025020-ihjvoqehkrxkfxw8
 
Use set-temporary-overlay-map.
* lisp/repeat.el: Use lexical-binding.
(repeat-last-self-insert, repeat-num-input-keys-at-self-insert)
(repeat-undo-count): Remove.
(repeat):
* lisp/progmodes/octave-mod.el (octave-abbrev-start):
* lisp/progmodes/f90.el (f90-abbrev-start):
* lisp/face-remap.el (text-scale-adjust):
* lisp/kmacro.el (kmacro-call-macro): Use set-temporary-overlay-map.

----
 
I use the following idiom in more than one library, to create repeatable
versions of commands - it is very handy.  I use such commands to cycle
through bookmarks, to move forward over thing-at-point things repeatedly,
etc.
 
The idea is this: use `repeat' to create a repeatable command that can be
bound to a key sequence with a prefix key.
 
For example, I have `C-x p n' bound to a command that cycles through
bookmarks, and I have `C-x <down>' bound to a command that repeatedly
moves forward over thing-at-point things of different kinds.
 
Example:
 
(defun repeat-command (command)
  "Repeat COMMAND.  (more explanation needed)"
 (interactive)
 (let ((repeat-previous-repeated-command  command)
       (last-repeatable-command           'repeat))
   (repeat nil)))
 
(defun backward-char-repeat ()
  "Like `backward-char'.  (more explanation needed)"
  (interactive)
  (repeat-command 'backward-char))
 
(define-key ctl-x-map [up] 'backward-char-repeat)
 
Now do C-x <up> <up> <up> <up>... to repeat the command `backward-char'.
In this case, the particular command that is repeated is not very
interesting, and it already has a binding that does not use a prefix key
- a key (`C-b') that is itself repeatable.
 
But you get the idea: the idiom works with any command, and it lets me
put such commands along with other commands on a common prefix for a
given mode.
 
For example, I put `bookmark-map' on a prefix key `C-x p', so all
bookmark commands are available on the same prefix.  This includes
bookmark navigation/cycling commands, which are repeatable.  There are
several kinds of cycling, with different bookmark navigation lists:
 
C-x p f, C-x p b: cycle bookmarks from the current navigation list
                  (which can be any set of bookmarks, in a particular
                  sort order)
 
C-x p n, C-x p p: cycle the bookmarks of the current file/buffer
 
C-x p C-<down>, C-x p C-<up>: cycle highlighted bookmarks in file
 
E.g., C-x p n n n n n n... cycles bookmarks in the current file.
 
This technique works in all Emacs versions since repeat.el was
introduced, which was Emacs 22, I believe.  It works in Emacs 24 also,
up through a build of 2012-04-30.  It does not work in Emacs 24 builds I
have, starting with 2012-05-07.
 
This is an important feature for me.  I really hope it will be fixed.
 
The symptom of the breakage is this: It seems to work at first: it can
be repeated twice (always, it seems), and then I get this when I hit
the repeatable key the third time:
 
Debugger entered--Lisp error: (error "Lisp nesting exceeds `max-lisp-eval-d=
epth'")
  repeat(nil)
  call-interactively(repeat)
  #[0 "..." [ignore repeat-message-function this-command repeat call-intera=
ctively] 2 "\n\n(fn)" nil]()
  call-interactively(#[0 "..." [ignore repeat-message-function this-command=
 repeat call-interactively] 2 "\n\n(fn)" nil])
  repeat(nil)
  call-interactively(repeat)
  #[0 "..." [ignore repeat-message-function this-command repeat call-intera=
ctively] 2 "\n\n(fn)" nil]()
  call-interactively(#[0 "..." [ignore
  repeat-message-function this-command repeat call-interactively] 2
  "\n\n(fn)" nil])
...
  repeat(nil)
  call-interactively(repeat)
  #[0 "..." [ignore repeat-message-function this-command repeat call-intera=
ctively] 2 "\n\n(fn)" nil]()
  call-interactively(#[0 "..." [ignore
  repeat-message-function this-command repeat call-interactively] 2
  "\n\n(fn)" nil] nil nil)
 
Here is the backtrace when I load repeat.el instead of repeat.elc:
 
Debugger entered--Lisp error: (error "Lisp nesting exceeds `max-lisp-eval-d=
epth'")
  (when (eq last-repeatable-command (quote repeat)) (setq last-repeatable-c=
ommand repeat-previous-repeated-command))
  repeat(nil)
  call-interactively(repeat)
  (let ((repeat-message-function fun)) (setq this-command (quote repeat)) (=
call-interactively (quote repeat)))
  (closure ((fun . ignore) (map keymap (down closure #1 nil (interactive) (=
let ((repeat-message-function fun)) (setq this-command (quote repeat)) (cal=
l-interactively (quote repeat))))) (repeat-repeat-char . down) (repeat-arg)=
 t) nil (interactive) (let ((repeat-message-function fun)) (setq this-comma=
nd (quote repeat)) (call-interactively (quote repeat))))()
  call-interactively((closure ((fun . ignore) (map keymap (down closure #1 =
nil (interactive) (let ((repeat-message-function fun)) (setq this-command (=
quote repeat)) (call-interactively (quote repeat))))) (repeat-repeat-char .=
 down) (repeat-arg) t) nil (interactive) (let ((repeat-message-function fun=
)) (setq this-command (quote repeat)) (call-interactively (quote repeat)))))
  (if (or (stringp indirect) (vectorp indirect)) (let ((last-repeatable-com=
mand last-repeatable-command)) (execute-kbd-macro last-repeatable-command))=
 (call-interactively last-repeatable-command))
  (let ((indirect (indirect-function last-repeatable-command))) (if (or (st=
ringp indirect) (vectorp indirect)) (let ((last-repeatable-command last-rep=
eatable-command)) (execute-kbd-macro last-repeatable-command)) (call-intera=
ctively last-repeatable-command)))
  (if (memq last-repeatable-command (quote (exit-minibuffer minibuffer-comp=
lete-and-exit self-insert-and-exit))) (let ((repeat-command (car command-hi=
story))) (repeat-message "Repeating %S" repeat-command) (eval repeat-comman=
d)) (if (null repeat-arg) (repeat-message "Repeating command %S" last-repea=
table-command) (setq current-prefix-arg repeat-arg) (repeat-message "Repeat=
ing command %S %S" repeat-arg last-repeatable-command)) (when (eq last-repe=
atable-command (quote self-insert-command)) (setq last-command-event (char-=
before))) (let ((indirect (indirect-function last-repeatable-command))) (if=
 (or (stringp indirect) (vectorp indirect)) (let ((last-repeatable-command =
last-repeatable-command)) (execute-kbd-macro last-repeatable-command)) (cal=
l-interactively last-repeatable-command))))
  (let ((repeat-repeat-char (if (eq repeat-on-final-keystroke t) last-comma=
nd-event (car (memq last-command-event (listify-key-sequence repeat-on-fina=
l-keystroke)))))) (if (memq last-repeatable-command (quote (exit-minibuffer=
 minibuffer-complete-and-exit self-insert-and-exit))) (let ((repeat-command=
 (car command-history))) (repeat-message "Repeating %S" repeat-command) (ev=
al repeat-command)) (if (null repeat-arg) (repeat-message "Repeating comman=
d %S" last-repeatable-command) (setq current-prefix-arg repeat-arg) (repeat=
-message "Repeating command %S %S" repeat-arg last-repeatable-command)) (wh=
en (eq last-repeatable-command (quote self-insert-command)) (setq last-comm=
and-event (char-before))) (let ((indirect (indirect-function last-repeatabl=
e-command))) (if (or (stringp indirect) (vectorp indirect)) (let ((last-rep=
eatable-command last-repeatable-command)) (execute-kbd-macro last-repeatabl=
e-command)) (call-interactively last-repeatable-command)))) (when repeat-re=
peat-char (set-temporary-overlay-map (let ((map (make-sparse-keymap))) (def=
ine-key map (vector repeat-repeat-char) (if (null repeat-message-function) =
(quote repeat) (let (...) (lambda nil ... ...)))) map))))
  repeat(nil)
  call-interactively(repeat)
  (let ((repeat-message-function fun)) (setq this-command (quote repeat)) (=
call-interactively (quote repeat)))
  (closure ((fun . ignore) (map keymap (down closure #1 nil (interactive) (=
let ((repeat-message-function fun)) (setq this-command (quote repeat)) (cal=
l-interactively (quote repeat))))) (repeat-repeat-char . down) (repeat-arg)=
 t) nil (interactive) (let ((repeat-message-function fun)) (setq this-comma=
nd (quote repeat)) (call-interactively (quote repeat))))()
  call-interactively((closure ((fun . ignore) (map keymap (down closure #1 =
nil (interactive) (let ((repeat-message-function fun)) (setq this-command (=
quote repeat)) (call-interactively (quote repeat))))) (repeat-repeat-char .=
 down) (repeat-arg) t) nil (interactive) (let ((repeat-message-function fun=
)) (setq this-command (quote repeat)) (call-interactively (quote repeat)))))
  (if (or (stringp indirect) (vectorp indirect)) (let ((last-repeatable-com=
mand last-repeatable-command)) (execute-kbd-macro last-repeatable-command))=
 (call-interactively last-repeatable-command))
  (let ((indirect (indirect-function last-repeatable-command))) (if (or (st=
ringp indirect) (vectorp indirect)) (let ((last-repeatable-command last-rep=
eatable-command)) (execute-kbd-macro last-repeatable-command)) (call-intera=
ctively last-repeatable-command)))
  (if (memq last-repeatable-command (quote (exit-minibuffer minibuffer-comp=
lete-and-exit self-insert-and-exit))) (let ((repeat-command (car command-hi=
story))) (repeat-message "Repeating %S" repeat-command) (eval repeat-comman=
d)) (if (null repeat-arg) (repeat-message "Repeating command %S" last-repea=
table-command) (setq current-prefix-arg repeat-arg) (repeat-message "Repeat=
ing command %S %S" repeat-arg last-repeatable-command)) (when (eq last-repe=
atable-command (quote self-insert-command)) (setq last-command-event (char-=
before))) (let ((indirect (indirect-function last-repeatable-command))) (if=
 (or (stringp indirect) (vectorp indirect)) (let ((last-repeatable-command =
last-repeatable-command)) (execute-kbd-macro last-repeatable-command)) (cal=
l-interactively last-repeatable-command))))
  (let ((repeat-repeat-char (if (eq repeat-on-final-keystroke t) last-comma=
nd-event (car (memq last-command-event (listify-key-sequence repeat-on-fina=
l-keystroke)))))) (if (memq last-repeatable-command (quote (exit-minibuffer=
 minibuffer-complete-and-exit self-insert-and-exit))) (let ((repeat-command=
 (car command-history))) (repeat-message "Repeating %S" repeat-command) (ev=
al repeat-command)) (if (null repeat-arg) (repeat-message "Repeating comman=
d %S" last-repeatable-command) (setq current-prefix-arg repeat-arg) (repeat=
-message "Repeating command %S %S" repeat-arg last-repeatable-command)) (wh=
en (eq last-repeatable-command (quote self-insert-command)) (setq last-comm=
and-event (char-before))) (let ((indirect (indirect-function last-repeatabl=
e-command))) (if (or (stringp indirect) (vectorp indirect)) (let ((last-rep=
eatable-command last-repeatable-command)) (execute-kbd-macro last-repeatabl=
e-command)) (call-interactively last-repeatable-command)))) (when repeat-re=
peat-char (set-temporary-overlay-map (let ((map (make-sparse-keymap))) (def=
ine-key map (vector repeat-repeat-char) (if (null repeat-message-function) =
(quote repeat) (let (...) (lambda nil ... ...)))) map))))
 
...
  repeat(nil)
  call-interactively(repeat)
  (let ((repeat-message-function fun)) (setq this-command (quote repeat)) (=
call-interactively (quote repeat)))
  (closure ((fun . ignore) (map keymap (down closure #1 nil (interactive) (=
let ((repeat-message-function fun)) (setq this-command (quote repeat)) (cal=
l-interactively (quote repeat))))) (repeat-repeat-char . down) (repeat-arg)=
 t) nil (interactive) (let ((repeat-message-function fun)) (setq this-comma=
nd (quote repeat)) (call-interactively (quote repeat))))()
  call-interactively((closure ((fun . ignore) (map keymap (down closure #1 =
nil (interactive) (let ((repeat-message-function fun)) (setq this-command (=
quote repeat)) (call-interactively (quote repeat))))) (repeat-repeat-char .=
 down) (repeat-arg) t) nil (interactive) (let ((repeat-message-function fun=
)) (setq this-command (quote repeat)) (call-interactively (quote repeat))))=
 nil nil)
 
As you no doubt know, it is very difficult to debug uses of repeat.el.
It is impossible to use the debugger, and even printing `message's is
problematic.  Hopefully this info will help.  You should be able to
reproduce the problem using the code above.  If you try it in an older
version you will see what it should do.
 
In GNU Emacs 24.1.50.1 (i386-mingw-nt5.1.2600)
 of 2012-08-13 on MARVIN
Bzr revision: 109584 monnier@iro.umontreal.ca-20120813141247-76irjqslrfncn3=
0u
Windowing system distributor `Microsoft Corp.', version 5.1.2600
Configured using:
 `configure --with-gcc (4.6) --no-opt --enable-checking --cflags
 -ID:/devel/emacs/libs/libXpm-3.5.8/include
 -ID:/devel/emacs/libs/libXpm-3.5.8/src
 -ID:/devel/emacs/libs/libpng-dev_1.4.3-1/include
 -ID:/devel/emacs/libs/zlib-dev_1.2.5-2/include
 -ID:/devel/emacs/libs/giflib-4.1.4-1/include
 -ID:/devel/emacs/libs/jpeg-6b-4/include
 -ID:/devel/emacs/libs/tiff-3.8.2-1/include
 -ID:/devel/emacs/libs/gnutls-3.0.9/include
 -ID:/devel/emacs/libs/libiconv-1.13.1-1-dev/include
 -ID:/devel/emacs/libs/libxml2-2.7.8/include/libxml2'
 






^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#12232: 24.1.50; regression: repeat.el commit 2012-05-05 breaks repeating commands
  2012-08-19  2:55 bug#12232: 24.1.50; regression: repeat.el commit 2012-05-05 breaks repeating commands Drew Adams
@ 2012-08-24 14:57 ` Drew Adams
  2012-09-03 15:33   ` Drew Adams
  0 siblings, 1 reply; 11+ messages in thread
From: Drew Adams @ 2012-08-24 14:57 UTC (permalink / raw)
  To: 12232

ping.

> I believe this regression was introduced by the following commit:
> Stefan Monnier2012-05-05 02:50:20Revision ID: 
> monnier@iro.umontreal.ca-2012=
> 0505025020-ihjvoqehkrxkfxw8
>  
> Use set-temporary-overlay-map.
> * lisp/repeat.el: Use lexical-binding.
> (repeat-last-self-insert, repeat-num-input-keys-at-self-insert)
> (repeat-undo-count): Remove.
> (repeat):






^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#12232: 24.1.50; regression: repeat.el commit 2012-05-05 breaks repeating commands
  2012-08-24 14:57 ` Drew Adams
@ 2012-09-03 15:33   ` Drew Adams
  2012-09-04  3:53     ` Drew Adams
  0 siblings, 1 reply; 11+ messages in thread
From: Drew Adams @ 2012-09-03 15:33 UTC (permalink / raw)
  To: 12232

ping.

Stefan, could you please take a look at this?

I diff'd the change you made on 2012-05-05, but the code and the change is not
easy (for me) to fathom.

This comment in the version of repeat.el before your change might be pertinent,
as it refers to a symptom (nesting exceeding `max-lisp-eval-depth') similar to
what I am seeing now:

      ;; A simple recursion here gets into trouble with max-lisp-eval-depth
      ;; on long sequences of repetitions of a command like `forward-word'
      ;; (only 32 repetitions are possible given the default value of 200 for
      ;; max-lisp-eval-depth), but if I now locally disable the repeat char I
      ;; can iterate indefinitely here around a single level of recursion.

Thx - Drew

> ping.
> 
> > I believe this regression was introduced by the following commit:
> > Stefan Monnier2012-05-05 02:50:20Revision ID: 
> > monnier@iro.umontreal.ca-2012=
> > 0505025020-ihjvoqehkrxkfxw8
> >  
> > Use set-temporary-overlay-map.
> > * lisp/repeat.el: Use lexical-binding.
> > (repeat-last-self-insert, repeat-num-input-keys-at-self-insert)
> > (repeat-undo-count): Remove.
> > (repeat):
...
> >
Debugger entered--Lisp error: (error "Lisp nesting exceeds `max-lisp-eval-d=
epth'")
  repeat(nil)
  call-interactively(repeat)
  #[0 "..." [ignore repeat-message-function this-command repeat call-intera=
ctively] 2 "\n\n(fn)" nil]()
  call-interactively(#[0 "..." [ignore repeat-message-function this-command=
 repeat call-interactively] 2 "\n\n(fn)" nil])
  repeat(nil)
  call-interactively(repeat)
  #[0 "..." [ignore repeat-message-function this-command repeat call-intera=
ctively] 2 "\n\n(fn)" nil]()
  call-interactively(#[0 "..." [ignore
  repeat-message-function this-command repeat call-interactively] 2
  "\n\n(fn)" nil])
...
  repeat(nil)
  call-interactively(repeat)
...






^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#12232: 24.1.50; regression: repeat.el commit 2012-05-05 breaks repeating commands
  2012-09-03 15:33   ` Drew Adams
@ 2012-09-04  3:53     ` Drew Adams
  2012-09-16 23:31       ` Drew Adams
  2012-10-23 16:58       ` Stefan Monnier
  0 siblings, 2 replies; 11+ messages in thread
From: Drew Adams @ 2012-09-04  3:53 UTC (permalink / raw)
  To: 12232

> Stefan, could you please take a look at this?
> 
> This comment in the version of repeat.el before your change 
> might be pertinent, as it refers to a symptom (nesting exceeding 
> `max-lisp-eval-depth') similar to what I am seeing now:
> 
>  ;; A simple recursion here gets into trouble with 
>  ;; max-lisp-eval-depth on long sequences of repetitions
>  ;; of a command like `forward-word' (only 32 repetitions
>  ;; are possible given the default value of 200 for
>  ;; max-lisp-eval-depth), but if I now locally disable 
>  ;; the repeat char I can iterate indefinitely here
>  ;; around a single level of recursion.

I did not send quite the correct code to repro the problem.
The problem arises when I add this binding to the let:

 (repeat-message-function 'ignore)

I.e.,

(defun repeat-command (command)
  "Repeat COMMAND."
 (interactive)
 (let ((repeat-previous-repeated-command  command)
       (repeat-message-function           'ignore) ; <=====
       (last-repeatable-command           'repeat))
   (repeat nil)))
 
(defun backward-char-repeat ()
  "Like `backward-char'..."
  (interactive)
  (repeat-command 'backward-char))
 
(define-key ctl-x-map [up] 'backward-char-repeat)

The binding of `repeat-message-function' to `ignore' is to suppress a repeat
message.  If I need to do that differently from now on, please advise how - IOW,
how to work around this `max-lisp-eval-depth' bug.  Thx.






^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#12232: 24.1.50; regression: repeat.el commit 2012-05-05 breaks repeating commands
  2012-09-04  3:53     ` Drew Adams
@ 2012-09-16 23:31       ` Drew Adams
  2012-09-24  0:48         ` Drew Adams
  2012-10-23 16:58       ` Stefan Monnier
  1 sibling, 1 reply; 11+ messages in thread
From: Drew Adams @ 2012-09-16 23:31 UTC (permalink / raw)
  To: 12232

> > Stefan, could you please take a look at this?
> > 
> > This comment in the version of repeat.el before your change 
> > might be pertinent, as it refers to a symptom (nesting exceeding 
> > `max-lisp-eval-depth') similar to what I am seeing now:
> > 
> >  ;; A simple recursion here gets into trouble with 
> >  ;; max-lisp-eval-depth on long sequences of repetitions
> >  ;; of a command like `forward-word' (only 32 repetitions
> >  ;; are possible given the default value of 200 for
> >  ;; max-lisp-eval-depth), but if I now locally disable 
> >  ;; the repeat char I can iterate indefinitely here
> >  ;; around a single level of recursion.
> 
> The problem arises when I add this binding to the let:
>  (repeat-message-function 'ignore)
> 
> I.e.,
> (defun repeat-command (command)
>   "Repeat COMMAND."
>  (interactive)
>  (let ((repeat-previous-repeated-command  command)
>        (repeat-message-function           'ignore) ; <=====
>        (last-repeatable-command           'repeat))
>    (repeat nil)))
>  
> (defun backward-char-repeat ()
>   "Like `backward-char'..."
>   (interactive)
>   (repeat-command 'backward-char))
>  
> (define-key ctl-x-map [up] 'backward-char-repeat)
> 
> The binding of `repeat-message-function' to `ignore' is to 
> suppress a repeat message.  If I need to do that differently
> from now on, please advise how - IOW, how to work around
> this `max-lisp-eval-depth' bug.  Thx.


ping







^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#12232: 24.1.50; regression: repeat.el commit 2012-05-05 breaks repeating commands
  2012-09-16 23:31       ` Drew Adams
@ 2012-09-24  0:48         ` Drew Adams
  2012-10-19  1:54           ` Drew Adams
  0 siblings, 1 reply; 11+ messages in thread
From: Drew Adams @ 2012-09-24  0:48 UTC (permalink / raw)
  To: 12232

> The problem arises when I add this binding
> (repeat-message-function 'ignore)
> to suppress a repeat message.
>
> If I need to do that differently from now on, please advise
> how - IOW, how to work around this `max-lisp-eval-depth' bug.
> Thx.

ping

Note that in bug #6256, you said that no changes would be needed to code such as
I've shown because of the new implementation that uses
`set-temporary-overlay-map'.

That was true up until the change you made on 2012-05-05.  Please advise how to
handle this new problem.  Thx.






^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#12232: 24.1.50; regression: repeat.el commit 2012-05-05 breaks repeating commands
  2012-09-24  0:48         ` Drew Adams
@ 2012-10-19  1:54           ` Drew Adams
  2012-10-19 14:16             ` Stefan Monnier
  0 siblings, 1 reply; 11+ messages in thread
From: Drew Adams @ 2012-10-19  1:54 UTC (permalink / raw)
  To: 12232

> > The problem arises when I add this binding
> > (repeat-message-function 'ignore)
> > to suppress a repeat message.
> >
> > If I need to do that differently from now on, please advise
> > how - IOW, how to work around this `max-lisp-eval-depth' bug.
> > Thx.
> 
> ping
> 
> Note that in bug #6256, you said that no changes would be 
> needed to code such as
> I've shown because of the new implementation that uses
> `set-temporary-overlay-map'.
> 
> That was true up until the change you made on 2012-05-05.  
> Please advise how to handle this new problem.  Thx.

ping

Please respond to this bug report.
The regression was introduced 6 months ago.
Thx.






^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#12232: 24.1.50; regression: repeat.el commit 2012-05-05 breaks repeating commands
  2012-10-19  1:54           ` Drew Adams
@ 2012-10-19 14:16             ` Stefan Monnier
  2012-10-19 14:32               ` Drew Adams
  0 siblings, 1 reply; 11+ messages in thread
From: Stefan Monnier @ 2012-10-19 14:16 UTC (permalink / raw)
  To: Drew Adams; +Cc: 12232

severity 12232 important
thanks

> The regression was introduced 6 months ago.

Yes, I need to fix it before the release, I know.


        Stefan






^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#12232: 24.1.50; regression: repeat.el commit 2012-05-05 breaks repeating commands
  2012-10-19 14:16             ` Stefan Monnier
@ 2012-10-19 14:32               ` Drew Adams
  0 siblings, 0 replies; 11+ messages in thread
From: Drew Adams @ 2012-10-19 14:32 UTC (permalink / raw)
  To: 'Stefan Monnier'; +Cc: 12232

> severity 12232 important
> thanks
> 
> > The regression was introduced 6 months ago.
> 
> Yes, I need to fix it before the release, I know.

Thanks very much.  That reassurance is what I was looking for.






^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#12232: 24.1.50; regression: repeat.el commit 2012-05-05 breaks repeating commands
  2012-09-04  3:53     ` Drew Adams
  2012-09-16 23:31       ` Drew Adams
@ 2012-10-23 16:58       ` Stefan Monnier
  2012-10-23 17:08         ` Drew Adams
  1 sibling, 1 reply; 11+ messages in thread
From: Stefan Monnier @ 2012-10-23 16:58 UTC (permalink / raw)
  To: Drew Adams; +Cc: 12232-done

> (defun repeat-command (command)
>   "Repeat COMMAND."
>  (interactive)
>  (let ((repeat-previous-repeated-command  command)
>        (repeat-message-function           'ignore) ; <=====
>        (last-repeatable-command           'repeat))
>    (repeat nil)))
 
Indeed, that was the trick to trigger the bug.  Should be fixed now,
thanks,


        Stefan





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#12232: 24.1.50; regression: repeat.el commit 2012-05-05 breaks repeating commands
  2012-10-23 16:58       ` Stefan Monnier
@ 2012-10-23 17:08         ` Drew Adams
  0 siblings, 0 replies; 11+ messages in thread
From: Drew Adams @ 2012-10-23 17:08 UTC (permalink / raw)
  To: 'Stefan Monnier'; +Cc: 12232-done

> Indeed, that was the trick to trigger the bug.  Should be fixed now,
> thanks,

Thanks very much for the fix.  Sorry for the insistence.  It wasn't clear to me
that anyone had even noticed the bug report, of if noticed that it was
acknowledged to be a bug.






^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2012-10-23 17:08 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-19  2:55 bug#12232: 24.1.50; regression: repeat.el commit 2012-05-05 breaks repeating commands Drew Adams
2012-08-24 14:57 ` Drew Adams
2012-09-03 15:33   ` Drew Adams
2012-09-04  3:53     ` Drew Adams
2012-09-16 23:31       ` Drew Adams
2012-09-24  0:48         ` Drew Adams
2012-10-19  1:54           ` Drew Adams
2012-10-19 14:16             ` Stefan Monnier
2012-10-19 14:32               ` Drew Adams
2012-10-23 16:58       ` Stefan Monnier
2012-10-23 17:08         ` Drew Adams

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).