* [PATCH] _git-grep: Complete files when outside git repos
@ 2020-09-24 20:34 Guido Cella
2020-09-25 6:34 ` Daniel Shahaf
0 siblings, 1 reply; 4+ messages in thread
From: Guido Cella @ 2020-09-24 20:34 UTC (permalink / raw)
To: zsh-workers
---
Completion/Unix/Command/_git | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 05e2a23..67f06c5 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -1037,6 +1037,12 @@ _git-grep () {
# don't complete treeishs.
case $state in
(tree-or-file)
+ # Check if we're not in a git repository.
+ if ! git rev-parse 2>/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
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] _git-grep: Complete files when outside git repos
2020-09-24 20:34 [PATCH] _git-grep: Complete files when outside git repos Guido Cella
@ 2020-09-25 6:34 ` Daniel Shahaf
2020-09-25 6:49 ` Mikael Magnusson
0 siblings, 1 reply; 4+ messages in thread
From: Daniel Shahaf @ 2020-09-25 6:34 UTC (permalink / raw)
To: Guido Cella; +Cc: zsh-workers
Guido Cella wrote on Thu, Sep 24, 2020 at 22:34:41 +0200:
> ---
> Completion/Unix/Command/_git | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
> index 05e2a23..67f06c5 100644
> --- a/Completion/Unix/Command/_git
> +++ b/Completion/Unix/Command/_git
> @@ -1037,6 +1037,12 @@ _git-grep () {
> # don't complete treeishs.
> case $state in
> (tree-or-file)
> + # Check if we're not in a git repository.
> + if ! git rev-parse 2>/dev/null; then
> + _files && ret=0
> + return ret
> + fi
Why is this correct? When cwd isn't a repository, «git grep foo ./bar»
just errors out:
.
% ls
iota
% git grep This iota
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
zsh: exit 128
Does newer git behave differently? If not, shouldn't the behaviour be
conditional on --no-index having been passed?
> integer first_tree last_tree start end i
>
> (( start = words[(I)(-f|-e)] > 0 ? 1 : 2 ))
> --
> 2.28.0
>
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] _git-grep: Complete files when outside git repos
2020-09-25 6:34 ` Daniel Shahaf
@ 2020-09-25 6:49 ` Mikael Magnusson
2020-09-25 7:28 ` Daniel Shahaf
0 siblings, 1 reply; 4+ messages in thread
From: Mikael Magnusson @ 2020-09-25 6:49 UTC (permalink / raw)
To: Daniel Shahaf; +Cc: Guido Cella, zsh-workers
On 9/25/20, Daniel Shahaf <d.s@daniel.shahaf.name> wrote:
> Guido Cella wrote on Thu, Sep 24, 2020 at 22:34:41 +0200:
>> ---
>> Completion/Unix/Command/_git | 6 ++++++
>> 1 file changed, 6 insertions(+)
>>
>> diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
>> index 05e2a23..67f06c5 100644
>> --- a/Completion/Unix/Command/_git
>> +++ b/Completion/Unix/Command/_git
>> @@ -1037,6 +1037,12 @@ _git-grep () {
>> # don't complete treeishs.
>> case $state in
>> (tree-or-file)
>> + # Check if we're not in a git repository.
>> + if ! git rev-parse 2>/dev/null; then
>> + _files && ret=0
>> + return ret
>> + fi
>
> Why is this correct? When cwd isn't a repository, «git grep foo ./bar»
> just errors out:
> .
> % ls
> iota
> % git grep This iota
> fatal: not a git repository (or any parent up to mount point /)
> Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not
> set).
> zsh: exit 128
>
> Does newer git behave differently? If not, shouldn't the behaviour be
> conditional on --no-index having been passed?
grep.fallbackToNoIndex
If set to true, fall back to git grep --no-index if git grep is executed
outside of a git repository. Defaults to false.
I guess if we want to be fancy we can check for this option / command
line switch, but it seems easier to just complete files in this
context since git can be configured to accept them here.
--
Mikael Magnusson
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] _git-grep: Complete files when outside git repos
2020-09-25 6:49 ` Mikael Magnusson
@ 2020-09-25 7:28 ` Daniel Shahaf
0 siblings, 0 replies; 4+ messages in thread
From: Daniel Shahaf @ 2020-09-25 7:28 UTC (permalink / raw)
To: Mikael Magnusson; +Cc: Guido Cella, zsh-workers
Mikael Magnusson wrote on Fri, 25 Sep 2020 06:49 +00:00:
> On 9/25/20, Daniel Shahaf <d.s@daniel.shahaf.name> wrote:
> > Guido Cella wrote on Thu, Sep 24, 2020 at 22:34:41 +0200:
> >> ---
> >> Completion/Unix/Command/_git | 6 ++++++
> >> 1 file changed, 6 insertions(+)
> >>
> >> diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
> >> index 05e2a23..67f06c5 100644
> >> --- a/Completion/Unix/Command/_git
> >> +++ b/Completion/Unix/Command/_git
> >> @@ -1037,6 +1037,12 @@ _git-grep () {
> >> # don't complete treeishs.
> >> case $state in
> >> (tree-or-file)
> >> + # Check if we're not in a git repository.
> >> + if ! git rev-parse 2>/dev/null; then
> >> + _files && ret=0
> >> + return ret
> >> + fi
> >
> > Why is this correct? When cwd isn't a repository, «git grep foo ./bar»
> > just errors out:
> > .
> > % ls
> > iota
> > % git grep This iota
> > fatal: not a git repository (or any parent up to mount point /)
> > Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not
> > set).
> > zsh: exit 128
> >
> > Does newer git behave differently? If not, shouldn't the behaviour be
> > conditional on --no-index having been passed?
>
> grep.fallbackToNoIndex
> If set to true, fall back to git grep --no-index if git grep is executed
> outside of a git repository. Defaults to false.
>
> [...] it seems easier to just complete files in this
> context since git can be configured to accept them here.
Fair enough. In this case, the patch should be revised to use
_call_program (and possibly discard stdout?).
> I guess if we want to be fancy we can check for this option / command
> line switch, [...]
If we wanted to be fancy, we'd parse the output of `git config --null`
into an associative array at the top of _git, so all _git-foo()
functions would be able to check such things cheaply. (May want to make
this conditional on some opt-in style for performance reasons?)
Cheers,
Daniel
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-09-25 7:28 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-24 20:34 [PATCH] _git-grep: Complete files when outside git repos Guido Cella
2020-09-25 6:34 ` Daniel Shahaf
2020-09-25 6:49 ` Mikael Magnusson
2020-09-25 7:28 ` Daniel Shahaf
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).