Merge branch 'nd/parseopt-completion-more'
The mechanism to use parse-options API to automate the command line completion continues to get extended and polished. * nd/parseopt-completion-more: completion: use __gitcomp_builtin in _git_cherry completion: use __gitcomp_builtin in _git_ls_tree completion: delete option-only completion commands completion: add --option completion for most builtin commands completion: factor out _git_xxx calling code completion: mention the oldest version we need to support git.c: add hidden option --list-parseopt-builtins git.c: move cmd_struct declaration up
This commit is contained in:
@ -29,6 +29,8 @@
|
||||
# tell the completion to use commit completion. This also works with aliases
|
||||
# of form "!sh -c '...'". For example, "!sh -c ': git commit ; ... '".
|
||||
#
|
||||
# Compatible with bash 3.2.57.
|
||||
#
|
||||
# You can set the following environment variables to influence the behavior of
|
||||
# the completion routines:
|
||||
#
|
||||
@ -1284,6 +1286,12 @@ _git_checkout ()
|
||||
|
||||
_git_cherry ()
|
||||
{
|
||||
case "$cur" in
|
||||
--*)
|
||||
__gitcomp_builtin cherry
|
||||
return
|
||||
esac
|
||||
|
||||
__git_complete_refs
|
||||
}
|
||||
|
||||
@ -1503,16 +1511,6 @@ _git_fsck ()
|
||||
esac
|
||||
}
|
||||
|
||||
_git_gc ()
|
||||
{
|
||||
case "$cur" in
|
||||
--*)
|
||||
__gitcomp_builtin gc
|
||||
return
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
_git_gitk ()
|
||||
{
|
||||
_gitk
|
||||
@ -1637,6 +1635,13 @@ _git_ls_remote ()
|
||||
|
||||
_git_ls_tree ()
|
||||
{
|
||||
case "$cur" in
|
||||
--*)
|
||||
__gitcomp_builtin ls-tree
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
||||
__git_complete_file
|
||||
}
|
||||
|
||||
@ -1812,11 +1817,6 @@ _git_mv ()
|
||||
fi
|
||||
}
|
||||
|
||||
_git_name_rev ()
|
||||
{
|
||||
__gitcomp_builtin name-rev
|
||||
}
|
||||
|
||||
_git_notes ()
|
||||
{
|
||||
local subcommands='add append copy edit get-ref list merge prune remove show'
|
||||
@ -3036,6 +3036,45 @@ _git_worktree ()
|
||||
fi
|
||||
}
|
||||
|
||||
__git_complete_common () {
|
||||
local command="$1"
|
||||
|
||||
case "$cur" in
|
||||
--*)
|
||||
__gitcomp_builtin "$command"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
__git_cmds_with_parseopt_helper=
|
||||
__git_support_parseopt_helper () {
|
||||
test -n "$__git_cmds_with_parseopt_helper" ||
|
||||
__git_cmds_with_parseopt_helper="$(__git --list-parseopt-builtins)"
|
||||
|
||||
case " $__git_cmds_with_parseopt_helper " in
|
||||
*" $1 "*)
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
__git_complete_command () {
|
||||
local command="$1"
|
||||
local completion_func="_git_${command//-/_}"
|
||||
if declare -f $completion_func >/dev/null 2>/dev/null; then
|
||||
$completion_func
|
||||
return 0
|
||||
elif __git_support_parseopt_helper "$command"; then
|
||||
__git_complete_common "$command"
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
__git_main ()
|
||||
{
|
||||
local i c=1 command __git_dir __git_repo_path
|
||||
@ -3095,14 +3134,12 @@ __git_main ()
|
||||
return
|
||||
fi
|
||||
|
||||
local completion_func="_git_${command//-/_}"
|
||||
declare -f $completion_func >/dev/null 2>/dev/null && $completion_func && return
|
||||
__git_complete_command "$command" && return
|
||||
|
||||
local expansion=$(__git_aliased_command "$command")
|
||||
if [ -n "$expansion" ]; then
|
||||
words[1]=$expansion
|
||||
completion_func="_git_${expansion//-/_}"
|
||||
declare -f $completion_func >/dev/null 2>/dev/null && $completion_func
|
||||
__git_complete_command "$expansion"
|
||||
fi
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user