]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch.c
notmuch: Add a 'part' subcommand
[notmuch] / notmuch.c
index f45b6924646db094b877fd3a21c4bb3dbb7850c4..6ebe36dbc64ab9d167af8631f5e16614eb6b287f 100644 (file)
--- a/notmuch.c
+++ b/notmuch.c
@@ -52,7 +52,7 @@ static const char search_terms_help[] =
     "\t\t\tto:<name-or-address>\n"
     "\t\t\tsubject:<word-or-quoted-phrase>\n"
     "\t\t\tattachment:<word>\n"
-    "\t\t\ttag:<tag>\n"
+    "\t\t\ttag:<tag> (or is:<tag>)\n"
     "\t\t\tid:<message-id>\n"
     "\t\t\tthread:<thread-id>\n"
     "\n"
@@ -66,7 +66,7 @@ static const char search_terms_help[] =
     "\t\tthe subject of an email. Quoted phrases are supported when\n"
     "\t\tsearching with: subject:\"this is a phrase\".\n"
     "\n"
-    "\t\tFor tag:, valid tag values include \"inbox\" and \"unread\"\n"
+    "\t\tFor tag: and is:, valid tag values include \"inbox\" and \"unread\"\n"
     "\t\tby default for new messages added by \"notmuch new\" as well\n"
     "\t\tas any other tag values added manually with \"notmuch tag\".\n"
     "\n"
@@ -145,11 +145,6 @@ command_t commands[] = {
       "\t\t\tVerbose operation. Shows paths of message files as\n"
       "\t\t\tthey are being indexed.\n"
       "\n"
-      "\t\tNote: \"notmuch new\" runs (other than the first run) will\n"
-      "\t\tskip any read-only directories, so you can use that to mark\n"
-      "\t\tdirectories that will not receive any new mail (and make\n"
-      "\t\t\"notmuch new\" even faster).\n"
-      "\n"
       "\t\tInvoking notmuch with no command argument will run new if\n"
       "\t\tthe setup command has previously been completed, but new has\n"
       "\t\tnot previously been run." },
