[prev in list] [next in list] [prev in thread] [next in thread]
List: mutt-dev
Subject: Support for treating cur/ as new/ when using Maildir
From: Martin Sandsmark <martin.sandsmark () kde ! org>
Date: 2015-07-18 20:12:23
Message-ID: 20150718201223.GA27456 () viritrilbia ! samfundet ! no
[Download RAW message or body]
Hi!
Because dovecot apparently refuses to let my mail stay in new/ when I try to
fetch mail over IMAP, I sat down and implemented support for treating the
cur/ folder similar to new/ in buffy. I also had to change the check for
maildir tags a bit, so it treats both S and T as read, instead of just T.
I added a new configuration option "maildir_cur_as_new" to toggle this, as I
assume not everyone wants this.
I'll inline the patch here for easier review:
# HG changeset patch
# User Martin Sandsmark <martin@sandsmark.ninja>
# Date 1437237632 -7200
# Sat Jul 18 18:40:32 2015 +0200
# Node ID 2166c90c26410297cbc0316259cb343566c7360a
# Parent 2ca89bed64480780d0a435e89c13dba06c748094
Add support for treating cur/ as new/ in buffy
diff -r 2ca89bed6448 -r 2166c90c2641 buffy.c
--- a/buffy.c Sat Jul 11 14:36:51 2015 -0700
+++ b/buffy.c Sat Jul 18 18:40:32 2015 +0200
@@ -285,8 +285,8 @@
return 0;
}
-/* returns 1 if maildir has new mail */
-static int buffy_maildir_hasnew (BUFFY* mailbox)
+/* returns 1 if the specified dir (cur or new) has new mail */
+static int buffy_maildir_dir_hasnew(BUFFY* mailbox, const char *dir_name)
{
char path[_POSIX_PATH_MAX];
DIR *dirp;
@@ -295,7 +295,7 @@
int rc = 0;
struct stat sb;
- snprintf (path, sizeof (path), "%s/new", mailbox->path);
+ snprintf (path, sizeof (path), "%s/%s", mailbox->path, dir_name);
/* when $mail_check_recent is set, if the new/ directory hasn't been modified since
* the user last exited the mailbox, then we know there is no recent mail.
@@ -317,7 +317,7 @@
if (*de->d_name == '.')
continue;
- if (!(p = strstr (de->d_name, ":2,")) || !strchr (p + 3, 'T'))
+ if (!(p = strstr (de->d_name, ":2,")) || !(strchr (p + 3, 'T') || strchr(p + 3, 'S')))
{
if (option(OPTMAILCHECKRECENT))
{
@@ -340,6 +340,23 @@
return rc;
}
+/* returns 1 if maildir has new mail */
+static int buffy_maildir_hasnew (BUFFY* mailbox)
+{
+ if (buffy_maildir_dir_hasnew(mailbox, "new")) {
+ return 1;
+ }
+
+ if (!option(OPTMAILDIRCURASNEW)) {
+ return 0;
+ }
+
+ if (buffy_maildir_dir_hasnew(mailbox, "cur")) {
+ return 1;
+ }
+
+ return 0;
+}
/* returns 1 if mailbox has new mail */
static int buffy_mbox_hasnew (BUFFY* mailbox, struct stat *sb)
{
diff -r 2ca89bed6448 -r 2166c90c2641 init.h
--- a/init.h Sat Jul 11 14:36:51 2015 -0700
+++ b/init.h Sat Jul 18 18:40:32 2015 +0200
@@ -1420,6 +1420,13 @@
** to maildir-style mailboxes. Setting it will have no effect on other
** mailbox types.
*/
+ { "maildir_cur_as_new", DT_BOOL, R_NONE, OPTMAILDIRCURASNEW, 0 },
+ /*
+ ** .pp
+ ** If \fIset\fP, mutt will treat messages in cur the same way as in new.
+ ** \fBNote:\fP this only applies to maildir-style mailboxes. Setting it
+ ** will have no effect on other mailbox types.
+ */
{ "mark_old", DT_BOOL, R_BOTH, OPTMARKOLD, 1 },
/*
** .pp
diff -r 2ca89bed6448 -r 2166c90c2641 mutt.h
--- a/mutt.h Sat Jul 11 14:36:51 2015 -0700
+++ b/mutt.h Sat Jul 18 18:40:32 2015 +0200
@@ -387,6 +387,7 @@
OPTMAILCAPSANITIZE,
OPTMAILCHECKRECENT,
OPTMAILDIRTRASH,
+ OPTMAILDIRCURASNEW,
OPTMARKERS,
OPTMARKOLD,
OPTMENUSCROLL, /* scroll menu instead of implicit next-page */
--
Martin Sandsmark
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic