mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 09:44:31 +00:00 
			
		
		
		
	fix(quickfix): make shortmess+=O work with cmdheight=0 (#29609)
(cherry picked from commit 73ae7d44a2)
			
			
This commit is contained in:
		
				
					committed by
					
						
						github-actions[bot]
					
				
			
			
				
	
			
			
			
						parent
						
							f39fb4c11e
						
					
				
				
					commit
					63ff7338ea
				
			@@ -146,8 +146,7 @@ EXTERN hlf_T edit_submode_highl;                // highl. method for extra info
 | 
			
		||||
EXTERN bool cmdmsg_rl INIT( = false);  // cmdline is drawn right to left
 | 
			
		||||
EXTERN int msg_col;
 | 
			
		||||
EXTERN int msg_row;
 | 
			
		||||
EXTERN int msg_scrolled;        // Number of screen lines that windows have
 | 
			
		||||
                                // scrolled because of printing messages.
 | 
			
		||||
EXTERN int msg_scrolled;  ///< Number of screen lines that messages have scrolled.
 | 
			
		||||
// when true don't set need_wait_return in msg_puts_attr()
 | 
			
		||||
// when msg_scrolled is non-zero
 | 
			
		||||
EXTERN bool msg_scrolled_ign INIT( = false);
 | 
			
		||||
 
 | 
			
		||||
@@ -2914,8 +2914,7 @@ static void qf_jump_print_msg(qf_info_T *qi, int qf_index, qfline_T *qf_ptr, buf
 | 
			
		||||
{
 | 
			
		||||
  garray_T *const gap = qfga_get();
 | 
			
		||||
 | 
			
		||||
  // Update the screen before showing the message, unless the screen
 | 
			
		||||
  // scrolled up.
 | 
			
		||||
  // Update the screen before showing the message, unless messages scrolled.
 | 
			
		||||
  if (!msg_scrolled) {
 | 
			
		||||
    update_topline(curwin);
 | 
			
		||||
    if (must_redraw) {
 | 
			
		||||
@@ -2937,7 +2936,8 @@ static void qf_jump_print_msg(qf_info_T *qi, int qf_index, qfline_T *qf_ptr, buf
 | 
			
		||||
  linenr_T i = msg_scroll;
 | 
			
		||||
  if (curbuf == old_curbuf && curwin->w_cursor.lnum == old_lnum) {
 | 
			
		||||
    msg_scroll = true;
 | 
			
		||||
  } else if (!msg_scrolled && shortmess(SHM_OVERALL)) {
 | 
			
		||||
  } else if ((msg_scrolled == 0 || (p_ch == 0 && msg_scrolled == 1))
 | 
			
		||||
             && shortmess(SHM_OVERALL)) {
 | 
			
		||||
    msg_scroll = false;
 | 
			
		||||
  }
 | 
			
		||||
  msg_ext_set_kind("quickfix");
 | 
			
		||||
 
 | 
			
		||||
@@ -185,6 +185,9 @@ describe('quickfix', function()
 | 
			
		||||
  it('BufAdd does not cause E16 when reusing quickfix buffer #18135', function()
 | 
			
		||||
    local file = file_base .. '_reuse_qfbuf_BufAdd'
 | 
			
		||||
    write_file(file, ('\n'):rep(100) .. 'foo')
 | 
			
		||||
    finally(function()
 | 
			
		||||
      os.remove(file)
 | 
			
		||||
    end)
 | 
			
		||||
    source([[
 | 
			
		||||
      set grepprg=internal
 | 
			
		||||
      autocmd BufAdd * call and(0, 0)
 | 
			
		||||
@@ -192,7 +195,24 @@ describe('quickfix', function()
 | 
			
		||||
    ]])
 | 
			
		||||
    command('grep foo ' .. file)
 | 
			
		||||
    command('grep foo ' .. file)
 | 
			
		||||
    os.remove(file)
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
  it('jump message does not scroll with cmdheight=0 and shm+=O #29597', function()
 | 
			
		||||
    local screen = Screen.new(40, 6)
 | 
			
		||||
    screen:attach()
 | 
			
		||||
    command('set cmdheight=0')
 | 
			
		||||
    local file = file_base .. '_reuse_qfbuf_BufAdd'
 | 
			
		||||
    write_file(file, 'foobar')
 | 
			
		||||
    finally(function()
 | 
			
		||||
      os.remove(file)
 | 
			
		||||
    end)
 | 
			
		||||
    command('vimgrep /foo/gj ' .. file)
 | 
			
		||||
    feed(':cc<CR>')
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
      ^foobar                                  |
 | 
			
		||||
      {1:~                                       }|*4
 | 
			
		||||
      (1 of 1): foobar                        |
 | 
			
		||||
    ]])
 | 
			
		||||
  end)
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user