Merge branch 'rh/complete-symbolic-ref'
Command line completion script (in contrib/) learned to complete "git symbolic-ref" a bit better (you need to enable plumbing commands to be completed with GIT_COMPLETION_SHOW_ALL_COMMANDS). * rh/complete-symbolic-ref: completion: add docs on how to add subcommand completions completion: improve docs for using __git_complete completion: add 'symbolic-ref'
This commit is contained in:
		@ -31,15 +31,29 @@
 | 
			
		||||
# Note that "git" is optional --- '!f() { : commit; ...}; f' would complete
 | 
			
		||||
# just like the 'git commit' command.
 | 
			
		||||
#
 | 
			
		||||
# If you have a command that is not part of git, but you would still
 | 
			
		||||
# like completion, you can use __git_complete:
 | 
			
		||||
# To add completion for git subcommands that are implemented in external
 | 
			
		||||
# scripts, define a function of the form '_git_${subcommand}' while replacing
 | 
			
		||||
# all dashes with underscores, and the main git completion will make use of it.
 | 
			
		||||
# For example, to add completion for 'git do-stuff' (which could e.g. live
 | 
			
		||||
# in /usr/bin/git-do-stuff), name the completion function '_git_do_stuff'.
 | 
			
		||||
# See _git_show, _git_bisect etc. below for more examples.
 | 
			
		||||
#
 | 
			
		||||
# If you have a shell command that is not part of git (and is not called as a
 | 
			
		||||
# git subcommand), but you would still like git-style completion for it, use
 | 
			
		||||
# __git_complete. For example, to use the same completion as for 'git log' also
 | 
			
		||||
# for the 'gl' command:
 | 
			
		||||
#
 | 
			
		||||
#   __git_complete gl git_log
 | 
			
		||||
#
 | 
			
		||||
# Or if it's a main command (i.e. git or gitk):
 | 
			
		||||
# Or if the 'gk' command should be completed the same as 'gitk':
 | 
			
		||||
#
 | 
			
		||||
#   __git_complete gk gitk
 | 
			
		||||
#
 | 
			
		||||
# The second parameter of __git_complete gives the completion function; it is
 | 
			
		||||
# resolved as a function named "$2", or "__$2_main", or "_$2" in that order.
 | 
			
		||||
# In the examples above, the actual functions used for completion will be
 | 
			
		||||
# _git_log and __gitk_main.
 | 
			
		||||
#
 | 
			
		||||
# Compatible with bash 3.2.57.
 | 
			
		||||
#
 | 
			
		||||
# You can set the following environment variables to influence the behavior of
 | 
			
		||||
@ -3581,6 +3595,17 @@ _git_svn ()
 | 
			
		||||
	fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_git_symbolic_ref () {
 | 
			
		||||
	case "$cur" in
 | 
			
		||||
	--*)
 | 
			
		||||
		__gitcomp_builtin symbolic-ref
 | 
			
		||||
		return
 | 
			
		||||
		;;
 | 
			
		||||
	esac
 | 
			
		||||
 | 
			
		||||
	__git_complete_refs
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_git_tag ()
 | 
			
		||||
{
 | 
			
		||||
	local i c="$__git_cmd_idx" f=0
 | 
			
		||||
 | 
			
		||||
@ -2518,6 +2518,29 @@ test_expect_success 'complete tree filename with metacharacters' '
 | 
			
		||||
	EOF
 | 
			
		||||
'
 | 
			
		||||
 | 
			
		||||
test_expect_success 'symbolic-ref completes builtin options' '
 | 
			
		||||
	test_completion "git symbolic-ref --d" <<-\EOF
 | 
			
		||||
	--delete Z
 | 
			
		||||
	EOF
 | 
			
		||||
'
 | 
			
		||||
 | 
			
		||||
test_expect_success 'symbolic-ref completes short ref names' '
 | 
			
		||||
	test_completion "git symbolic-ref foo m" <<-\EOF
 | 
			
		||||
	main Z
 | 
			
		||||
	mybranch Z
 | 
			
		||||
	mytag Z
 | 
			
		||||
	EOF
 | 
			
		||||
'
 | 
			
		||||
 | 
			
		||||
test_expect_success 'symbolic-ref completes full ref names' '
 | 
			
		||||
	test_completion "git symbolic-ref foo refs/" <<-\EOF
 | 
			
		||||
	refs/heads/main Z
 | 
			
		||||
	refs/heads/mybranch Z
 | 
			
		||||
	refs/tags/mytag Z
 | 
			
		||||
	refs/tags/A Z
 | 
			
		||||
	EOF
 | 
			
		||||
'
 | 
			
		||||
 | 
			
		||||
test_expect_success PERL 'send-email' '
 | 
			
		||||
	test_completion "git send-email --cov" <<-\EOF &&
 | 
			
		||||
	--cover-from-description=Z
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user