This obsoletes id:20170509021719.13086-2-david@tethera.net Compared to the previous version, this drops the use of enums for exclude and entire-thread, adds a couple of tests, and some documentation of option separators. Interdiff follows diff --git a/doc/man1/notmuch.rst b/doc/man1/notmuch.rst index fbd7f381..5e238ae4 100644 --- a/doc/man1/notmuch.rst +++ b/doc/man1/notmuch.rst @@ -125,6 +125,20 @@ users to have their own notmuch related tools to be run via the notmuch command. By design, this does not allow notmuch's own commands to be overriden using external commands. +OPTION SYNTAX +------------- + +All options accepting an argument can be used with '=' or ':' as a +separator. For the cases where it's not ambiguous (in particular +excluding boolean options), a space can also be used. The following +are all equivalent: + +:: + + notmuch --config=alt-config config get user.name + notmuch --config:alt-config config get user.name + notmuch --config alt-config config get user.name + ENVIRONMENT =========== diff --git a/notmuch-show.c b/notmuch-show.c index f8d62a1a..472c8767 100644 --- a/notmuch-show.c +++ b/notmuch-show.c @@ -1009,18 +1009,6 @@ static const notmuch_show_format_t *formatters[] = { [NOTMUCH_FORMAT_RAW] = &format_raw, }; -enum { - ENTIRE_THREAD_DEFAULT = -1, - ENTIRE_THREAD_FALSE = FALSE, - ENTIRE_THREAD_TRUE = TRUE, -}; - -/* The following is to allow future options to be added more easily */ -enum { - EXCLUDE_FALSE = FALSE, - EXCLUDE_TRUE = TRUE, -}; - int notmuch_show_command (notmuch_config_t *config, int argc, char *argv[]) { @@ -1036,8 +1024,11 @@ notmuch_show_command (notmuch_config_t *config, int argc, char *argv[]) .output_body = TRUE, }; int format = NOTMUCH_FORMAT_NOT_SPECIFIED; - int exclude = EXCLUDE_TRUE; - int entire_thread = ENTIRE_THREAD_DEFAULT; + int exclude = TRUE; + + /* This value corresponds to neither true nor false being passed + * on the command line */ + int entire_thread = -1; notmuch_bool_t single_message; notmuch_opt_desc_t options[] = { @@ -1095,7 +1086,7 @@ notmuch_show_command (notmuch_config_t *config, int argc, char *argv[]) /* Default is entire-thread = FALSE except for format=json and * format=sexp. */ - if (entire_thread == ENTIRE_THREAD_DEFAULT) { + if (entire_thread != FALSE && entire_thread != TRUE) { if (format == NOTMUCH_FORMAT_JSON || format == NOTMUCH_FORMAT_SEXP) params.entire_thread = TRUE; else @@ -1175,7 +1166,7 @@ notmuch_show_command (notmuch_config_t *config, int argc, char *argv[]) } } - if (exclude == EXCLUDE_FALSE) { + if (exclude == FALSE) { notmuch_query_set_omit_excluded (query, FALSE); params.omit_excluded = FALSE; } diff --git a/test/T030-config.sh b/test/T030-config.sh index 0915abdb..79a24948 100755 --- a/test/T030-config.sh +++ b/test/T030-config.sh @@ -69,6 +69,14 @@ notmuch --config=alt-config config set user.name "Another Name" test_expect_equal "$(notmuch --config=alt-config config get user.name)" \ "Another Name" +test_begin_subtest "Top level --config:FILE option" +test_expect_equal "$(notmuch --config:alt-config config get user.name)" \ + "Another Name" + +test_begin_subtest "Top level --config<space>FILE option" +test_expect_equal "$(notmuch --config alt-config config get user.name)" \ + "Another Name" + test_begin_subtest "Top level --config=FILE option changed the right file" test_expect_equal "$(notmuch config get user.name)" \ "Notmuch Test Suite"