#include "nntp.h"
#endif
+#ifdef USE_SASL
+#include "mutt_sasl.h"
+#endif
+
#include "lib/mem.h"
#include "lib/intl.h"
#include "lib/str.h"
N_("Function not permitted in attach-message mode.");
static const char *No_visible = N_("No visible messages.");
+#define CHECK_IN_MAILBOX if (!Context) \
+ { \
+ mutt_flushinp (); \
+ mutt_error (_(No_mailbox_is_open)); \
+ break; \
+ }
+
#define CHECK_MSGCOUNT if (!Context) \
{ \
- mutt_flushinp (); \
+ mutt_flushinp (); \
mutt_error(_(No_mailbox_is_open)); \
break; \
} \
#define CURHDR Context->hdrs[Context->v2r[menu->current]]
#define OLDHDR Context->hdrs[Context->v2r[menu->oldcurrent]]
#define UNREAD(h) mutt_thread_contains_unread (Context, h)
+#define SW (option(OPTMBOXPANE)?SidebarWidth:0)
extern const char *ReleaseDate;
extern size_t UngetCount;
* they will be visible in the limited view */
if (Context->pattern) {
#define THIS_BODY Context->hdrs[j]->content
- if (oldcount || check == M_REOPENED) {
- for (j = (check == M_REOPENED) ? 0 : oldcount; j < Context->msgcount;
- j++) {
- if (mutt_pattern_exec
- (Context->limit_pattern, M_MATCH_FULL_ADDRESS, Context,
- Context->hdrs[j])) {
- Context->hdrs[j]->virtual = Context->vcount;
- Context->v2r[Context->vcount] = j;
- Context->hdrs[j]->limited = 1;
- Context->vcount++;
- Context->vsize +=
- THIS_BODY->length + THIS_BODY->offset - THIS_BODY->hdr_offset;
- }
+ for (j = (check == M_REOPENED) ? 0 : oldcount; j < Context->msgcount; j++) {
+ if (mutt_pattern_exec
+ (Context->limit_pattern, M_MATCH_FULL_ADDRESS, Context,
+ Context->hdrs[j])) {
+ Context->hdrs[j]->virtual = Context->vcount;
+ Context->v2r[Context->vcount] = j;
+ Context->hdrs[j]->limited = 1;
+ Context->vcount++;
+ Context->vsize +=
+ THIS_BODY->length + THIS_BODY->offset - THIS_BODY->hdr_offset;
}
}
#undef THIS_BODY
}
if (menu->redraw & REDRAW_STATUS) {
- DrawFullLine = 1;
menu_status_line (buf, sizeof (buf), menu, NONULL (Status));
- DrawFullLine = 0;
CLEARLINE (option (OPTSTATUSONTOP) ? 0 : LINES - 2);
+ sidebar_draw_frames();
SETCOLOR (MT_COLOR_STATUS);
BKGDSET (MT_COLOR_STATUS);
- mutt_paddstr (COLS, buf);
+ move(option (OPTSTATUSONTOP) ? 0 : LINES - 2,SW);
+ mutt_paddstr (COLS-SW, buf);
SETCOLOR (MT_COLOR_NORMAL);
BKGDSET (MT_COLOR_NORMAL);
sidebar_set_buffystats (Context);
move (menu->current - menu->top + menu->offset, COLS - 1);
mutt_refresh ();
- op = km_dokey (MENU_MAIN);
-
- debug_print (4, ("Got op %d\n", op));
-
#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM)
if (SigWinch) {
mutt_flushinp ();
}
#endif
+ op = km_dokey (MENU_MAIN);
+
+ debug_print (4, ("Got op %d\n", op));
+
if (op == -1)
continue; /* either user abort or timeout */
if (op == OP_GET_MESSAGE) {
buf[0] = 0;
- if (mutt_get_field (_("Enter Message-Id: "), buf, sizeof (buf), 0)
+ if (mutt_get_field (_("Enter Message-ID: "), buf, sizeof (buf), 0)
!= 0 || !buf[0])
break;
}
int old = CURHDR->index, i;
if (!CURHDR->env->message_id) {
- mutt_error (_("No Message-Id. Unable to perform operation"));
+ mutt_error (_("No Message-ID. Unable to perform operation"));
break;
}
break;
case OP_MAIN_SHOW_LIMIT:
- CHECK_MSGCOUNT;
+ CHECK_IN_MAILBOX;
if (!Context->pattern)
mutt_message (_("No limit pattern is in effect."));
case OP_MAIN_LIMIT:
case OP_TOGGLE_READ:
- CHECK_MSGCOUNT;
+ CHECK_IN_MAILBOX;
menu->oldcurrent = (Context->vcount && menu->current >= 0
&& menu->current <
Context->vcount) ? CURHDR->index : -1;
else
menu->current = 0;
menu->redraw = REDRAW_INDEX | REDRAW_STATUS;
- if ((Sort & SORT_MASK) == SORT_THREADS)
+ if (Context->msgcount && (Sort & SORT_MASK) == SORT_THREADS)
mutt_draw_tree (Context);
menu->redraw = REDRAW_FULL;
}
+ if (Context->pattern)
+ mutt_message _("To view all messages, limit to \"all\".");
break;
case OP_QUIT:
if (op == OP_SIDEBAR_OPEN) {
strncpy (buf, NONULL(sidebar_get_current ()), sizeof (buf));
}
- else if (mutt_enter_fname (cp, buf, sizeof (buf), &menu->redraw, 1) ==
- -1)
- break;
+ else if (mutt_enter_fname (cp, buf, sizeof (buf), &menu->redraw, 1) == -1) {
+ if (menu->menu == MENU_PAGER) {
+ op = OP_DISPLAY_MESSAGE;
+ continue;
+ } else
+ break;
+ }
if (!buf[0]) {
CLEARLINE (LINES - 1);
break;
case OP_TOGGLE_WRITE:
- CHECK_MSGCOUNT;
+ CHECK_IN_MAILBOX;
if (mx_toggle_write (Context) == 0)
menu->redraw |= REDRAW_STATUS;
break;
CHECK_MSGCOUNT;
CHECK_VISIBLE;
mutt_pipe_message (tag ? NULL : CURHDR);
+#ifdef USE_IMAP
+ /* in an IMAP folder index with imap_peek=no, piping could change
+ * * new or old messages status to read. Redraw what's needed.
+ */
+ if (Context->magic == M_IMAP && !option (OPTIMAPPEEK)) {
+ menu->redraw = (tag ? REDRAW_INDEX : REDRAW_CURRENT) | REDRAW_STATUS;
+ }
+#endif
MAYBE_REDRAW (menu->redraw);
break;
CHECK_MSGCOUNT;
CHECK_VISIBLE;
mutt_print_message (tag ? NULL : CURHDR);
+#ifdef USE_IMAP
+ /* in an IMAP folder index with imap_peek=no, piping could change
+ * * new or old messages status to read. Redraw what's needed.
+ */
+ if (Context->magic == M_IMAP && !option (OPTIMAPPEEK)) {
+ menu->redraw = (tag ? REDRAW_INDEX : REDRAW_CURRENT) | REDRAW_STATUS;
+ }
+#endif
break;
case OP_MAIN_READ_THREAD:
mutt_what_key ();
break;
+ case OP_REBUILD_CACHE:
+ mx_rebuild_cache ();
+ break;
+
case OP_SIDEBAR_SCROLL_UP:
case OP_SIDEBAR_SCROLL_DOWN:
case OP_SIDEBAR_NEXT:
break;
}
+ if (!attach_msg) {
#ifdef USE_IMAP
/* Close all open IMAP connections */
- if (!attach_msg)
imap_logout_all ();
#endif
#ifdef USE_NNTP
/* Close all open NNTP connections */
- if (!attach_msg)
nntp_logout_all ();
#endif
+#ifdef USE_SASL
+ mutt_sasl_done ();
+#endif
+ }
mutt_menuDestroy (&menu);
return (close);