diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-02-07 15:31:37 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-02-07 15:31:37 +0000 |
commit | 4e713bafc0ae191b1830e3cd3c323ebd695bc3a1 (patch) | |
tree | 3bed62959c3a127b5d9b52a16d65f170265a9285 | |
parent | 54969f4ef5825205ecde09ea80f4087fc3b68e5d (diff) | |
download | vim-git-8.2.4319.tar.gz |
patch 8.2.4319: :put does not work properly in compiled functionv8.2.4319
Problem: :put does not work properly in compiled function. (John Beckett)
Solution: Adjust the direction when using line zero.
-rw-r--r-- | src/testdir/test_vim9_cmd.vim | 6 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9execute.c | 7 |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim index 51a62e01f..0ac69e84f 100644 --- a/src/testdir/test_vim9_cmd.vim +++ b/src/testdir/test_vim9_cmd.vim @@ -1156,7 +1156,13 @@ def Test_put_command() :2put =['a', 'b', 'c'] assert_equal(['ppp', 'a', 'b', 'c', 'above'], getline(2, 6)) + :0put ='first' + assert_equal('first', getline(1)) + :1put! ='first again' + assert_equal('first again', getline(1)) + # compute range at runtime + :%del setline(1, range(1, 8)) @a = 'aaa' :$-2put a diff --git a/src/version.c b/src/version.c index f30ba25f5..3535adbee 100644 --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4319, +/**/ 4318, /**/ 4317, diff --git a/src/vim9execute.c b/src/vim9execute.c index 6c79ff7df..961e4507c 100644 --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -4617,7 +4617,12 @@ exec_instructions(ectx_T *ectx) // :put! above cursor dir = BACKWARD; else if (lnum >= 0) - curwin->w_cursor.lnum = iptr->isn_arg.put.put_lnum; + { + curwin->w_cursor.lnum = lnum; + if (lnum == 0) + // check_cursor() below will move to line 1 + dir = BACKWARD; + } if (regname == '=') { |