Re: new mail notification
- To: mutt-dev@xxxxxxxx
- Subject: Re: new mail notification
- From: Mehturt <mehturt@xxxxxxxxx>
- Date: Fri, 25 Jun 2010 10:57:57 +0200
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:content-type; bh=6n1GL3ERCNRbgkbeO/wGcJb+avFdl4OfAC4ghJw1Jz4=; b=ujW4aW12cumWG+6n/aUAZD9WIBxEjRwDBr0LcYDUdmZSbHXXASBZkvAip3/GccF7zK 0QAxFdglLawQcjIN2pbz2aB/vxD+B/uaXDo4Yq2+DikUljyPyNbTx5aBEJ1U6w0jKmNj h/3HMFKSFyWBNQsL/HQuSp5REHTxS+Fja1BOc=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:content-type; b=JCgNEWzzpN0eQg0wDghsU1Njvcd2qSlXxD8YSw5ZpMaretkdfEMozKRo7j0ORFTx/K 3NmuQh6W+GkdCxfxM9EonHUg6c5Oh1kQv6viluiurMITrKDUnkqd8PCi2dYDsNs5adip 7dLAvvp1cnmvUChO/lZvCAAikhybNVQjjMj3k=
- In-reply-to: <20100624151854.GN2266@xxxxxxxxxxxxxxxxxxx>
- List-post: <mailto:mutt-dev@mutt.org>
- List-unsubscribe: send mail to majordomo@mutt.org, body only "unsubscribe mutt-dev"
- References: <AANLkTikBZzwXp5_hqhKo6Ed0yIztsQUx3lSnn8p3fHY3@xxxxxxxxxxxxxx> <20100624151854.GN2266@xxxxxxxxxxxxxxxxxxx>
- Sender: owner-mutt-dev@xxxxxxxx
On Thu, Jun 24, 2010 at 5:18 PM, David Champion <dgc@xxxxxxxxxxxx> wrote:
> If you could rework this as a receive-hook (a hook like mutt's other
> hooks which triggers when new mail is received) it would be more
> flexible and would probably look more attractive to the maintainers.
David, thanks a lot for your comment.
A patch is attached, please have a look.
m.
diff -rupN mutt-1.5.20/curs_main.c mutt-1.5.20-my/curs_main.c
--- mutt-1.5.20/curs_main.c 2009-06-14 04:48:36.000000000 +0200
+++ mutt-1.5.20-my/curs_main.c 2010-06-25 10:40:19.000000000 +0200
@@ -502,6 +502,7 @@ int mutt_index_menu (void)
mutt_message _("New mail in this mailbox.");
if (option (OPTBEEPNEW))
beep ();
+ mutt_message_hook (Context, 0, M_RECEIVEHOOK);
} else if (check == M_FLAGS)
mutt_message _("Mailbox was externally modified.");
diff -rupN mutt-1.5.20/hook.c mutt-1.5.20-my/hook.c
--- mutt-1.5.20/hook.c 2009-01-13 15:47:49.000000000 +0100
+++ mutt-1.5.20-my/hook.c 2010-06-25 10:49:14.000000000 +0200
@@ -70,7 +70,7 @@ int mutt_parse_hook (BUFFER *buf, BUFFER
goto error;
}
- mutt_extract_token (&command, s, (data & (M_FOLDERHOOK | M_SENDHOOK |
M_SEND2HOOK | M_ACCOUNTHOOK | M_REPLYHOOK)) ? M_TOKEN_SPACE : 0);
+ mutt_extract_token (&command, s, (data & (M_FOLDERHOOK | M_SENDHOOK |
M_SEND2HOOK | M_ACCOUNTHOOK | M_REPLYHOOK | M_RECEIVEHOOK)) ? M_TOKEN_SPACE :
0);
if (!command.data)
{
@@ -154,10 +154,10 @@ int mutt_parse_hook (BUFFER *buf, BUFFER
break;
}
- if (data & (M_SENDHOOK | M_SEND2HOOK | M_SAVEHOOK | M_FCCHOOK |
M_MESSAGEHOOK | M_REPLYHOOK))
+ if (data & (M_SENDHOOK | M_SEND2HOOK | M_SAVEHOOK | M_FCCHOOK |
M_MESSAGEHOOK | M_REPLYHOOK | M_RECEIVEHOOK))
{
if ((pat = mutt_pattern_comp (pattern.data,
- (data & (M_SENDHOOK | M_SEND2HOOK | M_FCCHOOK)) ? 0 : M_FULL_MSG,
+ (data & (M_SENDHOOK | M_SEND2HOOK | M_FCCHOOK | M_RECEIVEHOOK)) ? 0
: M_FULL_MSG,
err)) == NULL)
goto error;
}
diff -rupN mutt-1.5.20/init.h mutt-1.5.20-my/init.h
--- mutt-1.5.20/init.h 2009-06-13 23:35:21.000000000 +0200
+++ mutt-1.5.20-my/init.h 2010-06-25 10:42:10.000000000 +0200
@@ -3504,5 +3504,7 @@ struct command_t Commands[] = {
{ "unscore", mutt_parse_unscore, 0 },
{ "unset", parse_set, M_SET_UNSET },
{ "unsubscribe", parse_unsubscribe, 0 },
+ { "receive-hook", mutt_parse_hook, M_RECEIVEHOOK },
+ { "system", mutt_parse_system, 0 },
{ NULL, NULL, 0 }
};
diff -rupN mutt-1.5.20/mutt.h mutt-1.5.20-my/mutt.h
--- mutt-1.5.20/mutt.h 2009-06-13 00:15:42.000000000 +0200
+++ mutt-1.5.20-my/mutt.h 2010-06-25 09:27:33.000000000 +0200
@@ -146,6 +146,7 @@ typedef enum
#define M_ACCOUNTHOOK (1<<9)
#define M_REPLYHOOK (1<<10)
#define M_SEND2HOOK (1<<11)
+#define M_RECEIVEHOOK (1<<12)
/* tree characters for linearize_tree and print_enriched_string */
#define M_TREE_LLCORNER 1
diff -rupN mutt-1.5.20/protos.h mutt-1.5.20-my/protos.h
--- mutt-1.5.20/protos.h 2009-06-13 01:38:52.000000000 +0200
+++ mutt-1.5.20-my/protos.h 2010-06-25 09:58:40.000000000 +0200
@@ -51,6 +51,8 @@ void mutt_free_opts (void);
#define mutt_system(x) _mutt_system(x,0)
int _mutt_system (const char *, int);
+int mutt_parse_system (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER
*err);
+
#define mutt_next_thread(x) _mutt_aside_thread(x,1,0)
#define mutt_previous_thread(x) _mutt_aside_thread(x,0,0)
#define mutt_next_subthread(x) _mutt_aside_thread(x,1,1)
diff -rupN mutt-1.5.20/system.c mutt-1.5.20-my/system.c
--- mutt-1.5.20/system.c 2008-11-11 20:55:47.000000000 +0100
+++ mutt-1.5.20-my/system.c 2010-06-25 10:27:08.000000000 +0200
@@ -139,3 +139,14 @@ int _mutt_system (const char *cmd, int f
return (rc);
}
+
+/* system command-name */
+int mutt_parse_system (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)
+{
+ if (s->dptr != NULL)
+ {
+ mutt_system(s->dptr);
+ s->dptr += strlen(s->dptr);
+ }
+ return 0;
+}