+static void
+format_message_text (unused (const void *ctx),
+ notmuch_message_t *message,
+ int indent);
+static void
+format_headers_text (const void *ctx,
+ notmuch_message_t *message);
+
+static void
+format_part_start_text (GMimeObject *part,
+ int *part_count);
+
+static void
+format_part_content_text (GMimeObject *part);
+
+static void
+format_part_end_text (GMimeObject *part);
+
+static const notmuch_show_format_t format_text = {
+ "",
+ "\fmessage{ ", format_message_text,
+ "\fheader{\n", format_headers_text, "\fheader}\n",
+ "\fbody{\n",
+ format_part_start_text,
+ NULL,
+ NULL,
+ format_part_content_text,
+ format_part_end_text,
+ "",
+ "\fbody}\n",
+ "\fmessage}\n", "",
+ ""
+};
+
+static void
+format_message_json (const void *ctx,
+ notmuch_message_t *message,
+ unused (int indent));
+static void
+format_headers_json (const void *ctx,
+ notmuch_message_t *message);
+
+static void
+format_part_start_json (unused (GMimeObject *part),
+ int *part_count);
+
+static void
+format_part_encstatus_json (int status);
+
+static void
+format_part_sigstatus_json (const GMimeSignatureValidity* validity);
+
+static void
+format_part_content_json (GMimeObject *part);
+
+static void
+format_part_end_json (GMimeObject *part);
+
+static const notmuch_show_format_t format_json = {
+ "[",
+ "{", format_message_json,
+ ", \"headers\": {", format_headers_json, "}",
+ ", \"body\": [",
+ format_part_start_json,
+ format_part_encstatus_json,
+ format_part_sigstatus_json,
+ format_part_content_json,
+ format_part_end_json,
+ ", ",
+ "]",
+ "}", ", ",
+ "]"
+};
+
+static void
+format_message_mbox (const void *ctx,
+ notmuch_message_t *message,
+ unused (int indent));
+
+static const notmuch_show_format_t format_mbox = {
+ "",
+ "", format_message_mbox,
+ "", NULL, "",
+ "",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "",
+ "",
+ "", "",
+ ""
+};
+
+static void
+format_part_content_raw (GMimeObject *part);
+
+static const notmuch_show_format_t format_raw = {
+ "",
+ "", NULL,
+ "", NULL, "",
+ "",
+ NULL,
+ NULL,
+ NULL,
+ format_part_content_raw,
+ NULL,
+ "",
+ "",
+ "", "",
+ ""
+};
+