[vim] 49/139: 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)

James McCoy jamessan at debian.org
Fri May 6 04:00:00 UTC 2016


This is an automated email from the git hooks/post-receive script.

jamessan pushed a commit to branch debian/sid
in repository vim.

commit 451f849fd6282a4facd4f0f58af62837443fb5a6
Author: Bram Moolenaar <Bram at vim.org>
Date:   Thu Apr 14 17:16:22 2016 +0200

    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)
---
 runtime/doc/message.txt       | 14 ++++++++++++--
 src/ex_cmds.h                 |  2 +-
 src/message.c                 | 34 +++++++++++++++++++++++++++++++++-
 src/testdir/test_alot.vim     |  1 +
 src/testdir/test_messages.vim | 42 ++++++++++++++++++++++++++++++++++++++++++
 src/version.c                 |  2 ++
 6 files changed, 91 insertions(+), 4 deletions(-)

diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt
index 56745f3..d41915e 100644
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -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
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 34defea..4095331 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -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,
diff --git a/src/message.c b/src/message.c
index 099c3aa..b24013e 100644
--- a/src/message.c
+++ b/src/message.c
@@ -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 at 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);
 
diff --git a/src/testdir/test_alot.vim b/src/testdir/test_alot.vim
index 7f9a1a7..d393fe7 100644
--- a/src/testdir/test_alot.vim
+++ b/src/testdir/test_alot.vim
@@ -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
diff --git a/src/testdir/test_messages.vim b/src/testdir/test_messages.vim
new file mode 100644
index 0000000..4d7e411
--- /dev/null
+++ b/src/testdir/test_messages.vim
@@ -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
diff --git a/src/version.c b/src/version.c
index a013661..93c74d3 100644
--- a/src/version.c
+++ b/src/version.c
@@ -749,6 +749,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1735,
+/**/
     1734,
 /**/
     1733,

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-vim/vim.git



More information about the pkg-vim-maintainers mailing list