aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/ui.txt1
-rw-r--r--src/nvim/message.c5
-rw-r--r--src/nvim/search.c5
-rw-r--r--test/functional/ui/messages_spec.lua29
4 files changed, 38 insertions, 2 deletions
diff --git a/runtime/doc/ui.txt b/runtime/doc/ui.txt
index ca10edccba..c56f9467a3 100644
--- a/runtime/doc/ui.txt
+++ b/runtime/doc/ui.txt
@@ -706,6 +706,7 @@ events, which the UI must handle.
"rpc_error" Error response from |rpcrequest()|
"return_prompt" |press-enter| prompt after a multiple messages
"quickfix" Quickfix navigation message
+ "search_count" Search count message ("S" flag of 'shortmess')
"wmsg" Warning ("search hit BOTTOM", |W10|, …)
New kinds may be added in the future; clients should treat unknown
kinds as the empty kind.
diff --git a/src/nvim/message.c b/src/nvim/message.c
index 5188824901..4fafbd5e0a 100644
--- a/src/nvim/message.c
+++ b/src/nvim/message.c
@@ -3018,7 +3018,10 @@ void give_warning(char_u *message, bool hl) FUNC_ATTR_NONNULL_ARG(1)
} else {
keep_msg_attr = 0;
}
- msg_ext_set_kind("wmsg");
+
+ if (msg_ext_kind == NULL) {
+ msg_ext_set_kind("wmsg");
+ }
if (msg_attr((const char *)message, keep_msg_attr) && msg_scrolled == 0) {
set_keep_msg(message, keep_msg_attr);
diff --git a/src/nvim/search.c b/src/nvim/search.c
index 3834bf9700..9cbe21bdc8 100644
--- a/src/nvim/search.c
+++ b/src/nvim/search.c
@@ -1168,7 +1168,9 @@ int do_search(
// search stat. Use all the space available, so that the
// search state is right aligned. If there is not enough space
// msg_strtrunc() will shorten in the middle.
- if (msg_scrolled != 0) {
+ if (ui_has(kUIMessages)) {
+ len = 0; // adjusted below
+ } else if (msg_scrolled != 0) {
// Use all the columns.
len = (int)(Rows - msg_row) * Columns - 1;
} else {
@@ -4328,6 +4330,7 @@ static void search_stat(int dirc, pos_T *pos,
// keep the message even after redraw, but don't put in history
msg_hist_off = true;
+ msg_ext_set_kind("search_count");
give_warning(msgbuf, false);
msg_hist_off = false;
}
diff --git a/test/functional/ui/messages_spec.lua b/test/functional/ui/messages_spec.lua
index 7d21f40ce9..16e1619a3a 100644
--- a/test/functional/ui/messages_spec.lua
+++ b/test/functional/ui/messages_spec.lua
@@ -21,6 +21,8 @@ describe('ui/ext_messages', function()
[4] = {bold = true, foreground = Screen.colors.SeaGreen4},
[5] = {foreground = Screen.colors.Blue1},
[6] = {bold = true, reverse = true},
+ [7] = {background = Screen.colors.Yellow},
+ [8] = {foreground = Screen.colors.Red},
})
end)
after_each(function()
@@ -303,6 +305,33 @@ describe('ui/ext_messages', function()
}}
end)
+ it('shortmess-=S', function()
+ command('set shortmess-=S')
+ feed('iline 1\nline 2<esc>')
+
+ feed('/line<cr>')
+ screen:expect{grid=[[
+ {7:^line} 1 |
+ {7:line} 2 |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ ]], messages={
+ {content = {{"/line [1/2] W"}}, kind = "search_count"}
+ }}
+
+ feed('n')
+ screen:expect{grid=[[
+ {7:line} 1 |
+ {7:^line} 2 |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ ]], messages={
+ {content = {{"/line [2/2]"}}, kind = "search_count"}
+ }}
+ end)
+
it('&showmode', function()
command('imap <f2> <cmd>echomsg "stuff"<cr>')
feed('i')