OP_FLAG_MESSAGE "toggle a message's 'important' flag"
OP_FORWARD_MESSAGE "forward a message with comments"
OP_GENERIC_SELECT_ENTRY "select the current entry"
+OP_GROUP_CHAT_REPLY "reply to all recipients preserving To/Cc"
OP_GROUP_REPLY "reply to all recipients"
OP_HALF_DOWN "scroll down 1/2 page"
OP_HALF_UP "scroll up 1/2 page"
crypt_forget_passphrase ();
break;
- case OP_GROUP_REPLY:
-
- CHECK_MSGCOUNT;
- CHECK_VISIBLE;
- CHECK_ATTACH;
- if (option (OPTPGPAUTODEC) && (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED)))
- mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);
- ci_send_message (SENDREPLY|SENDGROUPREPLY, NULL, NULL, Context, tag ? NULL : CURHDR);
- menu->redraw = REDRAW_FULL;
- break;
-
case OP_EDIT_LABEL:
CHECK_MSGCOUNT;
}
break;
- case OP_LIST_REPLY:
-
- CHECK_ATTACH;
- CHECK_MSGCOUNT;
- CHECK_VISIBLE;
- if (option (OPTPGPAUTODEC) && (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED)))
- mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);
- ci_send_message (SENDREPLY|SENDLISTREPLY, NULL, NULL, Context, tag ? NULL : CURHDR);
- menu->redraw = REDRAW_FULL;
- break;
-
case OP_MAIL:
CHECK_ATTACH;
break;
case OP_REPLY:
+ case OP_GROUP_REPLY:
+ case OP_GROUP_CHAT_REPLY:
+ case OP_LIST_REPLY:
+ {
+ int replyflags;
CHECK_ATTACH;
CHECK_MSGCOUNT;
CHECK_VISIBLE;
+
+ replyflags = SENDREPLY |
+ (op == OP_GROUP_REPLY ? SENDGROUPREPLY : 0) |
+ (op == OP_GROUP_CHAT_REPLY ? SENDGROUPCHATREPLY : 0) |
+ (op == OP_LIST_REPLY ? SENDLISTREPLY : 0);
+
if (option (OPTPGPAUTODEC) && (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED)))
mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);
- ci_send_message (SENDREPLY, NULL, NULL, Context, tag ? NULL : CURHDR);
+ ci_send_message (replyflags, NULL, NULL, Context, tag ? NULL : CURHDR);
menu->redraw = REDRAW_FULL;
break;
+ }
case OP_SHELL_ESCAPE:
<row><entry>m</entry><entry><literal><compose></literal></entry><entry>compose a new message</entry></row>
<row><entry>r</entry><entry><literal><reply></literal></entry><entry>reply to sender</entry></row>
<row><entry>g</entry><entry><literal><group-reply></literal></entry><entry>reply to all recipients</entry></row>
+<row><entry></entry><entry><literal><group-chat-reply></literal></entry><entry>reply to all recipients preserving To/Cc</entry></row>
<row><entry>L</entry><entry><literal><list-reply></literal></entry><entry>reply to mailing list address</entry></row>
<row><entry>f</entry><entry><literal><forward></literal></entry><entry>forward message</entry></row>
<row><entry>b</entry><entry><literal><bounce></literal></entry><entry>bounce (remail) message</entry></row>
<term>Group reply</term>
<listitem>
<para>
-Reply to the author as well to all recipients except you; this consults
-<link linkend="alternates"><command>alternates</command></link>.
+Reply to the author; cc all other recipients; consults
+<link linkend="alternates"><command>alternates</command></link>
+and excludes you.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Group Chat reply</term>
+<listitem>
+<para>
+Reply to the author and other recipients in the To list;
+cc other recipients in the Cc list; consults
+<link linkend="alternates"><command>alternates</command></link>
+and excludes you.
</para>
</listitem>
</varlistentry>
{ "edit-type", OP_EDIT_TYPE, "\005" },
{ "forward-message", OP_FORWARD_MESSAGE, "f" },
{ "flag-message", OP_FLAG_MESSAGE, "F" },
+ { "group-chat-reply", OP_GROUP_CHAT_REPLY, NULL },
{ "group-reply", OP_GROUP_REPLY, "g" },
#ifdef USE_POP
{ "fetch-mail", OP_MAIN_FETCH_MAIL, "G" },
{ "edit-type", OP_EDIT_TYPE, "\005" },
{ "forward-message", OP_FORWARD_MESSAGE, "f" },
{ "flag-message", OP_FLAG_MESSAGE, "F" },
+ { "group-chat-reply", OP_GROUP_CHAT_REPLY, NULL },
{ "group-reply", OP_GROUP_REPLY, "g" },
#ifdef USE_IMAP
{ "imap-fetch-mail", OP_MAIN_IMAP_FETCH, NULL },
{ "view-mailcap", OP_ATTACH_VIEW_MAILCAP, "m" },
{ "reply", OP_REPLY, "r" },
{ "resend-message", OP_RESEND, "\033e" },
+ { "group-chat-reply", OP_GROUP_CHAT_REPLY, NULL },
{ "group-reply", OP_GROUP_REPLY, "g" },
{ "list-reply", OP_LIST_REPLY, "L" },
{ "forward-message", OP_FORWARD_MESSAGE, "f" },
#define SENDPOSTPONEDFCC (1<<9) /* used by mutt_get_postponed() to signal that the x-mutt-fcc header field was present */
#define SENDNOFREEHEADER (1<<10) /* Used by the -E flag */
#define SENDDRAFTFILE (1<<11) /* Used by the -H flag */
-#define SENDTOSENDER (1<<12)
+#define SENDTOSENDER (1<<12)
+#define SENDGROUPCHATREPLY (1<<13)
/* flags for mutt_compose_menu() */
#define MUTT_COMPOSE_NOFREEHEADER (1<<0)
break;
case OP_REPLY:
+ case OP_GROUP_REPLY:
+ case OP_GROUP_CHAT_REPLY:
+ case OP_LIST_REPLY:
+ {
+ int replyflags;
+
CHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));
CHECK_ATTACH;
+
+ replyflags = SENDREPLY |
+ (ch == OP_GROUP_REPLY ? SENDGROUPREPLY : 0) |
+ (ch == OP_GROUP_CHAT_REPLY ? SENDGROUPCHATREPLY : 0) |
+ (ch == OP_LIST_REPLY ? SENDLISTREPLY : 0);
+
if (IsMsgAttach (extra))
mutt_attach_reply (extra->fp, extra->hdr, extra->actx,
- extra->bdy, SENDREPLY);
+ extra->bdy, replyflags);
else
- ci_send_message (SENDREPLY, NULL, NULL, extra->ctx, extra->hdr);
+ ci_send_message (replyflags, NULL, NULL, extra->ctx, extra->hdr);
pager_menu->redraw = REDRAW_FULL;
break;
+ }
case OP_RECALL_MESSAGE:
CHECK_MODE(IsHeader (extra) && !IsAttach(extra));
pager_menu->redraw = REDRAW_FULL;
break;
- case OP_GROUP_REPLY:
- CHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));
- CHECK_ATTACH;
- if (IsMsgAttach (extra))
- mutt_attach_reply (extra->fp, extra->hdr, extra->actx,
- extra->bdy, SENDREPLY|SENDGROUPREPLY);
- else
- ci_send_message (SENDREPLY | SENDGROUPREPLY, NULL, NULL, extra->ctx, extra->hdr);
- pager_menu->redraw = REDRAW_FULL;
- break;
-
- case OP_LIST_REPLY:
- CHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));
- CHECK_ATTACH;
- if (IsMsgAttach (extra))
- mutt_attach_reply (extra->fp, extra->hdr, extra->actx,
- extra->bdy, SENDREPLY|SENDLISTREPLY);
- else
- ci_send_message (SENDREPLY | SENDLISTREPLY, NULL, NULL, extra->ctx, extra->hdr);
- pager_menu->redraw = REDRAW_FULL;
- break;
-
case OP_FORWARD_MESSAGE:
CHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));
CHECK_ATTACH;
case OP_REPLY:
case OP_GROUP_REPLY:
+ case OP_GROUP_CHAT_REPLY:
case OP_LIST_REPLY:
CHECK_ATTACH;
flags = SENDREPLY |
(op == OP_GROUP_REPLY ? SENDGROUPREPLY : 0) |
+ (op == OP_GROUP_CHAT_REPLY ? SENDGROUPCHATREPLY : 0) |
(op == OP_LIST_REPLY ? SENDLISTREPLY : 0);
mutt_attach_reply (CURATTACH->fp, hdr, actx,
menu->tagprefix ? NULL : CURATTACH->content, flags);
ADDRESS *tmp;
int hmfupto = -1;
- if ((flags & (SENDLISTREPLY|SENDGROUPREPLY)) && in->mail_followup_to)
+ if ((flags & (SENDLISTREPLY|SENDGROUPREPLY|SENDGROUPCHATREPLY)) &&
+ in->mail_followup_to)
{
snprintf (prompt, sizeof (prompt), _("Follow-up to %s%s?"),
in->mail_followup_to->mailbox,
rfc822_append (&out->to, in->from, 0);
else
{
- if (default_to (&out->to, in, flags & SENDGROUPREPLY, hmfupto) == -1)
+ if (default_to (&out->to, in, flags & (SENDGROUPREPLY|SENDGROUPCHATREPLY),
+ hmfupto) == -1)
return (-1); /* abort */
- if ((flags & SENDGROUPREPLY) && (!in->mail_followup_to || hmfupto != MUTT_YES))
+ if ((flags & (SENDGROUPREPLY|SENDGROUPCHATREPLY)) &&
+ (!in->mail_followup_to || hmfupto != MUTT_YES))
{
/* if (!mutt_addr_is_user(in->to)) */
- rfc822_append (&out->cc, in->to, 1);
+ if (flags & SENDGROUPREPLY)
+ rfc822_append (&out->cc, in->to, 1);
+ else
+ rfc822_append (&out->to, in->to, 1);
rfc822_append (&out->cc, in->cc, 1);
}
}