patch 8.2.2519: Vim9: no reason to keep strange Vi behavior
Problem: Vim9: no reason to keep strange Vi behavior.
Solution: ":3" and ":3|" both go to line 3. ":|" does not print the line.
(closes #7840)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 0dd21eb..f4bdf7b 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1957,12 +1957,16 @@
/*
* strange vi behaviour:
* ":3" jumps to line 3
- * ":3|..." prints line 3
- * ":|" prints current line
+ * ":3|..." prints line 3 (not in Vim9 script)
+ * ":|" prints current line (not in Vim9 script)
*/
if (ea.skip) // skip this if inside :if
goto doend;
- if (*ea.cmd == '|' || (exmode_active && ea.line1 != ea.line2))
+ if ((*ea.cmd == '|' || (exmode_active && ea.line1 != ea.line2))
+#ifdef FEAT_EVAL
+ && !vim9script
+#endif
+ )
{
ea.cmdidx = CMD_print;
ea.argt = EX_RANGE+EX_COUNT+EX_TRLBAR;
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 0becc7d..922080d 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -22,6 +22,17 @@
:3
list
assert_equal('three$', Screenline(&lines))
+
+ # missing command does not print the line
+ var lines =<< trim END
+ vim9script
+ :1|
+ assert_equal('three$', Screenline(&lines))
+ :|
+ assert_equal('three$', Screenline(&lines))
+ END
+ CheckScriptSuccess(lines)
+
bwipe!
# won't generate anything
diff --git a/src/version.c b/src/version.c
index 774ff52..02abac9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2519,
+/**/
2518,
/**/
2517,