diff options
| -rw-r--r-- | runtime/doc/ui.txt | 1 | ||||
| -rw-r--r-- | src/nvim/message.c | 5 | ||||
| -rw-r--r-- | src/nvim/search.c | 5 | ||||
| -rw-r--r-- | test/functional/ui/messages_spec.lua | 29 | 
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')  | 
