Based on the completion code for quilt in the Zsh distribution. Signed-off-by: Fredrik Kuivinen <freku045@xxxxxxxxxxxxxx> --- .gitignore | 1 + Makefile | 8 +++++++- generate-zsh-compl.sh | 26 ++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletions(-) diff --git a/.gitignore b/.gitignore index b4355b9..1cf6ac0 100644 --- a/.gitignore +++ b/.gitignore @@ -133,3 +133,4 @@ libgit.a *.py[co] config.mak git-blame +_git diff --git a/Makefile b/Makefile index 8a20c76..85c5e2d 100644 --- a/Makefile +++ b/Makefile @@ -96,6 +96,7 @@ bindir = $(prefix)/bin gitexecdir = $(bindir) template_dir = $(prefix)/share/git-core/templates/ GIT_PYTHON_DIR = $(prefix)/share/git-core/python +ZSH_COMPL_DIR = $(prefix)/share/zsh/site-functions # DESTDIR= CC = gcc @@ -438,13 +439,14 @@ SHELL_PATH_SQ = $(subst ','\'',$(SHELL_P PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH)) PYTHON_PATH_SQ = $(subst ','\'',$(PYTHON_PATH)) GIT_PYTHON_DIR_SQ = $(subst ','\'',$(GIT_PYTHON_DIR)) +ZSH_COMPL_DIR_SQ = $(subst ','\'',$(ZSH_COMPL_DIR)) ALL_CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER_SQ)' $(COMPAT_CFLAGS) LIB_OBJS += $(COMPAT_OBJS) export prefix TAR INSTALL DESTDIR SHELL_PATH template_dir ### Build rules -all: $(ALL_PROGRAMS) git$X gitk +all: $(ALL_PROGRAMS) git$X gitk _git all: $(MAKE) -C templates @@ -553,6 +555,8 @@ $(LIB_FILE): $(LIB_OBJS) doc: $(MAKE) -C Documentation all +_git: generate-zsh-compl.sh + ./generate-zsh-compl.sh version help $(ALL_PROGRAMS) > _git ### Testing rules @@ -586,6 +590,8 @@ install: all $(MAKE) -C templates install $(INSTALL) -d -m755 '$(DESTDIR_SQ)$(GIT_PYTHON_DIR_SQ)' $(INSTALL) $(PYMODULES) '$(DESTDIR_SQ)$(GIT_PYTHON_DIR_SQ)' + $(INSTALL) -d -m755 $(ZSH_COMPL_DIR) + $(INSTALL) -m644 _git '$(DESTDIR_SQ)$(ZSH_COMPL_DIR_SQ)' install-doc: $(MAKE) -C Documentation install diff --git a/generate-zsh-compl.sh b/generate-zsh-compl.sh new file mode 100755 index 0000000..f8c80de --- /dev/null +++ b/generate-zsh-compl.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +cmds=$(echo "$@" | sed s/git-//g | sed "s/\\.[^ ]*//g") + +cat <<EOF +#compdef git + +# Automatically generated by $0 + +local _git_subcommands expl curcontext="$curcontext" + +_arguments \ + '--version' \ + '--exec-path=:Git exec path:_path_files' \ + '--help' \ + '*::git command:->subcmd' && return 0 + + _git_subcommands=($cmds) + +if (( CURRENT == 1 )); then + _describe -t subcommand 'subcommand' _git_subcommands +else + # this part should be tailored for subcmds + _files +fi +EOF - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html