Patch 9.0.0555
Problem:    Scrolling with 'nosplitscroll' in callback changing curwin.
Solution:   Invalidate w_cline_row in the right place. (Luuk van Baal,
            closes #11185)
Files:      src/window.c, src/testdir/test_window_cmd.vim,
            src/testdir/dumps/Test_nosplitscroll_callback_1.dump,
            src/testdir/dumps/Test_nosplitscroll_callback_2.dump,
            src/testdir/dumps/Test_nosplitscroll_callback_3.dump,
            src/testdir/dumps/Test_nosplitscroll_callback_4.dump


*** ../vim-9.0.0554/src/window.c        2022-09-22 18:08:34.339338137 +0100
--- src/window.c        2022-09-23 12:52:16.591014553 +0100
***************
*** 6360,6366 ****
      win_T    *wp;
      linenr_T lnum;
  
!     skip_update_topline = TRUE;  // avoid scrolling in curs_rows()
      FOR_ALL_WINDOWS(wp)
      {
        // Skip when window height has not changed.
--- 6360,6366 ----
      win_T    *wp;
      linenr_T lnum;
  
!     skip_update_topline = TRUE;  // avoid scrolling in curs_columns()
      FOR_ALL_WINDOWS(wp)
      {
        // Skip when window height has not changed.
***************
*** 6378,6383 ****
--- 6378,6385 ----
                scroll_to_fraction(wp, wp->w_prev_height);
                wp->w_cursor.lnum = lnum;
            }
+           else if (wp == curwin)
+               wp->w_valid &= ~VALID_CROW;
            invalidate_botline_win(wp);
            validate_botline_win(wp);
        }
*** ../vim-9.0.0554/src/testdir/test_window_cmd.vim     2022-09-19 
16:45:26.202239861 +0100
--- src/testdir/test_window_cmd.vim     2022-09-23 12:52:16.587014373 +0100
***************
*** 1,6 ****
--- 1,7 ----
  " Tests for window cmd (:wincmd, :split, :vsplit, :resize and etc...)
  
  source check.vim
+ source screendump.vim
  
  func Test_window_cmd_ls0_with_split()
    set ls=0
***************
*** 1817,1820 ****
--- 1818,1851 ----
    set splitscroll&
  endfunc
  
+ function Test_nosplitscroll_callback()
+   CheckScreendump
+   let lines =<< trim END
+     set nosplitscroll
+     call setline(1, range(&lines))
+     function WincmdCb(a, b)
+       split | wincmd p
+     endfunction
+     function TermCb(a, b)
+       close | split
+     endfunction
+     nnoremap t <cmd>call popup_create(term_start(&shell, { 'hidden': 1, 
'exit_cb': 'TermCb' }), {})<CR>
+     nnoremap j <cmd>call job_start([&shell, &shellcmdflag, "echo"], { 
'exit_cb': 'WincmdCb' })<CR>
+   END
+   call writefile(lines, 'XTestNosplitscrollCallback', 'D')
+   let buf = RunVimInTerminal('-S XTestNosplitscrollCallback', #{rows: 8})
+ 
+   call term_sendkeys(buf, "j")
+   call VerifyScreenDump(buf, 'Test_nosplitscroll_callback_1', {})
+ 
+   call term_sendkeys(buf, ":quit\<CR>Htexit\<CR>")
+   call VerifyScreenDump(buf, 'Test_nosplitscroll_callback_2', {})
+ 
+   call term_sendkeys(buf, ":set sb\<CR>:quit\<CR>Gj")
+   call VerifyScreenDump(buf, 'Test_nosplitscroll_callback_3', {})
+ 
+   call term_sendkeys(buf, ":quit\<CR>Gtexit\<CR>")
+   call VerifyScreenDump(buf, 'Test_nosplitscroll_callback_4', {})
+ endfunc
+ 
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-9.0.0554/src/testdir/dumps/Test_nosplitscroll_callback_1.dump        
2022-09-23 12:56:40.285422177 +0100
--- src/testdir/dumps/Test_nosplitscroll_callback_1.dump        2022-09-23 
12:52:16.583014193 +0100
***************
*** 0 ****
--- 1,8 ----
+ |0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|T|o|p
+ >4+0&&| @73
+ |5| @73
+ |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|5|,|1| @11|6@1|%
+ | +0&&@74
*** ../vim-9.0.0554/src/testdir/dumps/Test_nosplitscroll_callback_2.dump        
2022-09-23 12:56:40.289422306 +0100
--- src/testdir/dumps/Test_nosplitscroll_callback_2.dump        2022-09-23 
12:52:16.583014193 +0100
***************
*** 0 ****
--- 1,8 ----
+ >0+0&#ffffff0| @73
+ |1| @73
+ |2| @73
+ |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|T|o|p
+ |4+0&&| @73
+ |5| @73
+ |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|6@1|%
+ | +0&&@74
*** ../vim-9.0.0554/src/testdir/dumps/Test_nosplitscroll_callback_3.dump        
2022-09-23 12:56:40.293422435 +0100
--- src/testdir/dumps/Test_nosplitscroll_callback_3.dump        2022-09-23 
12:52:16.583014193 +0100
***************
*** 0 ****
--- 1,8 ----
+ >1+0&#ffffff0| @73
+ |2| @73
+ |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1| @11|1|6|%
+ |4+0&&| @73
+ |5| @73
+ |6| @73
+ |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|6|,|1| @11|8|0|%
+ | +0&&@74
*** ../vim-9.0.0554/src/testdir/dumps/Test_nosplitscroll_callback_4.dump        
2022-09-23 12:56:40.297422563 +0100
--- src/testdir/dumps/Test_nosplitscroll_callback_4.dump        2022-09-23 
12:52:16.583014193 +0100
***************
*** 0 ****
--- 1,8 ----
+ |1+0&#ffffff0| @73
+ |2| @73
+ |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|8|,|1| @11|1|6|%
+ |4+0&&| @73
+ >5| @73
+ |6| @73
+ |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|6|,|1| @11|8|0|%
+ | +0&&@74
*** ../vim-9.0.0554/src/version.c       2022-09-23 12:44:19.795794418 +0100
--- src/version.c       2022-09-23 12:54:18.494095233 +0100
***************
*** 701,702 ****
--- 701,704 ----
  {   /* Add new patch number below this line */
+ /**/
+     555,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
139. You down your lunch in five minutes, at your desk, so you can
     spend the rest of the hour surfing the Net.

 /// 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/20220923115752.D0D0E1C0674%40moolenaar.net.

Raspunde prin e-mail lui