From: Fredrik Kuivinen Date: Sat, 18 Mar 2006 14:53:47 GMT Subject: [PATCH] Basic Zsh completion support Message-ID: <20060318145347.15128.85902.stgit@c165> Based on the completion code for quilt in the Zsh distribution. Signed-off-by: Fredrik Kuivinen --- .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 <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