--- Completion/Unix/Command/_git | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git index 05e2a23..2847d1c 100644 --- a/Completion/Unix/Command/_git +++ b/Completion/Unix/Command/_git @@ -1033,10 +1033,21 @@ _git-grep () { ': :_guard "^-*" pattern' \ '*:: :->tree-or-file' && ret=0 - # TODO: If --cached, --no-index, -O, or --open-files-in-pager was given, + # TODO: If --cached, -O, or --open-files-in-pager was given, # don't complete treeishs. case $state in (tree-or-file) + # Check if we're not in a git repository + # from the exit status of an arbitrary git command. + if ! git rev-parse 2>/dev/null && [[ + words[(I)--no-index] -ne 0 || + "$(_call_program get-grep-fallbacktonoindex-option git config --type=bool grep.fallbackToNoIndex)" \ + == 'true' + ]]; then + _files && ret=0 + return ret + fi + integer first_tree last_tree start end i (( start = words[(I)(-f|-e)] > 0 ? 1 : 2 )) @@ -1052,7 +1063,7 @@ _git-grep () { fi done - # TODO: Need to respect --cached and --no-index here. + # TODO: Need to respect --cached here. if (( last_tree == 0 || last_tree == end )); then if (( first_tree == 0 )); then _alternative \ -- 2.28.0
Sorry, I noticed that this only works because I have configured grep.fallbacktonoindex after sending the patch. =(. And sorry again for not replying to the existing thread, I'm not familiar with sending patches by email and thought git send-email would prompt me for the In-Reply-To Message-ID when sending the updated patch but it didn't.
On 9/25/20, Guido Cella <guidocella91@gmail.com> wrote:
> Sorry, I noticed that this only works because I have configured
> grep.fallbacktonoindex after sending the patch. =(.
> And sorry again for not replying to the existing thread, I'm not
> familiar with sending patches by email and thought git send-email would
> prompt me for the In-Reply-To Message-ID when sending the updated patch
> but it didn't.
If you want to do this, you have to give --in-reply-to='<blabla>' when
you use git send-email.
--
Mikael Magnusson
This works only if you passed --no-index or have git config grep.fallbackToNoIndex set to true, but we have no other completions to provide outside of git repositories anyway so we skip the check. --- I misunderstood the request to use _call_program as referring to getting the config because I was in a rush to fix the error. Now this just completes all files whenever we're outside a git repository but with the ability to change the called program (I initially just used rev-parse because it's called directly in 2 other places). Also, we're not done with --no-index since it still has the effect of not being able to complete treeishs within git repositories. Completion/Unix/Command/_git | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git index 05e2a23..4f5fdf4 100644 --- a/Completion/Unix/Command/_git +++ b/Completion/Unix/Command/_git @@ -1037,6 +1037,11 @@ _git-grep () { # don't complete treeishs. case $state in (tree-or-file) + if ! _call_program within-repo git rev-parse >&/dev/null; then + _files && ret=0 + return ret + fi + integer first_tree last_tree start end i (( start = words[(I)(-f|-e)] > 0 ? 1 : 2 )) -- 2.28.0