mirror of
https://github.com/neovim/neovim
synced 2025-07-16 01:01:49 +00:00
fix(quickfix): make shortmess+=O work with cmdheight=0 (#29609)
This commit is contained in:
@ -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 bool cmdmsg_rl INIT( = false); // cmdline is drawn right to left
|
||||||
EXTERN int msg_col;
|
EXTERN int msg_col;
|
||||||
EXTERN int msg_row;
|
EXTERN int msg_row;
|
||||||
EXTERN int msg_scrolled; // Number of screen lines that windows have
|
EXTERN int msg_scrolled; ///< Number of screen lines that messages have scrolled.
|
||||||
// scrolled because of printing messages.
|
|
||||||
// when true don't set need_wait_return in msg_puts_attr()
|
// when true don't set need_wait_return in msg_puts_attr()
|
||||||
// when msg_scrolled is non-zero
|
// when msg_scrolled is non-zero
|
||||||
EXTERN bool msg_scrolled_ign INIT( = false);
|
EXTERN bool msg_scrolled_ign INIT( = false);
|
||||||
|
@ -2915,8 +2915,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();
|
garray_T *const gap = qfga_get();
|
||||||
|
|
||||||
// Update the screen before showing the message, unless the screen
|
// Update the screen before showing the message, unless messages scrolled.
|
||||||
// scrolled up.
|
|
||||||
if (!msg_scrolled) {
|
if (!msg_scrolled) {
|
||||||
update_topline(curwin);
|
update_topline(curwin);
|
||||||
if (must_redraw) {
|
if (must_redraw) {
|
||||||
@ -2938,7 +2937,8 @@ static void qf_jump_print_msg(qf_info_T *qi, int qf_index, qfline_T *qf_ptr, buf
|
|||||||
linenr_T i = msg_scroll;
|
linenr_T i = msg_scroll;
|
||||||
if (curbuf == old_curbuf && curwin->w_cursor.lnum == old_lnum) {
|
if (curbuf == old_curbuf && curwin->w_cursor.lnum == old_lnum) {
|
||||||
msg_scroll = true;
|
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_scroll = false;
|
||||||
}
|
}
|
||||||
msg_ext_set_kind("quickfix");
|
msg_ext_set_kind("quickfix");
|
||||||
|
@ -185,6 +185,9 @@ describe('quickfix', function()
|
|||||||
it('BufAdd does not cause E16 when reusing quickfix buffer #18135', function()
|
it('BufAdd does not cause E16 when reusing quickfix buffer #18135', function()
|
||||||
local file = file_base .. '_reuse_qfbuf_BufAdd'
|
local file = file_base .. '_reuse_qfbuf_BufAdd'
|
||||||
write_file(file, ('\n'):rep(100) .. 'foo')
|
write_file(file, ('\n'):rep(100) .. 'foo')
|
||||||
|
finally(function()
|
||||||
|
os.remove(file)
|
||||||
|
end)
|
||||||
source([[
|
source([[
|
||||||
set grepprg=internal
|
set grepprg=internal
|
||||||
autocmd BufAdd * call and(0, 0)
|
autocmd BufAdd * call and(0, 0)
|
||||||
@ -192,7 +195,24 @@ describe('quickfix', function()
|
|||||||
]])
|
]])
|
||||||
command('grep foo ' .. file)
|
command('grep foo ' .. file)
|
||||||
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)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user