All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rubén Justo" <rjusto@gmail.com>
To: Git List <git@vger.kernel.org>
Subject: [PATCH 3/4] completion: reflog with implicit "show"
Date: Fri, 26 Jan 2024 13:53:01 +0100	[thread overview]
Message-ID: <5991b58c-770c-4aaa-bce5-f396d9f7f16f@gmail.com> (raw)
In-Reply-To: <98daf977-dbad-4d3b-a293-6a769895088f@gmail.com>

When no subcommand is specified to "reflog", we assume "show" [1]:

    $ git reflog -h
    usage: git reflog [show] [<log-options>] [<ref>]
    ...

We are not completing correctly this implicit uses of "show":

With ...

    $ git checkout -b default

... we are not completing "default":

    $ git reflog def<TAB><TAB>

And we are incorrectly returning the "subcommands" when:

    $ git reflog default <TAB><TAB>
    delete expire show

Let's use __gitcomp_subcommand to correctly handle implicit
subcommands.

  1. cf39f54efc (git reflog show, 2007-02-08)

Signed-off-by: Rubén Justo <rjusto@gmail.com>
---
 contrib/completion/git-completion.bash | 9 ++++-----
 t/t9902-completion.sh                  | 8 ++++++++
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 5f2e904b56..c41f25aa80 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -2448,13 +2448,12 @@ _git_rebase ()
 _git_reflog ()
 {
 	local subcommands="show delete expire"
-	local subcommand="$(__git_find_on_cmdline "$subcommands")"
 
-	if [ -z "$subcommand" ]; then
-		__gitcomp "$subcommands"
-	else
-		__git_complete_refs
+	if __gitcomp_subcommand "$subcommands"; then
+		return
 	fi
+
+	__git_complete_refs
 }
 
 __git_send_email_confirm_options="always never auto cc compose"
diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
index aa9a614de3..231e17f378 100755
--- a/t/t9902-completion.sh
+++ b/t/t9902-completion.sh
@@ -2618,6 +2618,14 @@ test_expect_success 'git clone --config= - value' '
 	EOF
 '
 
+test_expect_success 'git reflog show' '
+	test_when_finished "git checkout -" &&
+	git checkout -b shown &&
+	test_completion "git reflog sho" "show " &&
+	test_completion "git reflog show sho" "shown " &&
+	test_completion "git reflog shown sho" "shown "
+'
+
 test_expect_success 'options with value' '
 	test_completion "git merge -X diff-algorithm=" <<-\EOF
 
-- 
2.43.0


  parent reply	other threads:[~2024-01-26 12:53 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-26 12:46 [PATCH 0/4] completion for git-reflog show Rubén Justo
2024-01-26 12:51 ` [PATCH 1/4] completion: introduce __gitcomp_subcommand Rubén Justo
2024-01-26 17:26   ` Junio C Hamano
2024-01-26 20:09     ` Rubén Justo
2024-01-26 20:34       ` Junio C Hamano
2024-01-26 12:51 ` [PATCH 2/4] completion: introduce __git_find_subcommand Rubén Justo
2024-01-26 17:30   ` Junio C Hamano
2024-01-27 13:20     ` Rubén Justo
2024-01-26 12:53 ` Rubén Justo [this message]
2024-01-26 17:57   ` [PATCH 3/4] completion: reflog with implicit "show" Junio C Hamano
2024-01-26 20:20     ` Rubén Justo
2024-02-21  1:46       ` Junio C Hamano
2024-02-21 18:06         ` Rubén Justo
2024-02-29 19:00           ` Rubén Justo
2024-02-29 19:22             ` Junio C Hamano
2024-01-26 12:53 ` [PATCH 4/4] completion: reflog show <log-options> Rubén Justo
2024-03-02 14:30 ` [PATCH v2 0/5] completion for git-reflog show Rubén Justo
2024-03-02 14:37   ` [PATCH v2 1/5] completion: reflog with implicit "show" Rubén Justo
2024-03-02 15:50   ` [PATCH v2 3/5] completion: reflog show <log-options> Rubén Justo
2024-03-02 15:51   ` [PATCH v2 2/5] completion: introduce __git_find_subcommand Rubén Justo
2024-03-02 15:52   ` [PATCH v2 4/5] completion: factor out __git_resolve_builtins Rubén Justo
2024-03-02 15:52   ` [PATCH v2 5/5] completion: reflog subcommands and options Rubén Justo

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=5991b58c-770c-4aaa-bce5-f396d9f7f16f@gmail.com \
    --to=rjusto@gmail.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.