On Sat, Jun 7, 2014 at 10:10 AM, Steffen Prohaska <[email protected]> wrote:
> '!f() { ... }; f' is a recommended pattern to declare more complex
> aliases (see git wiki [1]). This commit teaches the completion to
> handle them.
>
> When determining which completion to use for an alias, the opening brace
> is now ignored in order to continue the search for a git command inside
> the function body. For example, the alias '!f() { git commit ... }' now
> triggers commit completion. Previously, the search stopped on '{', and
> the completion tried it to determine how to complete, which obviously
> was useless.
>
> Furthermore, the null command ':' is now skipped, so that it can be used
> as a workaround to declare the desired completion style. For example,
> the alias '!f() { : git commit ; if ... ' now triggers commit
> completion.
>
> [1] https://git.wiki.kernel.org/index.php/Aliases
>
> Signed-off-by: Steffen Prohaska <[email protected]>
> ---
> diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
> index 2d4beb5..ea48681 100755
> --- a/t/t9902-completion.sh
> +++ b/t/t9902-completion.sh
> @@ -550,6 +550,26 @@ test_expect_success 'complete files' '
> test_completion "git add mom" "momified"
> '
>
> +test_expect_success 'completion uses <cmd> completion for alias !f() {
> VAR=val git <cmd> ... }' '
> + git config alias.co "!f() { VAR=val git checkout ... ; } f" &&
test_config would be an appropriate replacement for "git config" +
"git config --unset".
> + test_completion "git co m" <<-\EOF &&
> + master Z
> + mybranch Z
> + mytag Z
> + EOF
> + git config --unset alias.co
> +'
> +
> +test_expect_success 'completion used <cmd> completion for alias !f() { : git
> <cmd> ; ... }' '
> + git config alias.co "!f() { : git checkout ; if ... } f" &&
Ditto.
> + test_completion "git co m" <<-\EOF &&
> + master Z
> + mybranch Z
> + mytag Z
> + EOF
> + git config --unset alias.co
> +'
> +
> test_expect_failure 'complete with tilde expansion' '
> git init tmp && cd tmp &&
> test_when_finished "cd .. && rm -rf tmp" &&
> --
> 2.0.0.244.g4e8e734
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html