-*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
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.
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
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,
{
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;
_("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);
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
--- /dev/null
+" 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
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1735,
/**/
1734,
/**/