# HG changeset patch # User Bram Moolenaar # Date 1613421903 -3600 # Node ID 9c8a20cfa540615c91c7b1019da172f42fb13015 # Parent e902fe2d6be6543d16cbe9a562ce894e94dd23e1 patch 8.2.2519: Vim9: no reason to keep strange Vi behavior Commit: https://github.com/vim/vim/commit/b8554304c3673b081e9b5996f009fd0e4307e482 Author: Bram Moolenaar Date: Mon Feb 15 21:30:30 2021 +0100 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 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -1957,12 +1957,16 @@ do_one_cmd( /* * 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 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -22,6 +22,17 @@ def Test_range_only() :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 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2519, +/**/ 2518, /**/ 2517,