[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.
> >
>