]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch.c
added syntax files for search and show screens
[notmuch] / notmuch.c
index cb5415abc846c59ade6b2534d2302d9a0d37c010..f45b6924646db094b877fd3a21c4bb3dbb7850c4 100644 (file)
--- a/notmuch.c
+++ b/notmuch.c
@@ -89,7 +89,22 @@ static const char search_terms_help[] =
     "\t\tParentheses can also be used to control the combination of\n"
     "\t\tthe Boolean operators, but will have to be protected from\n"
     "\t\tinterpretation by the shell, (such as by putting quotation\n"
     "\t\tParentheses can also be used to control the combination of\n"
     "\t\tthe Boolean operators, but will have to be protected from\n"
     "\t\tinterpretation by the shell, (such as by putting quotation\n"
-    "\t\tmarks around any parenthesized expression).\n\n";
+    "\t\tmarks around any parenthesized expression).\n"
+    "\n"
+    "\t\tFinally, results can be restricted to only messages within a\n"
+    "\t\tparticular time range, (based on the Date: header) with:\n"
+    "\n"
+    "\t\t\t<intial-timestamp>..<final-timestamp>\n"
+    "\n"
+    "\t\tEach timestamp is a number representing the number of seconds\n"
+    "\t\tsince 1970-01-01 00:00:00 UTC. This is not the most convenient\n"
+    "\t\tmeans of expressing date ranges, but until notmuch is fixed to\n"
+    "\t\taccept a more convenient form, one can use the date program to\n"
+    "\t\tconstruct timestamps. For example, with the bash shell the\n"
+    "\t\tfollowing syntax would specify a date range to return messages\n"
+    "\t\tfrom 2009-10-01 until the current time:\n"
+    "\n"
+    "\t\t\t$(date +%%s -d 2009-10-01)..$(date +%%s)\n\n";
 
 command_t commands[] = {
     { "setup", notmuch_setup_command,
 
 command_t commands[] = {
     { "setup", notmuch_setup_command,
@@ -98,7 +113,8 @@ command_t commands[] = {
       "\t\tThe setup command will prompt for your full name, your primary\n"
       "\t\temail address, any alternate email addresses you use, and the\n"
       "\t\tdirectory containing your email archives. Your answers will be\n"
       "\t\tThe setup command will prompt for your full name, your primary\n"
       "\t\temail address, any alternate email addresses you use, and the\n"
       "\t\tdirectory containing your email archives. Your answers will be\n"
-      "\t\twritten to a configuration file in ${HOME}/.notmuch-config .\n"
+      "\t\twritten to a configuration file in ${NOTMUCH_CONFIG} (if set)\n"
+      "\t\tor ${HOME}/.notmuch-config.\n"
       "\n"
       "\t\tThis configuration file will be created with descriptive\n"
       "\t\tcomments, making it easy to edit by hand later to change the\n"
       "\n"
       "\t\tThis configuration file will be created with descriptive\n"
       "\t\tcomments, making it easy to edit by hand later to change the\n"
@@ -107,8 +123,8 @@ command_t commands[] = {
       "\t\tInvoking notmuch with no command argument will run setup if\n"
       "\t\tthe setup command has not previously been completed." },
     { "new", notmuch_new_command,
       "\t\tInvoking notmuch with no command argument will run setup if\n"
       "\t\tthe setup command has not previously been completed." },
     { "new", notmuch_new_command,
-      NULL,
-      "Find and import new messages to the notmuch database.",
+      "[--verbose]",
+      "\t\tFind and import new messages to the notmuch database.",
       "\t\tScans all sub-directories of the mail directory, performing\n"
       "\t\tfull-text indexing on new messages that are found. Each new\n"
       "\t\tmessage will be tagged as both \"inbox\" and \"unread\".\n"
       "\t\tScans all sub-directories of the mail directory, performing\n"
       "\t\tfull-text indexing on new messages that are found. Each new\n"
       "\t\tmessage will be tagged as both \"inbox\" and \"unread\".\n"
@@ -122,6 +138,13 @@ command_t commands[] = {
       "\t\tis delivered and you wish to incorporate it into the database.\n"
       "\t\tThese subsequent runs will be much quicker than the initial run.\n"
       "\n"
       "\t\tis delivered and you wish to incorporate it into the database.\n"
       "\t\tThese subsequent runs will be much quicker than the initial run.\n"
       "\n"
+      "\t\tSupported options for new include:\n"
+      "\n"
+      "\t\t--verbose\n"
+      "\n"
+      "\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\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"
@@ -139,16 +162,6 @@ command_t commands[] = {
       "\n"
       "\t\tSupported options for search include:\n"
       "\n"
       "\n"
       "\t\tSupported options for search include:\n"
       "\n"
-      "\t\t--max-threads=<value>\n"
-      "\n"
-      "\t\t\tRestricts displayed search results to a subset\n"
-      "\t\t\tof the results that would match the terms.\n"
-      "\n"
-      "\t\t--first=<value>\n"
-      "\n"
-      "\t\t\tOmits the first <value> threads from the search\n"
-      "\t\t\tresults that would otherwise be displayed.\n"
-      "\n"
       "\t\t--sort=(newest-first|oldest-first)\n"
       "\n"
       "\t\t\tPresent results in either chronological order\n"
       "\t\t--sort=(newest-first|oldest-first)\n"
       "\n"
       "\t\t\tPresent results in either chronological order\n"
@@ -179,6 +192,17 @@ command_t commands[] = {
       "\n"
       "\t\tSee \"notmuch help search-terms\" for details of the search\n"
       "\t\tterms syntax." },
       "\n"
       "\t\tSee \"notmuch help search-terms\" for details of the search\n"
       "\t\tterms syntax." },
+    { "count", notmuch_count_command,
+      "<search-terms> [...]",
+      "\t\tCount messages matching the search terms.",
+      "\t\tThe number of matching messages is output to stdout.\n"
+      "\n"
+      "\t\tA common use of \"notmuch count\" is to display the count\n"
+      "\t\tof messages matching both a specific tag and either inbox\n"
+      "\t\tor unread\n"
+      "\n"
+      "\t\tSee \"notmuch help search-terms\" for details of the search\n"
+      "\t\tterms syntax." },
     { "reply", notmuch_reply_command,
       "<search-terms> [...]",
       "\t\tConstruct a reply template for a set of messages.",
     { "reply", notmuch_reply_command,
       "<search-terms> [...]",
       "\t\tConstruct a reply template for a set of messages.",
@@ -238,28 +262,28 @@ command_t commands[] = {
 };
 
 static void
 };
 
 static void
-usage (void)
+usage (FILE *out)
 {
     command_t *command;
     unsigned int i;
 
 {
     command_t *command;
     unsigned int i;
 
-    fprintf (stderr, "Usage: notmuch <command> [args...]\n");
-    fprintf (stderr, "\n");
-    fprintf (stderr, "Where <command> and [args...] are as follows:\n");
-    fprintf (stderr, "\n");
+    fprintf (out, "Usage: notmuch <command> [args...]\n");
+    fprintf (out, "\n");
+    fprintf (out, "Where <command> and [args...] are as follows:\n");
+    fprintf (out, "\n");
 
     for (i = 0; i < ARRAY_SIZE (commands); i++) {
        command = &commands[i];
 
        if (command->arguments)
 
     for (i = 0; i < ARRAY_SIZE (commands); i++) {
        command = &commands[i];
 
        if (command->arguments)
-           fprintf (stderr, "\t%s\t%s\n\n%s\n\n",
+           fprintf (out, "\t%s\t%s\n\n%s\n\n",
                     command->name, command->arguments, command->summary);
        else
                     command->name, command->arguments, command->summary);
        else
-           fprintf (stderr, "\t%s\t%s\n\n",
+           fprintf (out, "\t%s\t%s\n\n",
                     command->name, command->summary);
     }
 
                     command->name, command->summary);
     }
 
-    fprintf (stderr,
+    fprintf (out,
     "Use \"notmuch help <command>\" for more details on each command.\n"
     "And \"notmuch help search-terms\" for the common search-terms syntax.\n\n");
 }
     "Use \"notmuch help <command>\" for more details on each command.\n"
     "And \"notmuch help search-terms\" for the common search-terms syntax.\n\n");
 }
@@ -271,8 +295,8 @@ notmuch_help_command (unused (void *ctx), int argc, char *argv[])
     unsigned int i;
 
     if (argc == 0) {
     unsigned int i;
 
     if (argc == 0) {
-       fprintf (stderr, "The notmuch mail system.\n\n");
-       usage ();
+       printf ("The notmuch mail system.\n\n");
+       usage (stdout);
        return 0;
     }
 
        return 0;
     }
 
@@ -280,32 +304,32 @@ notmuch_help_command (unused (void *ctx), int argc, char *argv[])
        command = &commands[i];
 
        if (strcmp (argv[0], command->name) == 0) {
        command = &commands[i];
 
        if (strcmp (argv[0], command->name) == 0) {
-           fprintf (stderr, "Help for \"notmuch %s\":\n\n", argv[0]);
+           printf ("Help for \"notmuch %s\":\n\n", argv[0]);
            if (command->arguments)
            if (command->arguments)
-               fprintf (stderr, "\t%s\t%s\n\n%s\n\n%s\n\n",
-                        command->name, command->arguments,
-                        command->summary, command->documentation);
+               printf ("\t%s\t%s\n\n%s\n\n%s\n\n",
+                       command->name, command->arguments,
+                       command->summary, command->documentation);
            else
            else
-               fprintf (stderr, "\t%s\t%s\n\n%s\n\n", command->name,
-                        command->summary, command->documentation);
+               printf ("\t%s\t%s\n\n%s\n\n", command->name,
+                       command->summary, command->documentation);
            return 0;
        }
     }
 
     if (strcmp (argv[0], "search-terms") == 0) {
            return 0;
        }
     }
 
     if (strcmp (argv[0], "search-terms") == 0) {
-       fprintf (stderr, "Help for <%s>\n\n", argv[0]);
+       printf ("Help for <%s>\n\n", argv[0]);
        for (i = 0; i < ARRAY_SIZE (commands); i++) {
            command = &commands[i];
 
            if (command->arguments &&
                strstr (command->arguments, "search-terms"))
            {
        for (i = 0; i < ARRAY_SIZE (commands); i++) {
            command = &commands[i];
 
            if (command->arguments &&
                strstr (command->arguments, "search-terms"))
            {
-               fprintf (stderr, "\t%s\t%s\n",
-                        command->name, command->arguments);
+               printf ("\t%s\t%s\n",
+                       command->name, command->arguments);
            }
        }
            }
        }
-       fprintf (stderr, "\n");
-       fprintf (stderr, search_terms_help);
+       printf ("\n");
+       printf (search_terms_help);
        return 0;
     }
 
        return 0;
     }
 
@@ -400,8 +424,6 @@ main (int argc, char *argv[])
            return (command->function) (local, argc - 2, &argv[2]);
     }
 
            return (command->function) (local, argc - 2, &argv[2]);
     }
 
-    /* Don't complain about "help" being an unknown command when we're
-       about to provide exactly what's wanted anyway. */
     fprintf (stderr, "Error: Unknown command '%s' (see \"notmuch help\")\n",
             argv[1]);
 
     fprintf (stderr, "Error: Unknown command '%s' (see \"notmuch help\")\n",
             argv[1]);