- mutt_create_alias (extra->hdr->env, NULL);
- MAYBE_REDRAW (redraw);
- break;
-
- case OP_PURGE_MESSAGE:
- case OP_DELETE:
- CHECK_MODE(IsHeader (extra));
- CHECK_READONLY;
-
-#ifdef USE_IMAP
-CHECK_IMAP_ACL(IMAP_ACL_DELETE);
-#endif
-
- mutt_set_flag (Context, extra->hdr, M_DELETE, 1);
- mutt_set_flag (Context, extra->hdr, M_PURGED,
- ch != OP_PURGE_MESSAGE ? 0 : 1);
- if (option (OPTDELETEUNTAG))
- mutt_set_flag (Context, extra->hdr, M_TAG, 0);
- redraw = REDRAW_STATUS | REDRAW_INDEX;
- if (option (OPTRESOLVE))
- {
- ch = -1;
- rc = OP_MAIN_NEXT_UNDELETED;
- }
- break;
-
- case OP_DELETE_THREAD:
- case OP_DELETE_SUBTHREAD:
- CHECK_MODE(IsHeader (extra));
- CHECK_READONLY;
-
-#ifdef USE_IMAP
-CHECK_IMAP_ACL(IMAP_ACL_DELETE);
-#endif
-
- r = mutt_thread_set_flag (extra->hdr, M_DELETE, 1,
- ch == OP_DELETE_THREAD ? 0 : 1);
-
- if (r != -1)
- {
- if (option (OPTDELETEUNTAG))
- mutt_thread_set_flag (extra->hdr, M_TAG, 0,
- ch == OP_DELETE_THREAD ? 0 : 1);
- if (option (OPTRESOLVE))
- {
- rc = OP_MAIN_NEXT_UNDELETED;
- ch = -1;
- }
-
- if (!option (OPTRESOLVE) && PagerIndexLines)
- redraw = REDRAW_FULL;
- else
- redraw = REDRAW_STATUS | REDRAW_INDEX;
- }
- break;
-
- case OP_DISPLAY_ADDRESS:
- CHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));
- if (IsMsgAttach (extra))
- mutt_display_address (extra->bdy->hdr->env);
- else
- mutt_display_address (extra->hdr->env);
- break;
-
- case OP_ENTER_COMMAND:
- old_smart_wrap = option (OPTWRAP);
- old_markers = option (OPTMARKERS);
- old_PagerIndexLines = PagerIndexLines;
-
- CurrentMenu = MENU_PAGER;
- mutt_enter_command ();
-
- if (option (OPTNEEDRESORT))
- {
- unset_option (OPTNEEDRESORT);
- CHECK_MODE(IsHeader (extra));
- set_option (OPTNEEDRESORT);
- }
-
- if (old_PagerIndexLines != PagerIndexLines)
- {
- if (index)
- mutt_menuDestroy (&index);
- index = NULL;
- }
-
- if (option (OPTWRAP) != old_smart_wrap ||
- option (OPTMARKERS) != old_markers)
- {
- if (flags & M_PAGER_RETWINCH)
- {
- ch = -1;
- rc = OP_REFORMAT_WINCH;
- continue;
- }
-
- /* count the real lines above */
- j = 0;
- for (i = 0; i <= topline; i++)
- {
- if (!lineInfo[i].continuation)
- j++;
- }
-
- /* we need to restart the whole thing */
- for (i = 0; i < maxLine; i++)
- {
- lineInfo[i].offset = 0;
- lineInfo[i].type = -1;
- lineInfo[i].continuation = 0;
- lineInfo[i].chunks = 0;
- lineInfo[i].search_cnt = -1;
- lineInfo[i].quote = NULL;
-
- safe_realloc (&(lineInfo[i].syntax), sizeof (struct syntax_t));
- if (SearchCompiled && lineInfo[i].search)
- FREE (&(lineInfo[i].search));
- }
-
- if (SearchCompiled)
- {
- regfree (&SearchRE);
- SearchCompiled = 0;
- }
- SearchFlag = 0;
-
- /* try to keep the old position */
- topline = 0;
- lastLine = 0;
- while (j > 0 && display_line (fp, &last_pos, &lineInfo, topline,
- &lastLine, &maxLine,
- (has_types ? M_TYPES : 0),
- &QuoteList, &q_level, &force_redraw,
- &SearchRE) == 0)
- {
- redraw |= REDRAW_SIDEBAR;
- if (! lineInfo[topline].continuation)
- j--;
- if (j > 0)
- topline++;
- }
-
- ch = 0;
- }
-
- if (option (OPTFORCEREDRAWPAGER))
- redraw = REDRAW_FULL;
- unset_option (OPTFORCEREDRAWINDEX);
- unset_option (OPTFORCEREDRAWPAGER);
- break;
-
- case OP_FLAG_MESSAGE:
- CHECK_MODE(IsHeader (extra));
- CHECK_READONLY;
-
-#ifdef USE_POP
- if (Context->magic == M_POP)
- {
- mutt_flushinp ();
- mutt_error _("Can't change 'important' flag on POP server.");
- break;
- }
-#endif
-
-#ifdef USE_IMAP
-CHECK_IMAP_ACL(IMAP_ACL_WRITE);
-#endif
-
-#ifdef USE_NNTP
- if (Context->magic == M_NNTP)
- {
- mutt_flushinp ();
- mutt_error _("Can't change 'important' flag on NNTP server.");
- break;
- }
-#endif
-
- mutt_set_flag (Context, extra->hdr, M_FLAG, !extra->hdr->flagged);
- redraw = REDRAW_STATUS | REDRAW_INDEX;
- if (option (OPTRESOLVE))
- {
- ch = -1;
- rc = OP_MAIN_NEXT_UNDELETED;
- }
- break;
-
- case OP_PIPE:
- CHECK_MODE(IsHeader (extra) || IsAttach (extra));
- if (IsAttach (extra))
- mutt_pipe_attachment_list (extra->fp, 0, extra->bdy, 0);
- else
- mutt_pipe_message (extra->hdr);
- MAYBE_REDRAW (redraw);
- break;
-
- case OP_PRINT:
- CHECK_MODE(IsHeader (extra) || IsAttach (extra));
- if (IsAttach (extra))
- mutt_print_attachment_list (extra->fp, 0, extra->bdy);
- else
- mutt_print_message (extra->hdr);
- break;
-
- case OP_MAIL:
- CHECK_MODE(IsHeader (extra) && !IsAttach (extra));
- CHECK_ATTACH;
- ci_send_message (0, NULL, NULL, extra->ctx, NULL);
- redraw = REDRAW_FULL;
- break;
-
-#ifdef USE_NNTP
- case OP_POST:
- CHECK_MODE(IsHeader (extra) && !IsAttach (extra));
- CHECK_ATTACH;
- if (extra->ctx && extra->ctx->magic == M_NNTP &&
- !((NNTP_DATA *)extra->ctx->data)->allowed &&
- query_quadoption (OPT_TOMODERATED,_("Posting to this group not allowed, may be moderated. Continue?")) != M_YES)
- break;
- ci_send_message (SENDNEWS, NULL, NULL, extra->ctx, NULL);
- redraw = REDRAW_FULL;
- break;
-
- case OP_FORWARD_TO_GROUP:
- CHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));
- CHECK_ATTACH;
- if (extra->ctx && extra->ctx->magic == M_NNTP &&
- !((NNTP_DATA *)extra->ctx->data)->allowed &&
- query_quadoption (OPT_TOMODERATED,_("Posting to this group not allowed, may be moderated. Continue?")) != M_YES)
- break;
- if (IsMsgAttach (extra))
- mutt_attach_forward (extra->fp, extra->hdr, extra->idx,
- extra->idxlen, extra->bdy, SENDNEWS);
- else
- ci_send_message (SENDNEWS|SENDFORWARD, NULL, NULL, extra->ctx, extra->hdr);
- redraw = REDRAW_FULL;
- break;
-
- case OP_FOLLOWUP:
- CHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));
- CHECK_ATTACH;
-
- if (IsMsgAttach (extra))
- followup_to = extra->bdy->hdr->env->followup_to;
- else
- followup_to = extra->hdr->env->followup_to;
-
- if (!followup_to || mutt_strcasecmp (followup_to, "poster") ||
- query_quadoption (OPT_FOLLOWUPTOPOSTER,_("Reply by mail as poster prefers?")) != M_YES)
- {
- if (extra->ctx && extra->ctx->magic == M_NNTP &&
- !((NNTP_DATA *)extra->ctx->data)->allowed &&
- query_quadoption (OPT_TOMODERATED,_("Posting to this group not allowed, may be moderated. Continue?")) != M_YES)
- break;
- if (IsMsgAttach (extra))
- mutt_attach_reply (extra->fp, extra->hdr, extra->idx,
- extra->idxlen, extra->bdy, SENDNEWS|SENDREPLY);
- else
- ci_send_message (SENDNEWS|SENDREPLY, NULL, NULL,
- extra->ctx, extra->hdr);
- redraw = REDRAW_FULL;
- break;
- }
-#endif
-
- case OP_REPLY:
- CHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));
- CHECK_ATTACH;
- if (IsMsgAttach (extra))
- mutt_attach_reply (extra->fp, extra->hdr, extra->idx,
- extra->idxlen, extra->bdy,
- SENDREPLY);
- else
- ci_send_message (SENDREPLY, NULL, NULL, extra->ctx, extra->hdr);
- redraw = REDRAW_FULL;
- break;
-
- case OP_RECALL_MESSAGE:
- CHECK_MODE(IsHeader (extra) && !IsAttach(extra));
- CHECK_ATTACH;
- ci_send_message (SENDPOSTPONED, NULL, NULL, extra->ctx, extra->hdr);
- redraw = REDRAW_FULL;
- break;