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

Re: [PATCH v2 4/4] completion: improve 'git --exec-path' completion

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Apr 13, 2012, 18:04 UTC
Message-ID
<20120413180436.GA2387@burratino>
In-Reply-To
<20120413060845.GA15610@burratino>
On Fri, Apr 13, 2012 at 01:08:45AM -0500, Jonathan Nieder wrote:
> Felipe Contreras wrote:
Show 7 quoted lines
>> +++ b/contrib/completion/git-completion.bash
>> @@ -2638,7 +2638,7 @@ _git ()
>>  			--git-dir=
>>  			--bare
>>  			--version
>> -			--exec-path
>> +			--exec-path=
[...]
Show 10 quoted lines
> Thanks.
>
> "git --exec-path" means to print the name of the directory where git
> stores its subcommands and other helpers.  I have no thoughts either
> way about whether a user typing
>
> 	git --exec-p<TAB>
>
> is more likely to be asking for the current exec-path or intending to
> override it.

In other words, how about something like this? Tests left as an exercise to the interested reader.

-- >8 --
Subject: completion: do not add trailing space when completing --exec-path

--exec-path looks like to the completion script like an unambiguous successful completion script, but it is wrong. The user could be trying to do

	git --exec-path; # print name of helper directory
or
	git --exec-path=/path/to/alternative/helper/dir <subcommand>

so the most helpful thing to do is to leave out the trailing space and leave it to the operator to type an equal sign or carriage return according to the situation.

Reported-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
 contrib/completion/git-completion.bash |   14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 31f714da..ecbf2172 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -307,12 +307,14 @@ __git_ps1 ()
 # __gitcomp_1 requires 2 arguments
 __gitcomp_1 ()
 {
-	local c IFS=' '$'\t'$'\n'
+	local c word IFS=' '$'\t'$'\n'
 	for c in $1; do
-		case "$c$2" in
-		--*=*) printf %s$'\n' "$c$2" ;;
-		*.)    printf %s$'\n' "$c$2" ;;
-		*)     printf %s$'\n' "$c$2 " ;;
+		word=$c$2
+		case $word in
+		--*=*) printf %s$'\n' "$word" ;;
+		*.)    printf %s$'\n' "$word" ;;
+		*\$)   printf %s$'\n' "${word%\$}" ;;
+		*)     printf %s$'\n' "$word " ;;
 		esac
 	done
 }
@@ -2638,7 +2640,7 @@ _git ()
 			--git-dir=
 			--bare
 			--version
-			--exec-path
+			--exec-path\$
 			--html-path
 			--work-tree=
 			--namespace=
-- 
1.7.10
Previous: Jonathan NiederNext: Jonathan Nieder
Message 7 of 12 in “completion: trivial cleanups and fixes”
  1. 0/4 completion: trivial cleanups and fixesFelipe Contreras, Apr 12, 2012
  2. 1/4 completion: simplify __gitcomp_1Felipe Contreras, Apr 12, 2012
  3. 2/4 completion: trivial simplificationFelipe Contreras, Apr 12, 2012
  4. 3/4 completion: add missing general optionsFelipe Contreras, Apr 12, 2012
  5. 4/4 completion: improve 'git --exec-path' completionFelipe Contreras, Apr 12, 2012
  6. Jonathan NiederApr 13, 2012
  7. Jonathan NiederApr 13, 2012
  8. Jonathan NiederApr 13, 2012
  9. Felipe ContrerasApr 13, 2012
  10. Jonathan NiederApr 13, 2012
  11. Felipe ContrerasApr 13, 2012
  12. Andreas SchwabApr 14, 2012

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.