X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=notmuch-config.c;h=58f83b0d299c8d4b6213758448bf1db69302b6b3;hb=3d64993586af7286c6b0fc56bdcef19ae7813c80;hp=fa09628729a1a8a81823a0db20ddd8541752991d;hpb=65d278afb1174a4005a613cca8c306289b195876;p=notmuch diff --git a/notmuch-config.c b/notmuch-config.c index fa096287..58f83b0d 100644 --- a/notmuch-config.c +++ b/notmuch-config.c @@ -37,11 +37,13 @@ static const char database_config_comment[] = " Notmuch will store its database within a sub-directory of the path\n" " configured here named \".notmuch\".\n"; -static const char messages_config_comment[] = - " Messages configuration\n" +static const char new_config_comment[] = + " Configuration for \"notmuch new\"\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" + "\ttags 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_new_group; + int file_had_user_group; if (is_new_ret) *is_new_ret = 0; @@ -235,6 +240,22 @@ 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_new_group = g_key_file_has_group (config->key_file, "new"); + 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 +304,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); - g_key_file_set_comment (config->key_file, "messages", NULL, - messages_config_comment, NULL); + } + + if (! file_had_new_group) + { + g_key_file_set_comment (config->key_file, "new", NULL, + new_config_comment, NULL); + } + + if (! file_had_user_group) + { g_key_file_set_comment (config->key_file, "user", NULL, user_config_comment, NULL); } @@ -484,7 +519,7 @@ notmuch_config_get_new_tags (notmuch_config_t *config, if (config->new_tags == NULL) { tags = g_key_file_get_string_list (config->key_file, - "messages", "new_tags", + "new", "tags", &tags_length, NULL); if (tags) { config->new_tags = talloc_size (config, @@ -511,7 +546,7 @@ notmuch_config_set_new_tags (notmuch_config_t *config, size_t length) { g_key_file_set_string_list (config->key_file, - "messages", "new_tags", + "new", "tags", new_tags, length); talloc_free (config->new_tags);