bug-bash
[Top][All Lists]
Advanced

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

Re: fg via keybind modifies tty settings


From: alex xmb sw ratchev
Subject: Re: fg via keybind modifies tty settings
Date: Sun, 22 Sep 2024 11:45:23 +0200

happened here with nvim and termux
same as description

On Sunday, September 22, 2024, Martin D Kealey <martin@kurahaupo.gen.nz>
wrote:

> Does this happen with any raw-mode application, or just vim?
>
> When using readline in Emacs mode, the terminal is necessarily in raw mode.
>
> I suspect what you're seeing is that 'fg' bound to a key is bypasses the
> normal "exit readline" that would restore the settings. Then when vim exits
> or is suspended, Bash notices that it's still in raw mode (-icanon), but
> doesn't otherwise know the details of exactly how you want it cooked
> (+icanon but what else?).
>
> I'll check on this when I get back to my PC.
>
> -Martin
>
> On Sat, 21 Sep 2024, 09:23 David Moberg, <kaddkaka@gmail.com> wrote:
>
> > Configuration Information [Automatically generated, do not change]:
> > Machine: x86_64
> > OS: linux-gnu
> > Compiler: gcc
> > Compilation CFLAGS: -g -O2 -fno-omit-frame-pointer
> > -mno-omit-leaf-frame-pointer -flto=auto -ffat-lto-objects
> > -fstack-protector-strong -fstack-clash-protection -Wformat
> > -Werror=format-security -fcf-protection -Wall
> > uname output: Linux Tugge 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC
> > Fri Aug 30 12:02:04 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
> > Machine Type: x86_64-pc-linux-gnu
> >
> > Bash Version: 5.2
> > Patch Level: 21
> > Release Status: release
> >
> > Description:
> >         When a process/job is suspended, foregrounded via ctrl-a as a
> > keybinding for fg, and then
> >         suspended again, the tty will be in a surprising state where no
> > input is seen (-echo)
> >
> > Repeat-By:
> > |       bind -x '"\C-a":"fg"'   # bind C-A to perform fg
> >         vim                     #
> >         <ctrl-z>                # Terminal still works
> >         stty -a > working.txt   # store tty settings
> >         <ctrl-a>                # Put vim in foreground again
> >         :q                      # Quit vim
> >         vim                     # Start a new vim session (*)
> >         <ctrl-z>                # Terminal is broken
> >         stty -a > broken.txt    # store tty settings
> >         #type text and no echo
> >
> >         Dumping the tty configuration before and after the broken state
> > reveals this diff after the
> >         second vim command above (*) has been executed:
> >
> >         ```console
> >         $ diff working.txt broken.txt
> >         4c4
> >         < werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
> >         ---
> >         > werase = ^W; lnext = <undef>; discard = <undef>; min = 1; time
> =
> > 0;
> >         6c6
> >         < -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr
> icrnl
> > ixon -ixoff
> >         ---
> >         > -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr
> > -icrnl ixon -ixoff
> >         9c9
> >         < isig icanon iexten echo echoe echok -echonl -noflsh -xcase
> > -tostop -echoprt
> >         ---
> >         > isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase
> > -tostop -echoprt
> >         ```
> >
> >         The tty can get back into working state by running `stty sane`.
> >
> >         By redoing the <start vim> <ctrl-z> <ctrl-a> <quit vim> <stty
> sane>
> > it can be seen that the
> >         terminal will only be broken after every second invocation.
> >
> >         Similar issue(?) in fish that has been resolved:
> >                 https://github.com/fish-shell/fish-shell/issues/2114
> >
> >         I have experienced the same weirdness with other applications
> than
> > vim, for example python3.
> >         I have experienced the issue several terminals: Wezterm, xfce-4
> > terminal.
> >
>


reply via email to

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