Patch 9.0.1279
Problem:    Display shows lines scrolled down erroneously. (Yishai Lerner)
Solution:   Do not change "wl_lnum" at index zero. (closes #11938)
Files:      src/change.c, src/testdir/test_move.vim,
            src/testdir/dumps/Test_move_undo_1.dump,
            src/testdir/dumps/Test_move_undo_2.dump


*** ../vim-9.0.1278/src/change.c        2023-01-17 19:48:02.759310921 +0000
--- src/change.c        2023-02-04 13:53:32.492972951 +0000
***************
*** 611,617 ****
                {
                    if (wp->w_lines[i].wl_lnum >= lnum)
                    {
!                       if (wp->w_lines[i].wl_lnum < lnume)
                        {
                            // line included in change
                            wp->w_lines[i].wl_valid = FALSE;
--- 611,619 ----
                {
                    if (wp->w_lines[i].wl_lnum >= lnum)
                    {
!                       // Do not change wl_lnum at index zero, it is used to
!                       // compare with w_topline.  Invalidate it instead.
!                       if (wp->w_lines[i].wl_lnum < lnume || i == 0)
                        {
                            // line included in change
                            wp->w_lines[i].wl_valid = FALSE;
*** ../vim-9.0.1278/src/testdir/test_move.vim   2020-09-04 20:11:04.000000000 
+0100
--- src/testdir/test_move.vim   2023-02-04 13:56:31.572802520 +0000
***************
*** 1,5 ****
--- 1,8 ----
  " Test the ":move" command.
  
+ source check.vim
+ source screendump.vim
+ 
  func Test_move()
    enew!
    call append(0, ['line 1', 'line 2', 'line 3'])
***************
*** 43,46 ****
--- 46,70 ----
    %bwipeout!
  endfunc
  
+ func Test_move_undo()
+   CheckRunVimInTerminal
+ 
+   let lines =<< trim END
+       call setline(1, ['First', 'Second', 'Third', 'Fourth'])
+   END
+   call writefile(lines, 'Xtest_move_undo.vim', 'D')
+   let buf = RunVimInTerminal('-S Xtest_move_undo.vim', #{rows: 10, cols: 60, 
statusoff: 2})
+ 
+   call term_sendkeys(buf, "gg:move +1\<CR>")
+   call VerifyScreenDump(buf, 'Test_move_undo_1', {})
+ 
+   " here the display would show the last few lines scrolled down
+   call term_sendkeys(buf, "u")
+   call term_sendkeys(buf, ":\<Esc>")
+   call VerifyScreenDump(buf, 'Test_move_undo_2', {})
+ 
+   call StopVimInTerminal(buf)
+ endfunc
+ 
+ 
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-9.0.1278/src/testdir/dumps/Test_move_undo_1.dump     2023-02-04 
13:57:11.708764717 +0000
--- src/testdir/dumps/Test_move_undo_1.dump     2023-02-04 13:51:40.985080879 
+0000
***************
*** 0 ****
--- 1,10 ----
+ |S+0&#ffffff0|e|c|o|n|d| @53
+ >F|i|r|s|t| @54
+ |T|h|i|r|d| @54
+ |F|o|u|r|t|h| @53
+ |~+0#4040ff13&| @58
+ |~| @58
+ |~| @58
+ |~| @58
+ |~| @58
+ |:+0#0000000&|m|o|v|e| |+|1| @33|2|,|1| @10|A|l@1| 
*** ../vim-9.0.1278/src/testdir/dumps/Test_move_undo_2.dump     2023-02-04 
13:57:11.712764713 +0000
--- src/testdir/dumps/Test_move_undo_2.dump     2023-02-04 13:51:42.137079755 
+0000
***************
*** 0 ****
--- 1,10 ----
+ >F+0&#ffffff0|i|r|s|t| @54
+ |S|e|c|o|n|d| @53
+ |T|h|i|r|d| @54
+ |F|o|u|r|t|h| @53
+ |~+0#4040ff13&| @58
+ |~| @58
+ |~| @58
+ |~| @58
+ |~| @58
+ | +0#0000000&@41|1|,|1| @10|A|l@1| 
*** ../vim-9.0.1278/src/version.c       2023-02-04 12:12:32.146272420 +0000
--- src/version.c       2023-02-04 13:44:46.909501345 +0000
***************
*** 697,698 ****
--- 697,700 ----
  {   /* Add new patch number below this line */
+ /**/
+     1279,
  /**/

-- 
Do not trust atoms, they make up everything.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20230204135822.A09CA1C0A8B%40moolenaar.net.

Raspunde prin e-mail lui