mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 09:44:31 +00:00 
			
		
		
		
	fix(move): half-page scrolling with resized grid at eob (#28821)
This commit is contained in:
		@@ -2488,7 +2488,7 @@ int pagescroll(Direction dir, int count, bool half)
 | 
				
			|||||||
    int curscount = count;
 | 
					    int curscount = count;
 | 
				
			||||||
    // Adjust count so as to not reveal end of buffer lines.
 | 
					    // Adjust count so as to not reveal end of buffer lines.
 | 
				
			||||||
    if (dir == FORWARD
 | 
					    if (dir == FORWARD
 | 
				
			||||||
        && (curwin->w_topline + curwin->w_height + count > buflen || hasAnyFolding(curwin))) {
 | 
					        && (curwin->w_topline + curwin->w_height_inner + count > buflen || hasAnyFolding(curwin))) {
 | 
				
			||||||
      int n = plines_correct_topline(curwin, curwin->w_topline, NULL, false, NULL);
 | 
					      int n = plines_correct_topline(curwin, curwin->w_topline, NULL, false, NULL);
 | 
				
			||||||
      if (n - count < curwin->w_height_inner && curwin->w_topline < buflen) {
 | 
					      if (n - count < curwin->w_height_inner && curwin->w_topline < buflen) {
 | 
				
			||||||
        n += plines_m_win(curwin, curwin->w_topline + 1, buflen, curwin->w_height_inner + count);
 | 
					        n += plines_m_win(curwin, curwin->w_topline + 1, buflen, curwin->w_height_inner + count);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -741,6 +741,75 @@ describe('ext_multigrid', function()
 | 
				
			|||||||
        [4] = {-1, "SW", 1, 13, 5, false, 250};
 | 
					        [4] = {-1, "SW", 1, 13, 5, false, 250};
 | 
				
			||||||
      }}
 | 
					      }}
 | 
				
			||||||
    end)
 | 
					    end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it('half-page scrolling stops at end of buffer', function()
 | 
				
			||||||
 | 
					      command('set number')
 | 
				
			||||||
 | 
					      insert(('foobar\n'):rep(100))
 | 
				
			||||||
 | 
					      feed('7<C-Y>')
 | 
				
			||||||
 | 
					      screen:expect({
 | 
				
			||||||
 | 
					        grid = [[
 | 
				
			||||||
 | 
					        ## grid 1
 | 
				
			||||||
 | 
					          [2:-----------------------------------------------------]|*12
 | 
				
			||||||
 | 
					          {11:[No Name] [+]                                        }|
 | 
				
			||||||
 | 
					          [3:-----------------------------------------------------]|
 | 
				
			||||||
 | 
					        ## grid 2
 | 
				
			||||||
 | 
					          {19: 75 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 76 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 77 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 78 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 79 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 80 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 81 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 82 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 83 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 84 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 85 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 86 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 87 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 88 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 89 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 90 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 91 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 92 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 93 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 94 }^foobar                                                  |
 | 
				
			||||||
 | 
					        ## grid 3
 | 
				
			||||||
 | 
					                                                               |
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      feed('<C-D>')
 | 
				
			||||||
 | 
					      screen:expect({
 | 
				
			||||||
 | 
					        grid = [[
 | 
				
			||||||
 | 
					        ## grid 1
 | 
				
			||||||
 | 
					          [2:-----------------------------------------------------]|*12
 | 
				
			||||||
 | 
					          {11:[No Name] [+]                                        }|
 | 
				
			||||||
 | 
					          [3:-----------------------------------------------------]|
 | 
				
			||||||
 | 
					        ## grid 2
 | 
				
			||||||
 | 
					          {19: 82 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 83 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 84 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 85 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 86 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 87 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 88 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 89 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 90 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 91 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 92 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 93 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 94 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 95 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 96 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 97 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 98 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19: 99 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19:100 }foobar                                                  |
 | 
				
			||||||
 | 
					          {19:101 }^                                                        |
 | 
				
			||||||
 | 
					        ## grid 3
 | 
				
			||||||
 | 
					                                                               |
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    end)
 | 
				
			||||||
  end)
 | 
					  end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('multiline messages scroll over windows', function()
 | 
					  it('multiline messages scroll over windows', function()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user