From: Ryan Zoeller <rtzoeller@rtzoeller.com>
To: git@vger.kernel.org
Cc: Ryan Zoeller <rtzoeller@rtzoeller.com>
Subject: [RFC PATCH 1/2] parse-options: add --git-completion-helper-all
Date: Wed, 19 Aug 2020 17:51:08 +0000 [thread overview]
Message-ID: <20200819175047.692962-2-rtzoeller@rtzoeller.com> (raw)
In-Reply-To: <20200819175047.692962-1-rtzoeller@rtzoeller.com>
--git-completion-helper excludes hidden options, such as --allow-empty
for git commit. This is typically helpful, but occasionally we want
auto-completion for obscure flags. --git-completion-helper-all returns
all options, even if they are marked as hidden or nocomplete.
Signed-off-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
---
parse-options.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/parse-options.c b/parse-options.c
index c57618d537..cc7239e1c6 100644
--- a/parse-options.c
+++ b/parse-options.c
@@ -535,8 +535,9 @@ static void show_negated_gitcomp(const struct option *opts, int nr_noopts)
if (!opts->long_name)
continue;
- if (opts->flags & (PARSE_OPT_HIDDEN | PARSE_OPT_NOCOMPLETE))
- continue;
+ /* Don't check PARSE_OPT_HIDDEN or PARSE_OPT_NOCOMPLETE,
+ * we expect the caller to handle these appropriately.
+ */
if (opts->flags & PARSE_OPT_NONEG)
continue;
@@ -572,7 +573,7 @@ static void show_negated_gitcomp(const struct option *opts, int nr_noopts)
}
}
-static int show_gitcomp(const struct option *opts)
+static int show_gitcomp(const struct option *opts, int show_all)
{
const struct option *original_opts = opts;
int nr_noopts = 0;
@@ -582,7 +583,8 @@ static int show_gitcomp(const struct option *opts)
if (!opts->long_name)
continue;
- if (opts->flags & (PARSE_OPT_HIDDEN | PARSE_OPT_NOCOMPLETE))
+ if (!show_all &&
+ (opts->flags & (PARSE_OPT_HIDDEN | PARSE_OPT_NOCOMPLETE)))
continue;
switch (opts->type) {
@@ -723,9 +725,13 @@ int parse_options_step(struct parse_opt_ctx_t *ctx,
if (internal_help && ctx->total == 1 && !strcmp(arg + 1, "h"))
goto show_usage;
- /* lone --git-completion-helper is asked by git-completion.bash */
+ /* lone --git-completion-helper and --git-completion-helper-all
+ * are asked by git-completion.bash
+ */
if (ctx->total == 1 && !strcmp(arg + 1, "-git-completion-helper"))
- return show_gitcomp(options);
+ return show_gitcomp(options, 0);
+ if (ctx->total == 1 && !strcmp(arg + 1, "-git-completion-helper-all"))
+ return show_gitcomp(options, 1);
if (arg[1] != '-') {
ctx->opt = arg + 1;
--
2.28.0.260.g5fadab5a9c
next prev parent reply other threads:[~2020-08-19 17:51 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-19 17:50 [RFC PATCH 0/2] Support enabling bash completion of all options Ryan Zoeller
2020-08-19 17:51 ` Ryan Zoeller [this message]
2020-08-19 19:39 ` [RFC PATCH 1/2] parse-options: add --git-completion-helper-all Junio C Hamano
2020-08-19 20:51 ` Ryan Zoeller
2020-08-19 21:05 ` Junio C Hamano
2020-08-19 17:51 ` [RFC PATCH 2/2] completion: add GIT_COMPLETION_SHOW_ALL env var Ryan Zoeller
2020-08-19 23:06 ` [PATCH v2 0/2] Support enabling bash completion of all options Ryan Zoeller
2020-08-19 23:06 ` [PATCH v2 1/2] parse-options: add --git-completion-helper-all Ryan Zoeller
2020-08-19 23:06 ` [PATCH v2 2/2] completion: add GIT_COMPLETION_SHOW_ALL env var Ryan Zoeller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200819175047.692962-2-rtzoeller@rtzoeller.com \
--to=rtzoeller@rtzoeller.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.