mirror of
https://github.com/neovim/neovim.git
synced 2025-09-20 10:18:18 +00:00
Merge pull request #10926 from blueyed/fix-echon-q
Check got_int in msg_multiline_attr with ex_echo
This commit is contained in:
@@ -20894,7 +20894,7 @@ void ex_echo(exarg_T *eap)
|
|||||||
char *tofree = encode_tv2echo(&rettv, NULL);
|
char *tofree = encode_tv2echo(&rettv, NULL);
|
||||||
if (*tofree != NUL) {
|
if (*tofree != NUL) {
|
||||||
msg_ext_set_kind("echo");
|
msg_ext_set_kind("echo");
|
||||||
msg_multiline_attr(tofree, echo_attr);
|
msg_multiline_attr(tofree, echo_attr, true);
|
||||||
}
|
}
|
||||||
xfree(tofree);
|
xfree(tofree);
|
||||||
}
|
}
|
||||||
|
@@ -222,12 +222,12 @@ int msg_attr(const char *s, const int attr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// similar to msg_outtrans_attr, but support newlines and tabs.
|
/// similar to msg_outtrans_attr, but support newlines and tabs.
|
||||||
void msg_multiline_attr(const char *s, int attr)
|
void msg_multiline_attr(const char *s, int attr, bool check_int)
|
||||||
FUNC_ATTR_NONNULL_ALL
|
FUNC_ATTR_NONNULL_ALL
|
||||||
{
|
{
|
||||||
const char *next_spec = s;
|
const char *next_spec = s;
|
||||||
|
|
||||||
while (next_spec != NULL) {
|
while (next_spec != NULL && (!check_int || !got_int)) {
|
||||||
next_spec = strpbrk(s, "\t\n\r");
|
next_spec = strpbrk(s, "\t\n\r");
|
||||||
|
|
||||||
if (next_spec != NULL) {
|
if (next_spec != NULL) {
|
||||||
@@ -306,7 +306,7 @@ bool msg_attr_keep(char_u *s, int attr, bool keep, bool multiline)
|
|||||||
s = buf;
|
s = buf;
|
||||||
|
|
||||||
if (multiline) {
|
if (multiline) {
|
||||||
msg_multiline_attr((char *)s, attr);
|
msg_multiline_attr((char *)s, attr, false);
|
||||||
} else {
|
} else {
|
||||||
msg_outtrans_attr(s, attr);
|
msg_outtrans_attr(s, attr);
|
||||||
}
|
}
|
||||||
|
@@ -1052,3 +1052,37 @@ describe('ui/msg_puts_printf', function()
|
|||||||
os.execute('cmake -E remove_directory '..test_build_dir..'/share')
|
os.execute('cmake -E remove_directory '..test_build_dir..'/share')
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
describe('pager', function()
|
||||||
|
local screen
|
||||||
|
|
||||||
|
before_each(function()
|
||||||
|
clear()
|
||||||
|
screen = Screen.new(25, 5)
|
||||||
|
screen:attach()
|
||||||
|
screen:set_default_attr_ids({
|
||||||
|
[1] = {bold = true, foreground = Screen.colors.Blue1},
|
||||||
|
[4] = {bold = true, foreground = Screen.colors.SeaGreen4},
|
||||||
|
})
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('can be quit', function()
|
||||||
|
command("set more")
|
||||||
|
feed(':echon join(map(range(0, &lines*2), "v:val"), "\\n")<cr>')
|
||||||
|
screen:expect{grid=[[
|
||||||
|
0 |
|
||||||
|
1 |
|
||||||
|
2 |
|
||||||
|
3 |
|
||||||
|
{4:-- More --}^ |
|
||||||
|
]]}
|
||||||
|
feed('q')
|
||||||
|
screen:expect{grid=[[
|
||||||
|
^ |
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
|
|
||||||
|
]]}
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
Reference in New Issue
Block a user