0
0
mirror of https://github.com/vim/vim.git synced 2025-10-16 07:24:23 -04:00

patch 9.1.1853: Ctrl-F and Ctrl-B at more prompt not working with key protocol

Problem:  Ctrl-F and Ctrl-B at more prompt not working with kitty
          keyboard protocol or modifyOtherKeys (after v9.1.1849).
Solution: Call merge_modifyOtherKeys() in get_keystroke() (zeertzjq).

closes: #18558

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
zeertzjq
2025-10-13 19:02:10 +00:00
committed by Christian Brabandt
parent a55dc8c57c
commit 6622dc2ded
3 changed files with 19 additions and 1 deletions

View File

@@ -871,6 +871,7 @@ get_keystroke(void)
int save_mapped_ctrl_c = mapped_ctrl_c; int save_mapped_ctrl_c = mapped_ctrl_c;
int waited = 0; int waited = 0;
mod_mask = 0;
mapped_ctrl_c = FALSE; // mappings are not used here mapped_ctrl_c = FALSE; // mappings are not used here
for (;;) for (;;)
{ {
@@ -974,7 +975,7 @@ get_keystroke(void)
vim_free(buf); vim_free(buf);
mapped_ctrl_c = save_mapped_ctrl_c; mapped_ctrl_c = save_mapped_ctrl_c;
return n; return merge_modifyOtherKeys(n, &mod_mask);
} }
// For overflow detection, add a digit safely to an int value. // For overflow detection, add a digit safely to an int value.

View File

@@ -209,6 +209,7 @@ func Test_message_more()
CheckRunVimInTerminal CheckRunVimInTerminal
let buf = RunVimInTerminal('', {'rows': 6}) let buf = RunVimInTerminal('', {'rows': 6})
let chan = buf->term_getjob()->job_getchannel()
call term_sendkeys(buf, ":call setline(1, range(1, 100))\n") call term_sendkeys(buf, ":call setline(1, range(1, 100))\n")
call term_sendkeys(buf, ":%pfoo\<C-H>\<C-H>\<C-H>#") call term_sendkeys(buf, ":%pfoo\<C-H>\<C-H>\<C-H>#")
@@ -272,6 +273,19 @@ func Test_message_more()
call term_sendkeys(buf, 'u') call term_sendkeys(buf, 'u')
call WaitForAssert({-> assert_equal(' 79 79', term_getline(buf, 5))}) call WaitForAssert({-> assert_equal(' 79 79', term_getline(buf, 5))})
" Test <C-F> and <C-B> with different keyboard protocols.
for [ctrl_f, ctrl_b] in [
\ [GetEscCodeCSI27('f', 5), GetEscCodeCSI27('b', 5)],
\ [GetEscCodeCSI27('F', 5), GetEscCodeCSI27('B', 5)],
\ [GetEscCodeCSIu('f', 5), GetEscCodeCSIu('b', 5)],
\ [GetEscCodeCSIu('F', 5), GetEscCodeCSIu('B', 5)],
\ ]
call ch_sendraw(chan, ctrl_f)
call WaitForAssert({-> assert_equal(' 84 84', term_getline(buf, 5))})
call ch_sendraw(chan, ctrl_b)
call WaitForAssert({-> assert_equal(' 79 79', term_getline(buf, 5))})
endfor
" Up all the way with 'g'. " Up all the way with 'g'.
call term_sendkeys(buf, 'g') call term_sendkeys(buf, 'g')
call WaitForAssert({-> assert_equal(' 4 4', term_getline(buf, 5))}) call WaitForAssert({-> assert_equal(' 4 4', term_getline(buf, 5))})
@@ -285,6 +299,7 @@ func Test_message_more()
call WaitForAssert({-> assert_equal('Press ENTER or type command to continue', term_getline(buf, 6))}) call WaitForAssert({-> assert_equal('Press ENTER or type command to continue', term_getline(buf, 6))})
call term_sendkeys(buf, 'f') call term_sendkeys(buf, 'f')
call WaitForAssert({-> assert_equal('100 100', term_getline(buf, 5))}) call WaitForAssert({-> assert_equal('100 100', term_getline(buf, 5))})
call WaitForAssert({-> assert_equal('Press ENTER or type command to continue', term_getline(buf, 6))})
call term_sendkeys(buf, "\<C-F>") call term_sendkeys(buf, "\<C-F>")
call WaitForAssert({-> assert_equal('100 100', term_getline(buf, 5))}) call WaitForAssert({-> assert_equal('100 100', term_getline(buf, 5))})
call WaitForAssert({-> assert_equal('Press ENTER or type command to continue', term_getline(buf, 6))}) call WaitForAssert({-> assert_equal('Press ENTER or type command to continue', term_getline(buf, 6))})

View File

@@ -729,6 +729,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1853,
/**/ /**/
1852, 1852,
/**/ /**/