From: Thomas Roessler Date: Thu, 11 Feb 1999 17:46:03 +0000 (+0000) Subject: curs_main.c: Check whether the user pressed a number before putting X-Git-Tag: mutt-0-96-rel~6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b71ec4bc625c9ee51a7679830fc6121c39e4a772;p=mutt curs_main.c: Check whether the user pressed a number before putting it back onto the stack. (OP_JUMP) pattern.c: Vikas' latest fix. --- diff --git a/curs_main.c b/curs_main.c index d9b580a0..4ea66b6c 100644 --- a/curs_main.c +++ b/curs_main.c @@ -606,7 +606,7 @@ int mutt_index_menu (void) case OP_JUMP: CHECK_MSGCOUNT; - mutt_ungetch (LastKey, 0); + if (isdigit (LastKey)) mutt_ungetch (LastKey, 0); buf[0] = 0; if (mutt_get_field (_("Jump to message: "), buf, sizeof (buf), 0) != 0 || !buf[0]) diff --git a/pattern.c b/pattern.c index f9538857..0103f557 100644 --- a/pattern.c +++ b/pattern.c @@ -316,6 +316,7 @@ int eat_range (pattern_t *pat, BUFFER *s, BUFFER *err) else pat->max = M_MAXRANGE; + SKIPWS (tmp); s->dptr = tmp; return 0; } @@ -967,6 +968,11 @@ int mutt_pattern_func (int op, char *prompt) for (i = 0; i < Context->msgcount; i++) { + /* new limit pattern implicitly uncollapses all threads */ + Context->hdrs[i]->virtual = -1; + Context->hdrs[i]->limited = 0; + Context->hdrs[i]->collapsed = 0; + Context->hdrs[i]->num_hidden = 0; if (mutt_pattern_exec (pat, M_MATCH_FULL_ADDRESS, Context, Context->hdrs[i])) { Context->hdrs[i]->virtual = Context->vcount; @@ -976,13 +982,6 @@ int mutt_pattern_func (int op, char *prompt) Context->vsize+=THIS_BODY->length + THIS_BODY->offset - THIS_BODY->hdr_offset; } - else - { - Context->hdrs[i]->virtual = -1; - Context->hdrs[i]->limited = 0; - Context->hdrs[i]->collapsed = 0; - Context->hdrs[i]->num_hidden = 0; - } } } else @@ -994,17 +993,15 @@ int mutt_pattern_func (int op, char *prompt) switch (op) { case M_DELETE: - mutt_set_flag (Context, Context->hdrs[Context->v2r[i]], M_DELETE, 1); - break; case M_UNDELETE: - mutt_set_flag (Context, Context->hdrs[Context->v2r[i]], M_DELETE, 0); - break; + mutt_set_flag (Context, Context->hdrs[Context->v2r[i]], M_DELETE, + (op == M_DELETE)); + break; case M_TAG: - mutt_set_flag (Context, Context->hdrs[Context->v2r[i]], M_TAG, 1); - break; case M_UNTAG: - mutt_set_flag (Context, Context->hdrs[Context->v2r[i]], M_TAG, 0); - break; + mutt_set_flag (Context, Context->hdrs[Context->v2r[i]], M_TAG, + (op == M_TAG)); + break; } } } @@ -1016,24 +1013,19 @@ int mutt_pattern_func (int op, char *prompt) if (op == M_LIMIT) { - Context->collapsed = 0; safe_free ((void **) &Context->pattern); if (Context->limit_pattern) mutt_pattern_free (&Context->limit_pattern); if (!Context->vcount) { + Context->vcount = Context->msgcount; mutt_error _("No messages matched criteria."); /* restore full display */ for (i = 0; i < Context->msgcount; i++) { Context->hdrs[i]->virtual = i; - Context->hdrs[i]->limited = 0; - Context->hdrs[i]->num_hidden = 0; - Context->hdrs[i]->collapsed = 0; Context->v2r[i] = i; } - - Context->vcount = Context->msgcount; } else if (mutt_strncmp (buf, "~A", 2) != 0) {