threads / patch / 3672

patchBasic Zsh completion support

Subject: [PATCH] Basic Zsh completion support

## tl;dr

5 messages between Mar 18, 2006 and Mar 18, 2006. Diffs are folded; open one to read it.

replies: 4people: 3as markdown or json

Fredrik Kuivinen· Mar 18, 2006, 14:53 UTC · lore
Based on the completion code for quilt in the Zsh distribution.
Signed-off-by: Fredrik Kuivinen <freku045@student.liu.se>
---
 .gitignore            |    1 +
 Makefile              |    8 +++++++-
 generate-zsh-compl.sh |   26 ++++++++++++++++++++++++++
 3 files changed, 34 insertions(+), 1 deletions(-)
Show changes to 3 files +34 −1

.gitignore, Makefile, generate-zsh-compl.sh

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
Nikolai Weibull· Mar 18, 2006, 15:25 UTC · re: Fredrik Kuivinen · lore

Re: [PATCH] Basic Zsh completion support

On 3/18/06, Fredrik Kuivinen <freku045@student.liu.se> wrote:
>
> Based on the completion code for quilt in the Zsh distribution.

Actually, there's an almost-complete implementation in 4.3 already. Written by me nonetheless. You can take a look and make suggestions if you like :-). I have an updated version to deal with post 1.0-changes locally that I'm going to put in Zsh's CVS soon enough.

  nikolai
Bertrand Jacquin· Mar 18, 2006, 15:52 UTC · re: Nikolai Weibull · lore

Re: [PATCH] Basic Zsh completion support

On 3/18/06, Nikolai Weibull <now@bitwi.se> wrote:
Show 8 quoted lines
> On 3/18/06, Fredrik Kuivinen <freku045@student.liu.se> wrote:
> >
> > Based on the completion code for quilt in the Zsh distribution.
>
> Actually, there's an almost-complete implementation in 4.3 already.
> Written by me nonetheless.  You can take a look and make suggestions
> if you like :-).  I have an updated version to deal with post
> 1.0-changes locally that I'm going to put in Zsh's CVS soon enough.
Any plan do to this for cogito ?
Show 7 quoted lines
>
>   nikolai
> -
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

-- Beber #e.fr@freenode

Nikolai Weibull· Mar 18, 2006, 16:14 UTC · re: Bertrand Jacquin · lore

Re: [PATCH] Basic Zsh completion support

On 3/18/06, Bertrand Jacquin <beber.mailing@gmail.com> wrote:
Show 11 quoted lines
> On 3/18/06, Nikolai Weibull <now@bitwi.se> wrote:
> > On 3/18/06, Fredrik Kuivinen <freku045@student.liu.se> wrote:
> > >
> > > Based on the completion code for quilt in the Zsh distribution.
> >
> > Actually, there's an almost-complete implementation in 4.3 already.
> > Written by me nonetheless.  You can take a look and make suggestions
> > if you like :-).  I have an updated version to deal with post
> > 1.0-changes locally that I'm going to put in Zsh's CVS soon enough.
>
> Any plan do to this for cogito ?

Sure, and stgit as well, but I haven't gotten around to it. The idea was to reuse as much as possible of the stuff that the three have in common (like tags, references, and so on), but as I haven't used either of the two (cogito and stgit) I haven't had a compelling reason to sit down and do it.

  nikolai
Fredrik Kuivinen· Mar 18, 2006, 16:23 UTC · re: Nikolai Weibull · lore

Re: [PATCH] Basic Zsh completion support

On Sat, Mar 18, 2006 at 04:25:04PM +0100, Nikolai Weibull wrote:
Show 9 quoted lines
> On 3/18/06, Fredrik Kuivinen <freku045@student.liu.se> wrote:
> >
> > Based on the completion code for quilt in the Zsh distribution.
> 
> Actually, there's an almost-complete implementation in 4.3 already. 
> Written by me nonetheless.  You can take a look and make suggestions
> if you like :-).  I have an updated version to deal with post
> 1.0-changes locally that I'm going to put in Zsh's CVS soon enough.
> 
Oh, I didn't know about that.
<updates zsh>
Very nice! Much better than my crude cut-and-paste work.
Junio: Please don't apply the patch.
- Fredrik

← back to recent threads