]> git.cworth.org Git - notmuch/blobdiff - notmuch-config.c
Clarify the documentation for the new_tags configuration option.
[notmuch] / notmuch-config.c
index ebddbf88222a57df2efc021c7299b43e19d5bc28..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"
@@ -68,7 +70,7 @@ struct _notmuch_config {
     char *user_primary_email;
     char **user_other_email;
     size_t user_other_email_length;
-    char **new_tags;
+    const char **new_tags;
     size_t new_tags_length;
 };
 
@@ -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);
     }
@@ -474,7 +510,7 @@ notmuch_config_set_user_other_email (notmuch_config_t *config,
     config->user_other_email = NULL;
 }
 
-char **
+const char **
 notmuch_config_get_new_tags (notmuch_config_t *config,
                             size_t *length)
 {