All of lore.kernel.org
 help / color / mirror / Atom feed
From: "SZEDER Gábor" <szeder.dev@gmail.com>
To: Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
	Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: Re: [PATCH 1/1] completion: complete <rev> in `git worktree add <path> <rev>`
Date: Tue, 11 Dec 2018 03:34:49 +0100	[thread overview]
Message-ID: <20181211023449.GS30222@szeder.dev> (raw)
In-Reply-To: <830191fbfbf95b9d568ba91ddcdd9860173a476a.1544454643.git.gitgitgadget@gmail.com>

On Mon, Dec 10, 2018 at 07:10:46AM -0800, Johannes Schindelin via GitGitGadget wrote:
> From: Johannes Schindelin <johannes.schindelin@gmx.de>
> 
> The second non-option argument to `git worktree`'s `add` command is an
> optional revision. Let's complete it.
> 
> Inspired by https://github.com/git-for-windows/git/pull/1681.
> 
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>  contrib/completion/git-completion.bash | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 9e8ec95c3c..4194b4a2e7 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -2773,6 +2773,11 @@ _git_worktree ()
>  		add,--*)
>  			__gitcomp_builtin worktree_add
>  			;;
> +		add,*)
> +			if [ $(__git_count_arguments "worktree") -eq 2 ]; then
> +				__git_complete_refs
> +			fi
> +			;;

Unfortunately, this seems to work only in the following case:

  git worktree add path <TAB>

i.e. when the two-be-completed word is still empty.  However,

  git worktree add path m<TAB>

doesn't work anymore, as it lists paths instead of refs.  Furthermore,

  git worktree add --detach path <TAB>
  git worktree add --detach path m<TAB>
  git worktree add -b newbranch path <TAB>

list paths as well.

However, I presume unintentionally,

  git worktree add -b <TAB>

does the right thing and lists refs, but with

  git worktree add -b m<TAB>

we are back at paths instead of refs.  OTOH,

  git worktree add --detach <TAB>
  git worktree add --lock <TAB>

will erroneously list refs.

I wrote a completion function for 'git worktree' a long while ago,
back when it had only two subcommands, which did mostly the right
thing, but I found it too convoluted for serious submission.  Here it
is for inspiration:

  https://public-inbox.org/git/1440190256-21794-1-git-send-email-szeder@ira.uka.de/

>  		list,--*)
>  			__gitcomp_builtin worktree_list
>  			;;
> -- 
> gitgitgadget

      reply	other threads:[~2018-12-11  2:34 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-10 15:10 [PATCH 0/1] worktree: add completion for the rev argument in git worktree add <path> <rev> Johannes Schindelin via GitGitGadget
2018-12-10 15:10 ` [PATCH 1/1] completion: complete <rev> in `git worktree add <path> <rev>` Johannes Schindelin via GitGitGadget
2018-12-11  2:34   ` SZEDER Gábor [this message]

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=20181211023449.GS30222@szeder.dev \
    --to=szeder.dev@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=gitster@pobox.com \
    --cc=johannes.schindelin@gmx.de \
    /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.