git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] completion: fix __gitcomp_builtin no longer consider extra options

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 22, 2018, 03:51 UTC
Message-ID
<xmqqr2giwsep.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<20181021083731.8009-1-pclouds@gmail.com>
Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
Show 17 quoted lines
> __gitcomp_builtin() has the main completion list provided by
>
>     git xxx --git-completion-helper
>
> but the caller can also add extra options that is not provided by
> --git-completion-helper. The only call site that does this is "git
> difftool" completion.
>
> This support is broken by b221b5ab9b (completion: collapse extra
> --no-.. options - 2018-06-06), which adds a special value "--" to mark
> that the rest of the options can be hidden by default. The commit
> forgets the fact that extra options are appended after
> "$(git xxx --git-completion-helper)", i.e. after this "--", and will
> be incorrectly hidden as well.
>
> Prepend the extra options before "$(git xxx --git-completion-helper)"
> to avoid this.

Thanks for a clear analysis. How did you find it? Got annoyed that completion of difftool got broken, or discovered while trying to apply the same trick as difftool completion uses to another one and seeing that the technique does not work?

Will queue.  Thanks.
Show 19 quoted lines
>
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> ---
>  contrib/completion/git-completion.bash | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index db7fd87b6b..c8fdcf8644 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -400,7 +400,7 @@ __gitcomp_builtin ()
>  	if [ -z "$options" ]; then
>  		# leading and trailing spaces are significant to make
>  		# option removal work correctly.
> -		options=" $(__git ${cmd/_/ } --git-completion-helper) $incl "
> +		options=" $incl $(__git ${cmd/_/ } --git-completion-helper) "
>  		for i in $excl; do
>  			options="${options/ $i / }"
>  		done
Previous: Nguyễn Thái Ngọc DuyNext: Duy Nguyen
Message 2 of 4 in “completion: fix __gitcomp_builtin no longer consider extra options”
  1. completion: fix __gitcomp_builtin no longer consider extra optionsNguyễn Thái Ngọc Duy, Oct 21, 2018
  2. Junio C HamanoOct 22, 2018
  3. Duy NguyenOct 22, 2018
  4. SZEDER GáborOct 22, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.