patch 9.1.0582: Printed line doesn't overwrite colon when pressing Enter in Ex 
mode

Commit: 
https://github.com/vim/vim/commit/7d664bf0eb2cb25cb77933c8b7f11ca09929e7b8
Author: zeertzjq <zeert...@outlook.com>
Date:   Sun Jul 14 10:22:54 2024 +0200

    patch 9.1.0582: Printed line doesn't overwrite colon when pressing Enter in 
Ex mode
    
    Problem:  Printed line no longer overwrites colon when pressing Enter in
              Ex mode (after 9.1.0573).
    Solution: Restore the behavior of pressing Enter in Ex mode.
              (zeertzjq)
    
    closes: #15258
    
    Signed-off-by: zeertzjq <zeert...@outlook.com>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 53f9d1af2..e6200ed70 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2721,6 +2721,12 @@ ex_errmsg(char *msg, char_u *arg)
     return ex_error_buf;
 }
 
+/*
+ * The "+" string used in place of an empty command in Ex mode.
+ * This string is used in pointer comparison.
+ */
+static char exmode_plus[] = "+";
+
 /*
  * Handle a range without a command.
  * Returns an error message on failure.
@@ -2730,7 +2736,8 @@ ex_range_without_command(exarg_T *eap)
 {
     char *errormsg = NULL;
 
-    if ((*eap->cmd == '|' || exmode_active)
+    if ((*eap->cmd == '|' ||
+               (exmode_active && eap->cmd != (char_u *)exmode_plus + 1))
 #ifdef FEAT_EVAL
            && !in_vim9script()
 #endif
@@ -3212,7 +3219,7 @@ parse_command_modifiers(
                eap->cmd = orig_cmd;
     }
     else if (use_plus_cmd)
-       eap->cmd = (char_u *)"+";
+       eap->cmd = (char_u *)exmode_plus;
 
     return OK;
 }
diff --git a/src/testdir/test_ex_mode.vim b/src/testdir/test_ex_mode.vim
index c4f82d33c..a1ec15d7e 100644
--- a/src/testdir/test_ex_mode.vim
+++ b/src/testdir/test_ex_mode.vim
@@ -68,7 +68,7 @@ func Test_Ex_substitute()
   CheckRunVimInTerminal
   let buf = RunVimInTerminal('', {'rows': 6})
 
-  call term_sendkeys(buf, ":call setline(1, ['foo foo', 'foo foo', 'foo 
foo'])\<CR>")
+  call term_sendkeys(buf, ":call setline(1, repeat(['foo foo'], 4))\<CR>")
   call term_sendkeys(buf, ":set number\<CR>")
   call term_sendkeys(buf, "gQ")
   call WaitForAssert({-> assert_match(':', term_getline(buf, 6))}, 1000)
@@ -90,8 +90,14 @@ func Test_Ex_substitute()
 
   " Pressing enter in ex mode should print the current line
   call term_sendkeys(buf, "\<CR>")
-  call WaitForAssert({-> assert_match('  3 foo foo',
-        \ term_getline(buf, 5))}, 1000)
+  call WaitForAssert({-> assert_match('  3 foo foo', term_getline(buf, 5))}, 
1000)
+  call WaitForAssert({-> assert_match(':', term_getline(buf, 6))}, 1000)
+
+  " The printed line should overwrite the colon
+  call term_sendkeys(buf, "\<CR>")
+  call WaitForAssert({-> assert_match('  3 foo foo', term_getline(buf, 4))}, 
1000)
+  call WaitForAssert({-> assert_match('  4 foo foo', term_getline(buf, 5))}, 
1000)
+  call WaitForAssert({-> assert_match(':', term_getline(buf, 6))}, 1000)
 
   call term_sendkeys(buf, ":vi\<CR>")
   call WaitForAssert({-> assert_match('foo bar', term_getline(buf, 1))}, 1000)
diff --git a/src/version.c b/src/version.c
index fe4badc89..ab317d392 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    582,
 /**/
     581,
 /**/

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1sTxuw-0091GE-G5%40256bit.org.

Raspunde prin e-mail lui