Subject: bug#24124: emacs terminal escape command error

From: Eli Zaretskii <[email-masked]>
Date: Mon, 01 Aug 2016 18:18:02 +0300

> From: modem <[email-masked]>
> Date: Mon, 1 Aug 2016 16:34:43 +0200
> 
> When I put emacs in background (^z) and then in foreground again ("fg",
> bash) sometime emacs will not reset properly the terminal and I won't be
> able to scroll up (using PageUp/PageDown).
> 
> After debugging the issue with a tmux developer, we tracked it down to
> emacs and believe this is an emacs issue with terminal handling when
> going back from background mode.
> 
> I am attaching a snippet of the technical detail about this issue :
> 
> >  When you ^Z, tmux gets 112 bytes in all cases:
> >
> >  input_parse: %0 ground, 40 bytes:
> \n\n\033[K\033[?1l\033>\033[34h\033[?25h\033[?1049l\033[39;49m\r
> >  input_parse: %0 ground, 72 bytes: \r\n[1]+  Stopped
> emacs large_text_file.txt\r\nroot@milu:~#
> >
> >  \033[?1049l is rmcup which exits cursor positioning (alternate
> screen) mode.
> >
> >  Then when you type fg, it gets:
> >
> >  input_parse: %0 ground, 694 bytes:
> \033[?1049h\033[34l\033[?1h\033=\033[24;1H\033[K\033[H\033[?25l\033[3mFile
> Edit Options Buffers ...
> >
> >  \033[?1049h is smcup which turns it on again.
> >
> >  But sometimes, it gets:
> >
> >  input_parse: %0 ground, 674 bytes:
> \033[24;1H\033[K\033[H\033[?25l\033[3mFile Edit Options Buffers ...
> >
> >  Where emacs is not sending \033[1049h, or in fact any of the smcup,
> >  cvvis, smkx sequence it normally sends.

Probably because Emacs tries to optimize the cursor motion commands
for minimal cost.  See the code of the cmgoto function (in cm.c in
Emacs sources).

But you didn't tell what terminfo entry is used by Emacs on your
system, and didn't tell what the above terminal commands do on your
terminal, so it's hard to proceed in investigating this issue.

Thanks.