bash completion: Add completion for 'git help'
Rename cached __git_commandlist to __git_porcelain_commandlist and add __git_all_commandlist that only filters out *--* helpers. Completions for 'git help' will use the __git_all_commandlist, while the __git_porcelain_commandlist is used for git command completion. Users who actually read man pages may want to see help for plumbing commands. Signed-off-by: Lee Marlow <lee.marlow@gmail.com> Acked-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
6bb9e51b8e
commit
1eb7e2f834
@ -349,14 +349,32 @@ __git_complete_revlist ()
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
__git_commands ()
|
__git_all_commands ()
|
||||||
{
|
{
|
||||||
if [ -n "$__git_commandlist" ]; then
|
if [ -n "$__git_all_commandlist" ]; then
|
||||||
echo "$__git_commandlist"
|
echo "$__git_all_commandlist"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
local i IFS=" "$'\n'
|
local i IFS=" "$'\n'
|
||||||
for i in $(git help -a|egrep '^ ')
|
for i in $(git help -a|egrep '^ ')
|
||||||
|
do
|
||||||
|
case $i in
|
||||||
|
*--*) : helper pattern;;
|
||||||
|
*) echo $i;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
__git_all_commandlist=
|
||||||
|
__git_all_commandlist="$(__git_all_commands 2>/dev/null)"
|
||||||
|
|
||||||
|
__git_porcelain_commands ()
|
||||||
|
{
|
||||||
|
if [ -n "$__git_porcelain_commandlist" ]; then
|
||||||
|
echo "$__git_porcelain_commandlist"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
local i IFS=" "$'\n'
|
||||||
|
for i in "help" $(__git_all_commands)
|
||||||
do
|
do
|
||||||
case $i in
|
case $i in
|
||||||
*--*) : helper pattern;;
|
*--*) : helper pattern;;
|
||||||
@ -427,8 +445,8 @@ __git_commands ()
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
__git_commandlist=
|
__git_porcelain_commandlist=
|
||||||
__git_commandlist="$(__git_commands 2>/dev/null)"
|
__git_porcelain_commandlist="$(__git_porcelain_commands 2>/dev/null)"
|
||||||
|
|
||||||
__git_aliases ()
|
__git_aliases ()
|
||||||
{
|
{
|
||||||
@ -778,6 +796,18 @@ _git_gc ()
|
|||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_git_help ()
|
||||||
|
{
|
||||||
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
case "$cur" in
|
||||||
|
--*)
|
||||||
|
__gitcomp "--all --info --man --web"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
__gitcomp "$(__git_all_commands)"
|
||||||
|
}
|
||||||
|
|
||||||
_git_ls_remote ()
|
_git_ls_remote ()
|
||||||
{
|
{
|
||||||
__gitcomp "$(__git_remotes)"
|
__gitcomp "$(__git_remotes)"
|
||||||
@ -1410,7 +1440,8 @@ _git ()
|
|||||||
case "$i" in
|
case "$i" in
|
||||||
--git-dir=*) __git_dir="${i#--git-dir=}" ;;
|
--git-dir=*) __git_dir="${i#--git-dir=}" ;;
|
||||||
--bare) __git_dir="." ;;
|
--bare) __git_dir="." ;;
|
||||||
--version|--help|-p|--paginate) ;;
|
--version|-p|--paginate) ;;
|
||||||
|
--help) command="help"; break ;;
|
||||||
*) command="$i"; break ;;
|
*) command="$i"; break ;;
|
||||||
esac
|
esac
|
||||||
c=$((++c))
|
c=$((++c))
|
||||||
@ -1430,7 +1461,7 @@ _git ()
|
|||||||
--help
|
--help
|
||||||
"
|
"
|
||||||
;;
|
;;
|
||||||
*) __gitcomp "$(__git_commands) $(__git_aliases)" ;;
|
*) __gitcomp "$(__git_porcelain_commands) $(__git_aliases)" ;;
|
||||||
esac
|
esac
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
@ -1455,6 +1486,7 @@ _git ()
|
|||||||
fetch) _git_fetch ;;
|
fetch) _git_fetch ;;
|
||||||
format-patch) _git_format_patch ;;
|
format-patch) _git_format_patch ;;
|
||||||
gc) _git_gc ;;
|
gc) _git_gc ;;
|
||||||
|
help) _git_help ;;
|
||||||
log) _git_log ;;
|
log) _git_log ;;
|
||||||
ls-remote) _git_ls_remote ;;
|
ls-remote) _git_ls_remote ;;
|
||||||
ls-tree) _git_ls_tree ;;
|
ls-tree) _git_ls_tree ;;
|
||||||
|
Loading…
Reference in New Issue
Block a user