From: Eric Sunshine <sunshine@sunshineco.com>
To: "SZEDER Gábor" <szeder@ira.uka.de>
Cc: Junio C Hamano <gitster@pobox.com>, Git List <git@vger.kernel.org>
Subject: Re: [RFC/PATCH] contrib: teach completion about git-worktree options and arguments
Date: Fri, 21 Aug 2015 17:59:15 -0400 [thread overview]
Message-ID: <CAPig+cQ9Rema_n1xBJQNSv9i75sGT=RWu1AheWJFTBMa89DyFA@mail.gmail.com> (raw)
In-Reply-To: <20150821224918.Horde.edB9u314lsP17FLUzwFsQA1@webmail.informatik.kit.edu>
On Fri, Aug 21, 2015 at 4:49 PM, SZEDER Gábor <szeder@ira.uka.de> wrote:
> Quoting Junio C Hamano <gitster@pobox.com>:
>> Eric Sunshine <sunshine@sunshineco.com> writes:
>>> On Thu, Jul 23, 2015 at 4:49 PM, Eric Sunshine <sunshine@sunshineco.com>
>>> wrote:
>>>> Complete subcommands 'add' and 'prune', as well as their respective
>>>> options --force, --detach, --dry-run, --verbose, and --expire. Also
>>>> complete 'refname' in "git worktree add [-b <newbranch>] <path>
>>>> <refname>".
>>>
>>> Ping[1]?
>>
>> Ping indeed?
>
> Yeah, right, sorry. Non-subscribed occasional gmane-reader here amidst
> job hunting, so thanks for the ping. And the re-ping...
Thanks for the review.
>>>> +_git_worktree ()
>>>> +{
>>>> + local subcommands='add prune'
>>>> + local subcommand="$(__git_find_on_cmdline "$subcommands")"
>>>> + local c=2 n=0 refpos=2
>
> A more descriptive variable name for 'n' would be great.
Indeed. I was planning on resubmitting with better variable names
(even if I didn't get any feedback)...
>>>> + if [ -z "$subcommand" ]; then
>>>> + __gitcomp "$subcommands"
>>>> + else
>>>> + case "$subcommand,$cur" in
>>>> + add,--*)
>>>> + __gitcomp "--force --detach"
>
> We usually don't offer '--force', because that option must be
> handled with care.
As a person who never uses git-completion (or git-prompt), I wasn't
aware of that, so thanks for the heads-up. I only installed completion
(and prompt) when I decided to work on this (and I don't think I've
used tab-completion since then).
>>>> + ;;
>>>> + add,*)
>>>> + while [ $c -lt $cword ]; do
>>>> + case "${words[c]}" in
>>>> + --*) ;;
>>>> + -[bB]) ((refpos++)) ;;
>>>> + *) ((n++)) ;;
>>>> + esac
>>>> + ((c++))
>>>> + done
>>>> + if [ $n -eq $refpos ]; then
>
> I suppose here you wanted to calculate where (i.e. at which word on
> the command line) we should offer refs and fall back to bash builtin
> filename completion otherwise. It works well in the common cases,
> but:
>
> - it doesn't offer refs after -b or -B
That was intentional since this is a new branch name, so it didn't
seem sensible to offer completion of existing refs. On the other hand,
it doesn't make much since to offer pathname completion either, but I
didn't see a better alternative. On reflection, I suppose ref
completion can make sense if the new branch name is going to be
similar to an existing one.
> - it gets fooled by options to the git command, e.g. 'git
> --git-dir=.git worktree add <TAB>' offers refs instead of files,
> 'git --git-dir=.git worktree add ../some/path <TAB>' offers
> refs, etc.
This shortcoming could be addressed by computing relative to the
subcommand-index as your version does, correct?
I don't have enough background with the (git-specific) completion
facility to be able to judge if this patch and approach has merit and
ought to be pursued further, or if it would be better to drop in favor
of (some version of) your patch. I don't care strongly, and am fine
with dropping this patch if it's approach is suboptimal.
>>>> + __gitcomp_nl "$(__git_refs)"
>>>> + fi
>>>> + ;;
>>>> + prune,--*)
>>>> + __gitcomp "--dry-run --verbose --expire"
>>>> + ;;
>>>> + esac
>>>> + fi
>>>> +}
>>>> +
prev parent reply other threads:[~2015-08-21 21:59 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-23 20:49 [RFC/PATCH] contrib: teach completion about git-worktree options and arguments Eric Sunshine
2015-08-06 16:29 ` Eric Sunshine
2015-08-21 17:21 ` Junio C Hamano
2015-08-21 20:49 ` SZEDER Gábor
2015-08-21 20:50 ` [PoC PATCH] completion: support 'git worktree' SZEDER Gábor
2015-08-21 21:59 ` Eric Sunshine [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='CAPig+cQ9Rema_n1xBJQNSv9i75sGT=RWu1AheWJFTBMa89DyFA@mail.gmail.com' \
--to=sunshine@sunshineco.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=szeder@ira.uka.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).