Subject: bug#23555: 24.5; Keyboard macros unexpectedly depend on frame size

From: Eli Zaretskii <[email-masked]>
Date: Mon, 16 May 2016 21:53:53 +0300

> From: Markus Triska <[email-masked]>
> Date: Sun, 15 May 2016 14:10:59 +0200
> 
> Next, simply execute the macro, repeatedly, with:
> 
>     C-x e e e e
> 
> After this, you will see that the fourth <pre> block is unexpectedly
> changed to:
> 
>     <pre>
> 
> 
> 
> 
> 
>                 ).
>     </pre>
> 
> whereas the expected result it:
> 
>     <pre>
> mi2_safe(g(G)) :-
>         (   safe_goal(G) ->
>             mi_clause(G, Body),
>             mi2_safe(Body)
>         ;   throw(cannot_execute(G))
>         ).
>     </pre>
> 
> 
> However, if I revert all changes and simply enlarge the frame, or try
> the exact same sequence after removing the filler text between lines 33
> and 52, or try the macro on the fourth snippet while the <pre> block is
> completely in view, everything works exactly as expected.
> 
> Thus, implicit scrolling and the frame size may unexpectedly interact
> with this keyboard macro.

This is related to the C-n behavior when executing macros, the same
problem which causes bug#23551 and #13452.  If you set
line-move-visual to nil in the buffer where you run the macro, the
problem disappears.

Thanks.