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

Re: [PATCH v3] tcsh-completion re-using git-completion.bash

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Nov 16, 2012, 17:21 UTC
Message-ID
<CAMP44s3rwUw1QaADgm0xVOK3ebPNVSa06QdN5voNniD2acsz0g@mail.gmail.com>
In-Reply-To
<CAFj1UpGmoEiLeHPh8LaUGLktV55YbTthi1wMNjLDn6vFMSdMwQ@mail.gmail.com>
On Fri, Nov 16, 2012 at 5:12 PM, Marc Khouzam <marc.khouzam@gmail.com> wrote:
Show 72 quoted lines
> diff --git a/contrib/completion/git-completion.tcsh
> b/contrib/completion/git-completion.tcsh
> new file mode 100644
> index 0000000..76395f9
> --- /dev/null
> +++ b/contrib/completion/git-completion.tcsh
> @@ -0,0 +1,63 @@
> +#!tcsh
> +#
> +# tcsh completion support for core Git.
> +#
> +# Copyright (C) 2012 Marc Khouzam <marc.khouzam@gmail.com>
> +# Distributed under the GNU General Public License, version 2.0.
> +#
> +# When sourced, this script will generate a new script that uses
> +# the git-completion.bash script provided by core Git.  This new
> +# script can be used by tcsh to perform git completion.
> +# The current script also issues the necessary tcsh 'complete'
> +# commands.
> +#
> +# To use this completion script:
> +#
> +#    1) Copy both this file and the bash completion script to ${HOME}.
> +#       You _must_ use the name ${HOME}/.git-completion.bash for the
> +#       bash script.
> +#       (e.g. ~/.git-completion.tcsh and ~/.git-completion.bash).
> +#    2) Add the following line to your .tcshrc/.cshrc:
> +#        source ~/.git-completion.tcsh
> +
> +set __git_tcsh_completion_original_script = ${HOME}/.git-completion.bash
> +set __git_tcsh_completion_script = ${HOME}/.git-completion.tcsh.bash
> +
> +cat << EOF > ${__git_tcsh_completion_script}
> +#!bash
> +#
> +# This script is GENERATED and will be overwritten automatically.
> +# Do not modify it directly.  Instead, modify the git-completion.tcsh
> +# script provided by Git core.
> +#
> +
> +source ${__git_tcsh_completion_original_script}
> +
> +# Set COMP_WORDS in a way that can be handled by the bash script.
> +COMP_WORDS=(\$1)
> +
> +# The cursor is at the end of parameter #1.
> +# We must check for a space as the last character which will
> +# tell us that the previous word is complete and the cursor
> +# is on the next word.
> +if [ "\${1: -1}" == " " ]; then
> +       # The last character is a space, so our location is at the end
> +       # of the command-line array
> +       COMP_CWORD=\${#COMP_WORDS[@]}
> +else
> +       # The last character is not a space, so our location is on the
> +       # last word of the command-line array, so we must decrement the
> +       # count by 1
> +       COMP_CWORD=\$((\${#COMP_WORDS[@]}-1))
> +fi
> +
> +# Call _git() or _gitk() of the bash script, based on the first
> +# element of the command-line
> +_\${COMP_WORDS[0]}
> +
> +IFS=\$'\n'
> +echo "\${COMPREPLY[*]}"
> +EOF
> +
> +complete git  'p/*/`bash ${__git_tcsh_completion_script}
> "${COMMAND_LINE}" | \sort | \uniq`/'
> +complete gitk 'p/*/`bash ${__git_tcsh_completion_script}
> "${COMMAND_LINE}" | \sort | \uniq`/'

This looks good to me. Except that maybe the sort and uniq can be moved to inside the script.

-- 
Felipe Contreras
Previous: Marc KhouzamNext: Marc Khouzam
Message 13 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.