Skip to content

Commit

Permalink
contrib/completion: escape the forward slash in __git_match_ctag
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
John Szakmeister authored and Junio C Hamano committed Mar 15, 2015
1 parent 282616c commit db8d750
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion contrib/completion/git-completion.bash
Original file line number Diff line number Diff line change
Expand Up @@ -1298,7 +1298,7 @@ _git_gitk ()
}

__git_match_ctag() {
awk "/^${1////\\/}/ { print \$1 }" "$2"
awk "/^${1//\//\\/}/ { print \$1 }" "$2"
}

_git_grep ()
Expand Down

0 comments on commit db8d750

Please sign in to comment.