neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 9955209afbedd00907a558a6d7d98a643c55455a
parent d73bf3138a802bb6c1c654cd913d4e91932287f8
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sun,  3 Apr 2022 22:53:37 +0800

fix(substitute): properly check for empty command line

Diffstat:
Msrc/nvim/ex_cmds.c | 17++++++++++-------
Msrc/nvim/getchar.c | 2--
2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c @@ -3860,19 +3860,22 @@ static buf_T *do_sub(exarg_T *eap, proftime_T timeout, bool do_buf_event, handle prompt = xmallocz(ec + 1); memset(prompt, ' ', sc); memset(prompt + sc, '^', ec - sc + 1); - resp = (char_u *)getcmdline_prompt(NUL, prompt, 0, EXPAND_NOTHING, + resp = (char_u *)getcmdline_prompt(-1, prompt, 0, EXPAND_NOTHING, NULL, CALLBACK_NONE); msg_putchar('\n'); xfree(prompt); if (resp != NULL) { typed = *resp; xfree(resp); - // When ":normal" runs out of characters we get - // an empty line. Use "q" to get out of the - // loop. - if (ex_normal_busy && typed == NUL) { - typed = 'q'; - } + } else { + // getcmdline_prompt() returns NULL if there is no command line to return. + typed = NUL; + } + // When ":normal" runs out of characters we get + // an empty line. Use "q" to get out of the + // loop. + if (ex_normal_busy && typed == NUL) { + typed = 'q'; } } else { char_u *orig_line = NULL; diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c @@ -2330,8 +2330,6 @@ static int vgetorpeek(bool advance) // cmdline window. if (p_im && (State & INSERT)) { c = Ctrl_L; - } else if ((State & CMDLINE) && exmode_active) { - c = '\n'; } else if ((State & CMDLINE) || (cmdwin_type > 0 && tc == ESC)) { c = Ctrl_C; } else {