"Phillip Wood via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > I have added a new patch to the beginning of the series that fixes a case > where we did not call restore_term() when leaving read_key_without_echo(). I > have also reworded the commit message to patch 2 as SIGINT is actually > ignored while the editor is running (we should probably change that code to > use wait_after_clean instead). All patches looked good. Thanks. Let's mark it for 'next' and below soonish. > > Cover letter for V1: > > Fix a couple of bugs I noticed when using the builtin "add -p" with > interactive.singlekey=true. The first patch is a general fix for the > terminal save/restore functionality which forgot to call sigchain_pop() when > it restored the terminal. The last two fix reading single keys in > non-canonical mode by making sure we wait for an initial key press and only > read one byte at a time from the underlying file descriptor. > > Note that these are untested on windows beyond our CI compiling them > > Phillip Wood (4): > terminal: always reset terminal when reading without echo > terminal: pop signal handler when terminal is restored > terminal: set VMIN and VTIME in non-canonical mode > add -p: disable stdin buffering when interactive.singlekey is set > > add-interactive.c | 2 ++ > compat/terminal.c | 29 +++++++++++++++++++++++------ > compat/terminal.h | 8 ++++++++ > 3 files changed, 33 insertions(+), 6 deletions(-) > > > base-commit: b80121027d1247a0754b3cc46897fee75c050b44 > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1146%2Fphillipwood%2Fwip%2Fadd-p-vmin-v2-v2 > Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1146/phillipwood/wip/add-p-vmin-v2-v2 > Pull-Request: https://github.com/gitgitgadget/git/pull/1146 > > Range-diff vs v1: > > -: ----------- > 1: 45609d61afc terminal: always reset terminal when reading without echo > 1: 9a3c2cea0f9 ! 2: 0020953f1cf terminal: pop signal handler when terminal is restored > @@ Commit message > external caller was removed by e3f7e01b50 ("Revert "editor: save and > reset terminal after calling EDITOR"", 2021-11-22). Any future callers > of save_term() should benefit from having the signal handler set up > - for them. For example if we reinstate the code to protect against an > - editor failing to restore the terminal attributes we would want that > - code to restore the terminal attributes on SIGINT. (As an aside > - run_command() installs a signal handler that waits for the child > - before re-raising the signal so we would be guaranteed to restore the > - settings after the child has exited.) > + for them. > > Signed-off-by: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> > > 2: 02009172e08 = 3: 7ae9b236554 terminal: set VMIN and VTIME in non-canonical mode > 3: 6d8423b6e1e = 4: 39b061a471b add -p: disable stdin buffering when interactive.singlekey is set