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

Re: Fwd: [PATCH] Add tcsh-completion support to contrib by using git-completion.bash

From
SZEDER Gábor <szeder@ira.uka.de>
Date
Nov 13, 2012, 23:46 UTC
Message-ID
<20121113234636.GS12052@goldbirke>
In-Reply-To
<CAFj1UpGxx_9GHSnJRpe8hDGB6OTio1mcN71LKcR0pxhSVx2xDw@mail.gmail.com>
Hi,
On Tue, Nov 13, 2012 at 03:12:44PM -0500, Marc Khouzam wrote:
Show 17 quoted lines
> >> +if [ -n "$1" ] ; then
> >> +  # If there is an argument, we know the script is being executed
> >> +  # so go ahead and run the _git_complete_with_output function
> >> +  _git_complete_with_output "$1" "$2"
> >
> > Where does the second argument come from?  Below you run this script
> > as '${__git_tcsh_completion_script} "${COMMAND_LINE}"', i.e. $2 is
> > never set.  Am I missing something?
> 
> This second argument is optional and, if present, will be put in
> $COMP_CWORD.  If not present, $COMP_CWORD must be computed
> from $1.  Also see comment above _git_complete_with_output ().
> tcsh does not provide me with this information, so I cannot make use of it.
> However, I thought it would be more future-proof to allow it for other shells
> which may have that information.
> 
> It is not necessary for tcsh, so I can remove if you prefer?

I see. I read those comments and understood what it is about. I was just surprised that the code is there to make use of it, yet it's not specified when invoking that function.

Since it's a trivial piece of code, I would say let's keep it. Could you please add a sentence about it (that it's for possible future users and it's not used at the moment) to the commit message for future reference?

Show 16 quoted lines
> >> +complete git  'p/*/`${__git_tcsh_completion_script} "${COMMAND_LINE}"
> >> | sort | uniq`/'
> >> +complete gitk 'p/*/`${__git_tcsh_completion_script} "${COMMAND_LINE}"
> >> | sort | uniq`/'
> >
> > Is the 'sort | uniq' really necessary?  After the completion function
> > returns Bash automatically sorts the elements in COMPREPLY and removes
> > any duplicates.  Doesn't tcsh do the same?  I have no idea about tcsh
> > completion.
> 
> On my machine, tcsh does not remove duplicates.  It does sort the results
> but that is done after I've run 'uniq', which is too late.  I'm not
> happy about this
> either, but the other option is to improve git-completion.bash to
> avoid duplicates,
> which seemed less justified.

Ok. Then keep it for the time being, and we'll see what we can do to avoid those duplicates.

> > Does the git completion script returns any duplicates at all?
> 
> It does.  'help' is returned twice for example.

Right. Now that you mentioned it, I remember I noticed it a while ago, too. I even wrote a patch to fix it, but not sure what became of it. Will try to dig it up.

Show 8 quoted lines
> Also, when completing 'git checkout ' in the git repo, I can see multiple
> 'todo' branches, as well as 'master', 'pu', 'next', etc.
> 
> You can actually try it without tcsh by running my proposed version of
> git-completion.bash like this:
> 
> cd git/contrib/completion
> bash git-completion.bash "git checkout " | sort | uniq --repeated

Interesting, I can't reproduce. Are the duplicates also there, if you start a bash, source git-completion.bash, and run __git_refs ?

Previous: Marc KhouzamNext: SZEDER Gábor
Message 4 of 39 in “Fwd: [PATCH] Add tcsh-completion support to contrib by using git-completion.bash”
  1. Marc KhouzamNov 12, 2012
  2. SZEDER GáborNov 13, 2012
  3. Marc KhouzamNov 13, 2012
  4. SZEDER GáborNov 13, 2012
  5. completion: remove 'help' duplicate from porcelain commandsSZEDER Gábor, Nov 14, 2012
  6. Marc KhouzamNov 14, 2012
  7. tcsh-completion re-using git-completion.bashMarc Khouzam, Nov 15, 2012
  8. Felipe ContrerasNov 16, 2012
  9. Marc KhouzamNov 16, 2012
  10. Felipe ContrerasNov 16, 2012
  11. Marc KhouzamNov 16, 2012
  12. tcsh-completion re-using git-completion.bashMarc Khouzam, Nov 16, 2012
  13. Felipe ContrerasNov 16, 2012
  14. tcsh-completion re-using git-completion.bashMarc Khouzam, Nov 16, 2012
  15. Junio C HamanoNov 16, 2012
  16. Felipe ContrerasNov 16, 2012
  17. Felipe ContrerasNov 16, 2012
  18. Marc KhouzamNov 16, 2012
  19. Felipe ContrerasNov 16, 2012
  20. SZEDER GáborNov 16, 2012
  21. Felipe ContrerasNov 16, 2012
  22. SZEDER GáborNov 16, 2012
  23. Felipe ContrerasNov 16, 2012
  24. SZEDER GáborNov 17, 2012
  25. Felipe ContrerasNov 17, 2012
  26. SZEDER GáborNov 17, 2012
  27. Junio C HamanoNov 16, 2012
  28. Felipe ContrerasNov 16, 2012
  29. Marc KhouzamNov 17, 2012
  30. Felipe ContrerasNov 17, 2012
  31. Marc KhouzamNov 20, 2012
  32. Felipe ContrerasNov 20, 2012
  33. Marc KhouzamNov 20, 2012
  34. Junio C HamanoNov 20, 2012
  35. Felipe ContrerasNov 13, 2012
  36. SZEDER GáborNov 14, 2012
  37. Felipe ContrerasNov 15, 2012
  38. Marc KhouzamNov 14, 2012
  39. SZEDER GáborNov 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.