summaryrefslogtreecommitdiffstats
path: root/pattern.c
diff options
context:
space:
mode:
authorThomas Roessler <roessler@does-not-exist.org>1999-02-11 17:46:03 +0000
committerThomas Roessler <roessler@does-not-exist.org>1999-02-11 17:46:03 +0000
commitb71ec4bc625c9ee51a7679830fc6121c39e4a772 (patch)
treefb4ad5b554c079dee13fcaaea7d3a7be33752d20 /pattern.c
parent8825e56268b40df08a1ab54740de425ff01c425d (diff)
curs_main.c: Check whether the user pressed a number before putting
it back onto the stack. (OP_JUMP) pattern.c: Vikas' latest fix.
Diffstat (limited to 'pattern.c')
-rw-r--r--pattern.c34
1 files changed, 13 insertions, 21 deletions
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)
{