# HG changeset patch # User Bram Moolenaar # Date 1644248703 -3600 # Node ID a31dd0a3cb39b73df54132f1240f561bbe5399d5 # Parent becde709128e1bf27735dbe53e0b88ca61421c52 patch 8.2.4319: :put does not work properly in compiled function Commit: https://github.com/vim/vim/commit/4e713bafc0ae191b1830e3cd3c323ebd695bc3a1 Author: Bram Moolenaar Date: Mon Feb 7 15:31:37 2022 +0000 patch 8.2.4319: :put does not work properly in compiled function Problem: :put does not work properly in compiled function. (John Beckett) Solution: Adjust the direction when using line zero. diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim --- 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 --- 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 --- 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 == '=') {