On Tue, Nov 27, 2018 at 09:56:15AM +0100, Vincent Lefevre wrote:
> On 2018-11-26 20:38:37 -0500, Thomas Dickey wrote:
> > On Sun, Nov 25, 2018 at 12:08:03AM +0100, Vincent Lefevre wrote:
> > > With zsh, one can reproduce the issue with:
> > >
> > > $ xterm -e zsh -f
> >
> > If you added a "-l" option, that would turn on xterm's logging feature
> >
> > xterm -l -e zsh -f
> >
> > which could be interesting.
>
> Here's what the log file gives (output with hd):
>
> 00000000 1b 5b 31 6d 1b 5b 37 6d 25 1b 5b 32 37 6d 1b 5b |.[1m.[7m%.[27m.[|
> 00000010 31 6d 1b 5b 6d 20 20 20 20 20 20 20 20 20 20 20 |1m.[m |
> 00000020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
> *
> 00000060 20 20 20 20 0d 20 0d 0d 1b 5b 6d 1b 5b 32 37 6d | . ...[m.[27m|
> 00000070 1b 5b 32 34 6d 1b 5b 4a 7a 69 72 61 25 20 1b 5b |.[24m.[Jzira% .[|
> 00000080 4b 1b 5b 3f 32 30 30 34 68 62 08 62 69 6e 64 6b |K.[?2004hb.bindk|
> 00000090 65 79 20 2d 65 1b 5b 3f 32 30 30 34 6c 0d 0d 0a |ey -e.[?2004l...|
> 000000a0 1b 5b 31 6d 1b 5b 37 6d 25 1b 5b 32 37 6d 1b 5b |.[1m.[7m%.[27m.[|
> 000000b0 31 6d 1b 5b 6d 20 20 20 20 20 20 20 20 20 20 20 |1m.[m |
> 000000c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
> *
> 00000100 20 20 20 20 0d 20 0d 0d 1b 5b 6d 1b 5b 32 37 6d | . ...[m.[27m|
> 00000110 1b 5b 32 34 6d 1b 5b 4a 7a 69 72 61 25 20 1b 5b |.[24m.[Jzira% .[|
> 00000120 4b 1b 5b 3f 32 30 30 34 68 07 7e |K.[?2004h.~|
> 0000012b
>
> The 07 7e is what the exec-formatted generates (the Ctrl-G doesn't
> seem to have any effect in zsh).
exec-formatted doesn't send a ^G, it simply does an execvp() for the arguments.
The escape "[?2004h" is turning on bracketed paste (which I asked about).
> If after "binkey -e", I type "echo '" then Ctrl-V, I get:
>
> 00000120 4b 1b 5b 3f 32 30 30 34 68 65 08 65 63 68 6f 20 |K.[?2004he.echo |
> 00000130 27 1b 5b 37 6d 5e 5b 1b 5b 32 37 6d 5b 32 30 31 |'.[7m^[.[27m[201|
> 00000140 7e |~|
>
> So, actually, the effect of exec-formatted is more complex than just
> a tilde (or Ctrl-G tilde).
>
> > But the bug report deals with programs run from xterm, which the
> > shell wouldn't see -- unless it's reading xterm's output in some
> > way.
>
> The shell sees the tilde, as if it were entered with the keyboard.
The shell is using bracketed paste, and is reading xterm's output,
as I suggested.
> Note that I can replace
>
> exec-formatted("browser %s", PRIMARY)
>
> by
>
> exec-formatted("/bin/true", PRIMARY)
>
> and I get the same behavior in xterm, i.e. the command doesn't matter.
so pasting works fairly consistently :-)
> > > then in the xterm:
> > >
> > > zira% bindkey -e
> >
> > Perhaps "zira%" is your shell prompt.
>
> Yes, the hostname follwed by "%" is the default zsh prompt.
>
> > What does "bindkey -e" have to do with exec-formatted?
>
> "bindkey -e" selects Emacs editing mode. It just makes the issue
> visible. But with the "echo '" + Ctrl-V test, the same issue is
> reproducible without needing "bindkey -e":
>
> 00000000 1b 5b 31 6d 1b 5b 37 6d 25 1b 5b 32 37 6d 1b 5b |.[1m.[7m%.[27m.[|
> 00000010 31 6d 1b 5b 6d 20 20 20 20 20 20 20 20 20 20 20 |1m.[m |
> 00000020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
> *
> 00000060 20 20 20 20 0d 20 0d 0d 1b 5b 6d 1b 5b 32 37 6d | . ...[m.[27m|
> 00000070 1b 5b 32 34 6d 1b 5b 4a 7a 69 72 61 25 20 1b 5b |.[24m.[Jzira% .[|
> 00000080 4b 1b 5b 3f 32 30 30 34 68 65 08 65 63 68 6f 20 |K.[?2004he.echo |
> 00000090 27 5e 08 1b 5b 37 6d 5e 1b 5b 37 6d 5b 1b 5b 32 |'^..[7m^.[7m[.[2|
> 000000a0 37 6d 5b 32 30 31 7e |7m[201~|
> 000000a7
That looks as expected, if you've got two different things writing to
the terminal at the same time:
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Bracketed-Paste-Mode
but the execvp command by itself doesn't do the writing
> The effect of exec-formatted is what appears after "27 5e 08".
--
Thomas E. Dickey <dickey@invisible-island.net>
https://invisible-island.net
ftp://ftp.invisible-island.net
Attachment:
signature.asc
Description: Digital signature