@@ -162,6 +157,11 @@ command_t commands[] = {
       "\n"
       "\t\tSupported options for search include:\n"
       "\n"
+      "\t\t--format=(json|text)\n"
+      "\n"
+      "\t\t\tPresents the results in either JSON or\n"
+      "\t\t\tplain-text (default)\n"
+      "\n"
       "\t\t--sort=(newest-first|oldest-first)\n"
       "\n"
       "\t\t\tPresent results in either chronological order\n"
@@ -177,13 +177,32 @@ command_t commands[] = {
       "\t\t(all replies to a particular message appear immediately\n"
       "\t\tafter that message in date order).\n"
       "\n"
-      "\t\tThe output format is plain-text, with all text-content\n"
-      "\t\tMIME parts decoded. Various components in the output,\n"
-      "\t\t('message', 'header', 'body', 'attachment', and MIME 'part')\n"
-      "\t\tare delimited by easily-parsed markers. Each marker consists\n"
-      "\t\tof a Control-L character (ASCII decimal 12), the name of\n"
-      "\t\tthe marker, and then either an opening or closing brace,\n"
-      "\t\t'{' or '}' to either open or close the component.\n"
+      "\t\tSupported options for show include:\n"
+      "\n"
+      "\t\t--entire-thread\n"
+      "\n"
+      "\t\t\tBy default only those messages that match the\n"
+      "\t\t\tsearch terms will be displayed. With this option,\n"
+      "\t\t\tall messages in the same thread as any matched\n"
+      "\t\t\tmessage will be displayed.\n"
+      "\n"
+      "\t\t--format=(json|text)\n"
+      "\n"
+      "\t\t\ttext\t(default)\n"
+      "\n"
+      "\t\t\tThe plain-text has all text-content MIME parts decoded.\n"
+      "\t\t\tVarious components in the output, ('message', 'header',\n"
+      "\t\t\t'body', 'attachment', and MIME 'part') are delimited by\n"
+      "\t\t\teasily-parsed markers. Each marker consists of a Control-L\n"
+      "\t\t\tcharacter (ASCII decimal 12), the name of the marker, and\n"
+      "\t\t\tthen either an opening or closing brace, '{' or '}' to\n"
+      "\t\t\teither open or close the component.\n"
+      "\n"
+      "\t\t\tjson\n"
+      "\n"
+      "\t\t\tFormat output as Javascript Object Notation (JSON).\n"
+      "\t\t\tJSON output always includes all messages in a matching,\n"
+      "\t\t\tthread i.e. '--output=json' implies '--entire-thread'\n"
       "\n"
       "\t\tA common use of \"notmuch show\" is to display a single\n"
       "\t\tthread of email messages. For this, use a search term of\n"
@@ -204,7 +223,7 @@ command_t commands[] = {
       "\t\tSee \"notmuch help search-terms\" for details of the search\n"
       "\t\tterms syntax." },
     { "reply", notmuch_reply_command,
-      "<search-terms> [...]",
+      "[options...] <search-terms> [...]",
       "\t\tConstruct a reply template for a set of messages.",
       "\t\tConstructs a new message as a reply to a set of existing\n"
       "\t\tmessages. The Reply-To: header (if any, otherwise From:) is\n"
@@ -213,10 +232,22 @@ command_t commands[] = {
       "\n"
       "\t\tA suitable subject is constructed. The In-Reply-to: and\n"
       "\t\tReferences: headers are set appropriately, and the content\n"
-      "\t\tof the original messages is quoted and included in the body.\n"
+      "\t\tof the original messages is quoted and included in the body\n"
+      "\t\t(unless --format=headers-only is given).\n"
       "\n"
       "\t\tThe resulting message template is output to stdout.\n"
       "\n"
+      "\t\tSupported options for reply include:\n"
+      "\n"
+      "\t\t--format=(default|headers-only)\n"
+      "\n"
+      "\t\t\tdefault:\n"
+      "\t\t\t\tIncludes subject and quoted message body.\n"
+      "\n"
+      "\t\t\theaders-only:\n"
+      "\t\t\t\tOnly produces In-Reply-To, References, To\n"
+      "\t\t\t\tCc, and Bcc headers.\n"
+      "\n"
       "\t\tSee \"notmuch help search-terms\" for details of the search\n"
       "\t\tterms syntax." },
     { "tag", notmuch_tag_command,
@@ -254,6 +285,26 @@ command_t commands[] = {
       "\t\tSo if you've previously been using sup for mail, then the\n"
       "\t\t\"notmuch restore\" command provides you a way to import\n"
       "\t\tall of your tags (or labels as sup calls them)." },
+    { "search-tags", notmuch_search_tags_command,
+      "[<search-terms> [...] ]",
+      "\t\tList all tags found in the database or matching messages.",
+      "\t\tRun this command without any search-term(s) to obtain a list\n"
+      "\t\tof all tags found in the database. If you provide one or more\n"
+      "\t\tsearch-terms as argument(s) then the resulting list will\n"
+      "\t\tcontain tags only from messages that match the search-term(s).\n"
+      "\n"
+      "\t\tIn both cases the list will be alphabetically sorted." },
+    { "part", notmuch_part_command,
+      "--part=<num> <search-terms>",
+      "\t\tOutput a single MIME part of a message.",
+      "\t\tA single decoded MIME part, with no encoding or framing,\n"
+      "\t\tis output to stdout. The search terms must match only a single\n"
+      "\t\tmessage, otherwise this command will fail.\n"
+      "\n"
+      "\t\tThe part number should match the part \"id\" field output\n"
+      "\t\tby the \"--format=json\" option of \"notmuch show\". If the\n"
+      "\t\tmessage specified by the search terms does not include a\n"
+      "\t\tpart with the specified \"id\" there will be no output." },
     { "help", notmuch_help_command,
       "[<command>]",
       "\t\tThis message, or more detailed help for the named command.",