On Fri, May 04, 2018 at 05:35:11PM +0200, Johannes Schindelin wrote:
> Tab completion of `branch-diff` is very convenient, especially given
> that the revision arguments that need to be passed to `git branch-diff`
> are typically more complex than, say, your grandfather's `git log`
> arguments.
>
> Without this patch, we would only complete the `branch-diff` part but
> not the options and other arguments.
>
> This of itself may already be slightly disruptive for well-trained
> fingers that assume that `git bra<TAB>ori<TAB>mas<TAB>` would expand to
> `git branch origin/master`, as we now no longer automatically append a
> space after completing `git branch`: this is now ambiguous.
>
> Signed-off-by: Johannes Schindelin <[email protected]>
> ---
> contrib/completion/git-completion.bash | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/contrib/completion/git-completion.bash
> b/contrib/completion/git-completion.bash
> index 01dd9ff07a2..45addd525ac 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -1496,6 +1496,24 @@ _git_format_patch ()
> __git_complete_revlist
> }
>
> +__git_branch_diff_options="
> + --no-patches --creation-weight= --dual-color
> +"
> +
> +_git_branch_diff ()
> +{
> + case "$cur" in
> + --*)
> + __gitcomp "
You should use __gitcomp_builtin so you don't have to maintain
$__git_branch_diff_options here. Something like this
-- 8< --
diff --git a/contrib/completion/git-completion.bash
b/contrib/completion/git-completion.bash
index 45addd525a..4745631daf 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -1496,18 +1496,11 @@ _git_format_patch ()
__git_complete_revlist
}
-__git_branch_diff_options="
- --no-patches --creation-weight= --dual-color
-"
-
_git_branch_diff ()
{
case "$cur" in
--*)
- __gitcomp "
- $__git_branch_diff_options
- $__git_diff_common_options
- "
+ __gitcomp_builtin branch-diff "$__git_diff_common_options"
return
;;
esac
-- 8< --
> + $__git_branch_diff_options
> + $__git_diff_common_options
> + "
> + return
> + ;;
> + esac
> + __git_complete_revlist
> +}
> +
> _git_fsck ()
> {
> case "$cur" in
> --
> 2.17.0.409.g71698f11835