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

zsh completion broken for file completion

From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Date
Feb 28, 2013, 18:43 UTC
Message-ID
<vpqtxowp9e2.fsf@grenoble-inp.fr>
Hi,

The completion for e.g. "git add file<tab>" is broken in master. I get the following result:

git add fo__gitcomp_file:8: command not found: compgen

The guilty commit is fea16b47b60 (Fri Jan 11 19:48:43 2013, Manlio Perillo, git-completion.bash: add support for path completion), which introduces a new __gitcomp_file function that uses the bash builtin "compgen", without redefining the function in git-completion.zsh.

The following proof-of-concept patch seems to fix the problem for me (I basically copied the __gitcomp_nl function to __gitcomp_file and removed the '-S "${4- }"'). The bash version does "compopt -o filenames", I don't know what zsh equivalent is.

diff --git a/contrib/completion/git-completion.zsh b/contrib/completion/git-completion.zsh
index 4577502..0ba1dcf 100644
--- a/contrib/completion/git-completion.zsh
+++ b/contrib/completion/git-completion.zsh
@@ -60,6 +60,15 @@ __gitcomp_nl ()
        compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0
 }
 
+__gitcomp_file ()
+{
+       emulate -L zsh
+
+       local IFS=$'\n'
+       compset -P '*[=:]'
+       compadd -Q -p "${2-}" -- ${=1} && _ret=0
+}
+
 _git ()
 {
        local _ret=1

Felipe, you know ZSH completion much better than me. Could you turn this
into a real patch?

Thanks,
-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
Next: Manlio Perillo
Message 1 of 6 in “zsh completion broken for file completion”
  1. Matthieu MoyFeb 28, 2013
  2. Manlio PerilloFeb 28, 2013
  3. Felipe ContrerasApr 1, 2013
  4. git-completion.zsh: define __gitcomp_file compatibility functionMatthieu Moy, Mar 5, 2013
  5. Junio C HamanoMar 5, 2013
  6. Manlio PerilloApr 2, 2013

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.