0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 7.4.1735

Problem:    It is not possible to only see part of the message history.  It is
            not possible to clear messages.
Solution:   Add a count to ":messages" and a clear argument. (Yasuhiro
            Matsumoto)
This commit is contained in:
Bram Moolenaar
2016-04-14 17:16:22 +02:00
parent 0f518a8f4d
commit 451f849fd6
6 changed files with 91 additions and 4 deletions

View File

@@ -1,4 +1,4 @@
*message.txt* For Vim version 7.4. Last change: 2016 Feb 27
*message.txt* For Vim version 7.4. Last change: 2016 Apr 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -19,6 +19,15 @@ The ":messages" command can be used to view previously given messages. This
is especially useful when messages have been overwritten or truncated. This
depends on the 'shortmess' option.
:messages Show all messages.
:{count}messages Show the {count} most recent messages.
:messages clear Clear all messages.
:{count}messages clear Clear messages, keeping only the {count} most
recent ones.
The number of remembered messages is fixed at 20 for the tiny version and 200
for other versions.
@@ -58,8 +67,9 @@ If you are lazy, it also works without the shift key: >
When an error message is displayed, but it is removed before you could read
it, you can see it again with: >
:echo errmsg
or view a list of recent messages with: >
Or view a list of recent messages with: >
:messages
See `:messages` above.
LIST OF MESSAGES

View File

@@ -886,7 +886,7 @@ EX(CMD_menutranslate, "menutranslate", ex_menutranslate,
EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
ADDR_LINES),
EX(CMD_messages, "messages", ex_messages,
TRLBAR|CMDWIN,
EXTRA|TRLBAR|RANGE|CMDWIN,
ADDR_LINES),
EX(CMD_mkexrc, "mkexrc", ex_mkrc,
BANG|FILE1|TRLBAR|CMDWIN,

View File

@@ -770,6 +770,22 @@ ex_messages(exarg_T *eap UNUSED)
{
struct msg_hist *p;
char_u *s;
int c = 0;
if (STRCMP(eap->arg, "clear") == 0)
{
int keep = eap->addr_count == 0 ? 0 : eap->line2;
while (msg_hist_len > keep)
(void)delete_first_msg();
return;
}
if (*eap->arg != NUL)
{
EMSG(_(e_invarg));
return;
}
msg_hist_off = TRUE;
@@ -779,7 +795,23 @@ ex_messages(exarg_T *eap UNUSED)
_("Messages maintainer: Bram Moolenaar <Bram@vim.org>"),
hl_attr(HLF_T));
for (p = first_msg_hist; p != NULL && !got_int; p = p->next)
p = first_msg_hist;
if (eap->addr_count != 0)
{
/* Count total messages */
for (; p != NULL && !got_int; p = p->next)
c++;
c -= eap->line2;
/* Skip without number of messages specified */
for (p = first_msg_hist; p != NULL && !got_int && c > 0;
p = p->next, c--);
}
/* Display what was not skipped. */
for (; p != NULL && !got_int; p = p->next)
if (p->msg != NULL)
msg_attr(p->msg, p->attr);

View File

@@ -17,6 +17,7 @@ source test_join.vim
source test_lispwords.vim
source test_matchstrpos.vim
source test_menu.vim
source test_messages.vim
source test_partial.vim
source test_reltime.vim
source test_searchpos.vim

View File

@@ -0,0 +1,42 @@
" Tests for :messages
function Test_messages()
let oldmore = &more
try
set nomore
let arr = map(range(10), '"hello" . v:val')
for s in arr
echomsg s | redraw
endfor
let result = ''
redir => result
2messages | redraw
redir END
" get last two messages
let msg = split(result, "\n")[1:][-2:]
call assert_equal(["hello8", "hello9"], msg)
" clear messages without last one
1messages clear
redir => result
redraw | 1messages
redir END
" get last last message
let msg = split(result, "\n")[1:][-1:]
call assert_equal(['hello9'], msg)
" clear all messages
messages clear
redir => result
redraw | 1messages
redir END
" get last last message
let msg = split(result, "\n")[1:][-1:]
call assert_equal([], msg)
finally
let &more = oldmore
endtry
endfunction

View File

@@ -748,6 +748,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1735,
/**/
1734,
/**/