diff options
author | Sam-programs <None> | 2023-11-27 22:22:51 +0100 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-11-27 22:22:51 +0100 |
commit | d1c3ef1f47c87d1da056c56564e1985fe6f2931d (patch) | |
tree | 7bd06643fb0d918777d19f097d33275e160b4ccf /src | |
parent | 5c233437701e4a40327c73559cdda345471229b4 (diff) |
patch 9.0.2133: Cannot detect overstrike mode in Cmdline modev9.0.2133
Problem: Cannot detect overstrike mode in Cmdline mode
Solution: Make mode() return "cr" for overstrike
closes: #13569
Signed-off-by: Sam-programs <None>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/ex_getln.c | 7 | ||||
-rw-r--r-- | src/misc1.c | 2 | ||||
-rw-r--r-- | src/testdir/dumps/Test_mode_1.dump | 12 | ||||
-rw-r--r-- | src/testdir/dumps/Test_mode_2.dump | 12 | ||||
-rw-r--r-- | src/testdir/test_functions.vim | 16 | ||||
-rw-r--r-- | src/version.c | 2 |
6 files changed, 49 insertions, 2 deletions
diff --git a/src/ex_getln.c b/src/ex_getln.c index 8f0be52088..52f4feb3f0 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -2050,6 +2050,9 @@ getcmdline_int( #ifdef CURSOR_SHAPE ui_cursor_shape(); // may show different cursor shape #endif + may_trigger_modechanged(); + status_redraw_curbuf(); + redraw_statuslines(); goto cmdline_not_changed; case Ctrl_HAT: @@ -3169,8 +3172,6 @@ redraw: return (char_u *)line_ga.ga_data; } -# if defined(MCH_CURSOR_SHAPE) || defined(FEAT_GUI) \ - || defined(FEAT_MOUSESHAPE) || defined(PROTO) /* * Return TRUE if ccline.overstrike is on. */ @@ -3180,6 +3181,8 @@ cmdline_overstrike(void) return ccline.overstrike; } +# if defined(MCH_CURSOR_SHAPE) || defined(FEAT_GUI) \ + || defined(FEAT_MOUSESHAPE) || defined(PROTO) /* * Return TRUE if the cursor is at the end of the cmdline. */ diff --git a/src/misc1.c b/src/misc1.c index a82ef9cd93..e83ec66f70 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -720,6 +720,8 @@ get_mode(char_u *buf) buf[i++] = 'v'; else if (exmode_active == EXMODE_NORMAL) buf[i++] = 'e'; + if ((State & MODE_CMDLINE) && cmdline_overstrike()) + buf[i++] = 'r'; } else { diff --git a/src/testdir/dumps/Test_mode_1.dump b/src/testdir/dumps/Test_mode_1.dump new file mode 100644 index 0000000000..866ffd5667 --- /dev/null +++ b/src/testdir/dumps/Test_mode_1.dump @@ -0,0 +1,12 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|c+3#0000000&| @73 +|:+0&&> @73 diff --git a/src/testdir/dumps/Test_mode_2.dump b/src/testdir/dumps/Test_mode_2.dump new file mode 100644 index 0000000000..6cbfe2bd55 --- /dev/null +++ b/src/testdir/dumps/Test_mode_2.dump @@ -0,0 +1,12 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|c+3#0000000&|r| @72 +|:+0&&> @73 diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim index 0801d2b695..4cde9e40d6 100644 --- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -916,8 +916,12 @@ func Test_mode() call feedkeys(":echo \<C-R>=Save_mode()\<C-U>\<CR>", 'xt') call assert_equal('c-c', g:current_modes) + call feedkeys(":\<insert>\<C-r>=Save_mode()\<CR>",'xt') + call assert_equal("c-cr", g:current_modes) call feedkeys("gQecho \<C-R>=Save_mode()\<CR>\<CR>vi\<CR>", 'xt') call assert_equal('c-cv', g:current_modes) + call feedkeys("gQ\<insert>\<C-r>=Save_mode()\<CR>",'xt') + call assert_equal("c-cvr", g:current_modes) call feedkeys("Qcall Save_mode()\<CR>vi\<CR>", 'xt') call assert_equal('c-ce', g:current_modes) " How to test Ex mode? @@ -935,6 +939,18 @@ func Test_mode() call assert_equal('n-niR', g:current_modes) execute "normal! gR\<C-o>g@l\<Esc>" call assert_equal('n-niV', g:current_modes) + " Test statusline updates for overstike mode + if CanRunVimInTerminal() + let buf = RunVimInTerminal('', {'rows': 12}) + call term_sendkeys(buf, ":set laststatus=2 statusline=%!mode(1)\<CR>") + call term_sendkeys(buf, ":") + call TermWait(buf) + call VerifyScreenDump(buf, 'Test_mode_1', {}) + call term_sendkeys(buf, "\<insert>") + call TermWait(buf) + call VerifyScreenDump(buf, 'Test_mode_2', {}) + call StopVimInTerminal(buf) + endif if has('terminal') term diff --git a/src/version.c b/src/version.c index e5cb3c2612..4a7cf7d392 100644 --- a/src/version.c +++ b/src/version.c @@ -705,6 +705,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2133, +/**/ 2132, /**/ 2131, |