Re: [PATCH] completion: Handle '!f() { ... }; f' aliases

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Jun 7, 2014 at 10:10 AM, Steffen Prohaska <prohaska@xxxxxx> 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 <prohaska@xxxxxx>
> ---
> 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]