]> git.cworth.org Git - notmuch/blobdiff - notmuch-config.c
Clarify the documentation for the new_tags configuration option.
[notmuch] / notmuch-config.c
index fa09628729a1a8a81823a0db20ddd8541752991d..0a050909c091dd193d5a79166e900340a28f132b 100644 (file)
@@ -40,8 +40,10 @@ static const char database_config_comment[] =
 static const char messages_config_comment[] =
     " Messages configuration\n"
     "\n"
-    " The only value supported here is 'new_tags' which lists the tags that\n"
-    " should be applied to new messages.\n";
+    " The following options are supported here:\n"
+    "\n"
+    "\tnew_tags        A list (separated by ';') of the tags that will be\n"
+    "\t                added to all messages incorporated by \"notmuch new\".\n";
 
 static const char user_config_comment[] =
     " User configuration\n"
@@ -179,6 +181,9 @@ notmuch_config_open (void *ctx,
     int is_new = 0;
     size_t tmp;
     char *notmuch_config_env = NULL;
+    int file_had_database_group;
+    int file_had_messages_group;
+    int file_had_user_group;
 
     if (is_new_ret)
        *is_new_ret = 0;
@@ -235,6 +240,23 @@ notmuch_config_open (void *ctx,
        is_new = 1;
     }
 
+    /* Whenever we know of configuration sections that don't appear in
+     * the configuration file, we add some comments to help the user
+     * understand what can be done.
+     *
+     * It would be convenient to just add those comments now, but
+     * apparently g_key_file will clear any comments when keys are
+     * added later that create the groups. So we have to check for the
+     * groups now, but add the comments only after setting all of our
+     * values.
+     */
+    file_had_database_group = g_key_file_has_group (config->key_file,
+                                                   "database");
+    file_had_messages_group = g_key_file_has_group (config->key_file,
+                                                   "messages");
+    file_had_user_group = g_key_file_has_group (config->key_file, "user");
+
+
     if (notmuch_config_get_database_path (config) == NULL) {
        char *path = talloc_asprintf (config, "%s/mail",
                                      getenv ("HOME"));
@@ -283,15 +305,29 @@ notmuch_config_open (void *ctx,
        notmuch_config_set_new_tags (config, tags, 2);
     }
 
-    /* When we create a new configuration file here, we  add some
-     * comments to help the user understand what can be done. */
-    if (is_new) {
+    /* Whenever we know of configuration sections that don't appear in
+     * the configuration file, we add some comments to help the user
+     * understand what can be done. */
+    if (is_new)
+    {
        g_key_file_set_comment (config->key_file, NULL, NULL,
                                toplevel_config_comment, NULL);
+    }
+
+    if (! file_had_database_group)
+    {
        g_key_file_set_comment (config->key_file, "database", NULL,
                                database_config_comment, NULL);
+    }
+
+    if (! file_had_messages_group)
+    {
        g_key_file_set_comment (config->key_file, "messages", NULL,
                                messages_config_comment, NULL);
+    }
+
+    if (! file_had_user_group)
+    {
        g_key_file_set_comment (config->key_file, "user", NULL,
                                user_config_comment, NULL);
     }