mirror of
https://github.com/vim/vim.git
synced 2025-07-04 23:07:33 -04:00
patch 9.0.0511: unnecessary scrolling for message of only one line
Problem: Unnecessary scrolling for message of only one line. Solution: Only set msg_scroll when needed. (closes #11178)
This commit is contained in:
parent
7c046ae99b
commit
bdedd2bcce
@ -535,11 +535,11 @@ msg_source(int attr)
|
|||||||
return;
|
return;
|
||||||
recursive = TRUE;
|
recursive = TRUE;
|
||||||
|
|
||||||
msg_scroll = TRUE; // this will take more than one line
|
|
||||||
++no_wait_return;
|
++no_wait_return;
|
||||||
p = get_emsg_source();
|
p = get_emsg_source();
|
||||||
if (p != NULL)
|
if (p != NULL)
|
||||||
{
|
{
|
||||||
|
msg_scroll = TRUE; // this will take more than one line
|
||||||
msg_attr((char *)p, attr);
|
msg_attr((char *)p, attr);
|
||||||
vim_free(p);
|
vim_free(p);
|
||||||
}
|
}
|
||||||
@ -767,8 +767,8 @@ emsg_core(char_u *s)
|
|||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* Display name and line number for the source of the error.
|
* Display name and line number for the source of the error.
|
||||||
* Sets "msg_scroll".
|
|
||||||
*/
|
*/
|
||||||
|
msg_scroll = TRUE;
|
||||||
msg_source(attr);
|
msg_source(attr);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -166,6 +166,38 @@ func Test_echospace()
|
|||||||
set ruler& showcmd&
|
set ruler& showcmd&
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_warning_scroll()
|
||||||
|
CheckRunVimInTerminal
|
||||||
|
let lines =<< trim END
|
||||||
|
call test_override('ui_delay', 50)
|
||||||
|
set noruler
|
||||||
|
set readonly
|
||||||
|
undo
|
||||||
|
END
|
||||||
|
call writefile(lines, 'XTestWarningScroll', 'D')
|
||||||
|
let buf = RunVimInTerminal('', #{rows: 8})
|
||||||
|
|
||||||
|
" When the warning comes from a script, messages are scrolled so that the
|
||||||
|
" stacktrace is visible.
|
||||||
|
call term_sendkeys(buf, ":source XTestWarningScroll\n")
|
||||||
|
" only match the final colon in the line that shows the source
|
||||||
|
call WaitForAssert({-> assert_match(':$', term_getline(buf, 5))})
|
||||||
|
call WaitForAssert({-> assert_equal('line 4:W10: Warning: Changing a readonly file', term_getline(buf, 6))})
|
||||||
|
call WaitForAssert({-> assert_equal('Already at oldest change', term_getline(buf, 7))})
|
||||||
|
call WaitForAssert({-> assert_equal('Press ENTER or type command to continue', term_getline(buf, 8))})
|
||||||
|
call term_sendkeys(buf, "\n")
|
||||||
|
|
||||||
|
" When the warning does not come from a script, messages are not scrolled.
|
||||||
|
call term_sendkeys(buf, ":enew\n")
|
||||||
|
call term_sendkeys(buf, ":set readonly\n")
|
||||||
|
call term_sendkeys(buf, 'u')
|
||||||
|
call WaitForAssert({-> assert_equal('W10: Warning: Changing a readonly file', term_getline(buf, 8))})
|
||||||
|
call WaitForAssert({-> assert_equal('Already at oldest change', term_getline(buf, 8))})
|
||||||
|
|
||||||
|
" clean up
|
||||||
|
call StopVimInTerminal(buf)
|
||||||
|
endfunc
|
||||||
|
|
||||||
" Test more-prompt (see :help more-prompt).
|
" Test more-prompt (see :help more-prompt).
|
||||||
func Test_message_more()
|
func Test_message_more()
|
||||||
CheckRunVimInTerminal
|
CheckRunVimInTerminal
|
||||||
|
@ -699,6 +699,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
511,
|
||||||
/**/
|
/**/
|
||||||
510,
|
510,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user