git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] bash completion: complete refs for git-grep

From
Thomas Rast <trast@student.ethz.ch>
Date
Oct 12, 2009, 09:00 UTC
Message-ID
<9f58ba1e7db9702d1b0594a8016c204e3d50b72f.1255337776.git.trast@student.ethz.ch>
In-Reply-To
<200910071727.50770.trast@student.ethz.ch>

Before the --, always attempt ref completion. This helps with entering the <treeish> arguments to git-grep. As a bonus, you can work around git-grep's current lack of --all by hitting M-*, ugly as the resulting command line may be.

Strictly speaking, completing the regular expression argument (or option argument) makes no sense. However, we cannot prevent _all_ completion (it will fall back to filenames), so we dispense with any additional complication to detect whether the user still has to enter a regular expression.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---

Sorry for taking so long; I was swamped all weekend by, well, the weekend. ;-)

I wrote:
Show 13 quoted lines
> Shawn O. Pearce wrote:
> > > This is still RFC because, as you can see in the code below, I tried
> > > to avoid completing at all while the user still needs to supply a
> > > regex.  Sadly, bash turns the COMPREPLY=() into filename completion
> > > anyway.  Is there a way to prevent this?
> > 
> > Not that I know of.  You can turn off default filename completion
> > when you register the completion function, but that then breaks
> > like every other git command for completion support because a lot
> > of them do want to complete filenames.
> 
> So I'll roll a simpler patch that just always (before --) completes
> refs instead, if that's ok.
So that's what this patch does.
 contrib/completion/git-completion.bash |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 6fd7e1d..b08cd77 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -1048,7 +1048,8 @@ _git_grep ()
 		return
 		;;
 	esac
-	COMPREPLY=()
+
+	__gitcomp "$(__git_refs)"
 }
 
 _git_help ()
-- 
1.6.5.61.g35405
Previous: Thomas RastNext: Shawn O. Pearce
Message 4 of 6 in “bash completion: complete refs for git-grep”
  1. bash completion: complete refs for git-grepThomas Rast, Oct 6, 2009
  2. Shawn O. PearceOct 6, 2009
  3. Thomas RastOct 7, 2009
  4. bash completion: complete refs for git-grepThomas Rast, Oct 12, 2009
  5. Shawn O. PearceOct 12, 2009
  6. Junio C HamanoOct 12, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.