]> granicus.if.org Git - neomutt/commitdiff
tags: move tags_editor and tags_commit to mx
authorMehdi Abaakouk <sileht@sileht.net>
Wed, 20 Sep 2017 12:43:48 +0000 (14:43 +0200)
committerRichard Russon <rich@flatcap.org>
Tue, 3 Oct 2017 12:47:31 +0000 (13:47 +0100)
This methods handles the run of dedicated methods on the mailbox, and
not the tags list manipulation.

It makes more sense to have it in mx.c like other methods with the same
purpose.

curs_main.c
mutt_tags.c
mutt_tags.h
mx.c
mx.h

index d33d3ded7541c1c9f0b0c87c312789b3de405521..9298b9e297c18155d357bc8d33fd4e0d43ed8aea 100644 (file)
@@ -1857,16 +1857,16 @@ int mutt_index_menu(void)
       case OP_MAIN_MODIFY_TAGS:
       case OP_MAIN_MODIFY_TAGS_THEN_HIDE:
       {
-        if (!Context || ((Context->magic != MUTT_NOTMUCH) && (Context->magic != MUTT_IMAP)))
+        if (!Context || !mx_tags_is_supported(Context))
         {
-          mutt_message(_("No virtual folder, aborting."));
+          mutt_message(_("Folder doesn't support tagging, aborting."));
           break;
         }
         CHECK_MSGCOUNT;
         CHECK_VISIBLE;
         CHECK_READONLY;
 
-        rc = driver_tags_editor(Context, tag ? NULL : driver_tags_get_with_hidden(CURHDR), buf, sizeof(buf));
+        rc = mx_tags_editor(Context, tag ? NULL : driver_tags_get_with_hidden(CURHDR), buf, sizeof(buf));
         if (rc < 0)
           break;
         else if (rc == 0)
@@ -1897,7 +1897,7 @@ int mutt_index_menu(void)
             {
               if (!Context->quiet)
                 mutt_progress_update(&progress, ++px, -1);
-              driver_tags_commit(Context, Context->hdrs[Context->v2r[j]], buf);
+              mx_tags_commit(Context, Context->hdrs[Context->v2r[j]], buf);
               if (op == OP_MAIN_MODIFY_TAGS_THEN_HIDE)
               {
                 bool still_queried = false;
@@ -1919,7 +1919,7 @@ int mutt_index_menu(void)
         }
         else
         {
-          if (driver_tags_commit(Context, CURHDR, buf))
+          if (mx_tags_commit(Context, CURHDR, buf))
           {
             mutt_message(_("Failed to modify tags, aborting."));
             break;
index 4fc60a04716fc07cbe4bea3791f78b060375f9e9..d6957f585ed946721acb12282487bf7e4ec6d754 100644 (file)
@@ -22,7 +22,6 @@
 
 #include "config.h"
 #include "mutt_tags.h"
-#include "context.h"
 #include "globals.h"
 #include "lib/hash.h"
 #include "lib/string2.h"
@@ -231,21 +230,3 @@ int driver_tags_replace(struct Header *h, char *tags)
   }
   return 1;
 }
-
-int driver_tags_editor(struct Context *ctx, const char *tags, char *buf, size_t buflen)
-{
-  if (ctx->mx_ops->edit_msg_tags)
-    return ctx->mx_ops->edit_msg_tags(ctx, tags, buf, buflen);
-
-  mutt_message(_("Folder doesn't support tagging, aborting."));
-  return -1;
-}
-
-int driver_tags_commit(struct Context *ctx, struct Header *h, char *tags)
-{
-  if (ctx->mx_ops->commit_msg_tags)
-    return ctx->mx_ops->commit_msg_tags(ctx, h, tags);
-
-  mutt_message(_("Folder doesn't support tagging, aborting."));
-  return -1;
-}
index 708ea1a0f6b0f8dd916efc4cfbf5dd00abcc46bf..71761493004070f461e15f4d33fcd4b8f22cf373 100644 (file)
@@ -24,7 +24,6 @@
 #define _MUTT_TAG_H
 
 #include "header.h"
-#include "context.h"
 
 /**
  * struct TagList - Mail Header Tags
@@ -64,7 +63,5 @@ const char *driver_tags_get_transformed(struct Header *h);
 const char *driver_tags_get_transformed_for(char *name, struct Header *h);
 void driver_tags_init(struct Header *h);
 int driver_tags_replace(struct Header *h, char *tags);
-int driver_tags_editor(struct Context *ctx, const char *tags, char *buf, size_t buflen);
-int driver_tags_commit(struct Context *ctx, struct Header *h, char *tags);
 
 #endif /* _MUTT_TAG_H */
diff --git a/mx.c b/mx.c
index bd21a8ea92bf0917bd2d691f4221c833039315ed..e04994d93557ec32ee1e34d7d6c66d4634129206 100644 (file)
--- a/mx.c
+++ b/mx.c
@@ -1367,3 +1367,36 @@ int mx_check_empty(const char *path)
   }
   /* not reached */
 }
+
+/**
+ * mx_tags_editor - start the tag editor of the mailbox
+ * @retval -1 Error
+ */
+int mx_tags_editor(struct Context *ctx, const char *tags, char *buf, size_t buflen)
+{
+  if (ctx->mx_ops->edit_msg_tags)
+    return ctx->mx_ops->edit_msg_tags(ctx, tags, buf, buflen);
+
+  mutt_message(_("Folder doesn't support tagging, aborting."));
+  return -1;
+}
+
+/**
+ * mx_tags_commit - save tags to the mailbox
+ */
+int mx_tags_commit(struct Context *ctx, struct Header *h, char *tags)
+{
+  if (ctx->mx_ops->commit_msg_tags)
+    return ctx->mx_ops->commit_msg_tags(ctx, h, tags);
+
+  mutt_message(_("Folder doesn't support tagging, aborting."));
+  return -1;
+}
+
+/**
+ * mx_tags_is_supported - return true if mailbox support tagging
+ */
+int mx_tags_is_supported(struct Context *ctx)
+{
+  return ctx->mx_ops->commit_msg_tags && ctx->mx_ops->edit_msg_tags;
+}
diff --git a/mx.h b/mx.h
index a4fb157f8943cf69aa69b2107f900fe771a36ada..64f2320b0c84749367b04fcffb1efc64291ce3a0 100644 (file)
--- a/mx.h
+++ b/mx.h
@@ -110,6 +110,10 @@ int mh_sync_mailbox_message(struct Context *ctx, int msgno);
 bool mx_is_notmuch(const char *p);
 #endif
 
+int mx_tags_editor(struct Context *ctx, const char *tags, char *buf, size_t buflen);
+int mx_tags_commit(struct Context *ctx, struct Header *h, char *tags);
+int mx_tags_is_supported(struct Context *ctx);
+
 FILE *maildir_open_find_message(const char *folder, const char *msg, char **newname);
 
 int mbox_strict_cmp_headers(const struct Header *h1, const struct Header *h2);