diff options
author | Carl Worth <cworth@cworth.org> | 2010-04-23 10:30:40 -0700 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2010-04-23 10:30:40 -0700 |
commit | 14fb9f3c5531f45c9b5bf2e710f033288bcda5c8 (patch) | |
tree | b63db0bf7f08e3f8c23e180796d6e8e2bddaf8f3 /notmuch-setup.c | |
parent | c63b6473ca6b391dc858672cf36f56ec0baf3e35 (diff) |
notmuch setup: Prompt for tags to set on new messages.
Our "notmuch setup" command is only really helpful if it guides the
user through all the possible options. So add this one.
Diffstat (limited to 'notmuch-setup.c')
-rw-r--r-- | notmuch-setup.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/notmuch-setup.c b/notmuch-setup.c index 622bbaa..955deb7 100644 --- a/notmuch-setup.c +++ b/notmuch-setup.c @@ -99,6 +99,8 @@ notmuch_setup_command (unused (void *ctx), GPtrArray *other_emails; unsigned int i; int is_new; + const char **new_tags; + size_t new_tags_len; #define prompt(format, ...) \ do { \ @@ -159,6 +161,40 @@ notmuch_setup_command (unused (void *ctx), notmuch_config_set_database_path (config, absolute_path); } + new_tags = notmuch_config_get_new_tags (config, &new_tags_len); + + printf ("Tags to apply to all new messages (separated by spaces) ["); + + for (i = 0; i < new_tags_len; i++) { + if (i != 0) + printf (" "); + printf ("%s", new_tags[i]); + } + + prompt ("]: "); + + if (strlen (response)) { + GPtrArray *tags = g_ptr_array_new (); + char *tag = response; + char *space; + + while (tag && *tag) { + space = strchr (tag, ' '); + if (space) + g_ptr_array_add (tags, talloc_strndup (ctx, tag, space - tag)); + else + g_ptr_array_add (tags, talloc_strdup (ctx, tag)); + tag = space; + while (tag && *tag == ' ') + tag++; + } + + notmuch_config_set_new_tags (config, (const char **) tags->pdata, + tags->len); + + g_ptr_array_free (tags, TRUE); + } + if (! notmuch_config_save (config)) { if (is_new) welcome_message_post_setup (); |