Mercurial > vim
changeset 23954:9c8a20cfa540 v8.2.2519
patch 8.2.2519: Vim9: no reason to keep strange Vi behavior
Commit: https://github.com/vim/vim/commit/b8554304c3673b081e9b5996f009fd0e4307e482
Author: Bram Moolenaar <Bram@vim.org>
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 15 Feb 2021 21:45:03 +0100 |
parents | e902fe2d6be6 |
children | d7f49f279146 |
files | src/ex_docmd.c src/testdir/test_vim9_script.vim src/version.c |
diffstat | 3 files changed, 20 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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;
--- 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