contrib/completion: escape the forward slash in __git_match_ctag
commitdb8d750876ce9c43b23ddfdbe618ec5dd12767ee
authorJohn Szakmeister <john@szakmeister.net>
Sat, 14 Mar 2015 13:40:39 +0000 (14 09:40 -0400)
committerJunio C Hamano <gitster@pobox.com>
Sun, 15 Mar 2015 01:59:09 +0000 (14 18:59 -0700)
treece91304e272acfe7ad07812dfbd2248f03bdf77b
parent282616c72d1d08a77ca4fe1186cb708c38408d87
contrib/completion: escape the forward slash in __git_match_ctag

The current definition results in an incorrect expansion of the term under zsh.
For instance "/^${1////\\/}/" under zsh with the argument "hi" results in:
    /^/\/h/\/i/

This results in an output similar to this when trying to complete `git grep
chartab` under zsh:

    :: git grep chartabawk: cmd. line:1: /^/\/c/\/h/\/a/\/r/\/t/\/a/\/b/ { print $1 }
    awk: cmd. line:1:    ^ backslash not last character on line
    awk: cmd. line:1: /^/\/c/\/h/\/a/\/r/\/t/\/a/\/b/ { print $1 }
    awk: cmd. line:1:    ^ syntax error

Leaving the prompt in a goofy state until the user hits a key.

Escaping the literal / in the parameter expansion (using "/^${1//\//\\/}/")
results in:
    /^chartab/

allowing the completion to work correctly.

This formulation also works under bash.

Signed-off-by: John Szakmeister <john@szakmeister.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/completion/git-completion.bash