vim-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)

451f849fd6
This commit is contained in:
Michael Ennen
2016-11-26 16:34:52 -07:00
parent 3979c6cbed
commit d2be11fbf2
6 changed files with 93 additions and 8 deletions

View File

@@ -720,14 +720,47 @@ int delete_first_msg(void)
void ex_messages(exarg_T *eap)
{
struct msg_hist *p;
int c = 0;
msg_hist_off = TRUE;
if (STRCMP(eap->arg, "clear") == 0) {
int keep = eap->addr_count == 0 ? 0 : eap->line2;
for (p = first_msg_hist; p != NULL && !got_int; p = p->next)
if (p->msg != NULL)
while (msg_hist_len > keep) {
(void)delete_first_msg();
}
return;
}
if (*eap->arg != NUL) {
EMSG(_(e_invarg));
return;
}
msg_hist_off = true;
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);
}
}
msg_hist_off = FALSE;
msg_hist_off = false;
}
/*