Re: [PATCH v2 18/19] completion: support switch
- From
SZEDER Gábor <szeder.dev@gmail.com>
- Date
- Feb 8, 2019, 14:19 UTC
- Message-ID
- <20190208141915.GX10587@szeder.dev>
- In-Reply-To
- <20190208090401.14793-19-pclouds@gmail.com>
On Fri, Feb 08, 2019 at 04:04:00PM +0700, Nguyễn Thái Ngọc Duy wrote:
Show 29 quoted lines
> Completion support for --guess could be made better. If no --detach is
> given, we should only provide a list of refs/heads/* and dwim ones,
> not the entire ref space. But I still can't penetrate that
> __git_refs() function yet.
>
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> ---
> contrib/completion/git-completion.bash | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
>
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 499e56f83d..891abb72d7 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -2126,6 +2126,32 @@ _git_status ()
> __git_complete_index_file "$complete_opt"
> }
>
> +_git_switch ()
> +{
> + case "$cur" in
> + --conflict=*)
> + __gitcomp "diff3 merge" "" "${cur##--conflict=}"
> + ;;
> + --*)
> + __gitcomp_builtin switch
> + ;;
> + *)
> + # check if ---guess was specified to enable DWIM modeNit: s/---/--/
Show 6 quoted lines
> + local track_opt= only_local_ref=n > + if [ -n "$(__git_find_on_cmdline "-g --guess")" ]; then > + track_opt='--track' > + elif [ -z "$(__git_find_on_cmdline "-d --detach")" ]; then > + only_local_ref=y > + fi
Could these two options be used together? I think they could. If that's the case, then the two conditions shouldn't be chained with elif, but should be two separate if statements (even eliminating $only_local_ref, while at it?). If that's not the case, then the two __git_find_on_cmdline() calls could be combined into one, and a case statement could act according the option found, sparing one of the subshells from the two.
Show 15 quoted lines
> + if [ $only_local_ref = y ]; then
> + __gitcomp_direct "$(__git_heads "" "$cur" " ")"
> + else
> + __git_complete_refs $track_opt
> + fi
> + ;;
> + esac
> +}
> +
> __git_config_get_set_variables ()
> {
> local prevword word config_file= c=$cword
> --
> 2.20.1.682.gd5861c6d90
>