[PATCH] Basic Zsh completion support

Subsystems: kernel build + files below scripts/ (unless maintained elsewhere), the rest

DORMANTno replies

5 messages, 3 authors, 2016-06-15 · open the first message on its own page

[PATCH] Basic Zsh completion support

From: Fredrik Kuivinen <hidden>
Date: 2016-06-15 22:42:21

Based on the completion code for quilt in the Zsh distribution.

Signed-off-by: Fredrik Kuivinen <redacted>

---

 .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

Re: [PATCH] Basic Zsh completion support

From: Nikolai Weibull <hidden>
Date: 2016-06-15 22:42:21

On 3/18/06, Fredrik Kuivinen [off-list ref] 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

Re: [PATCH] Basic Zsh completion support

From: Bertrand Jacquin <hidden>
Date: 2016-06-15 22:42:21

On 3/18/06, Nikolai Weibull [off-list ref] wrote:
On 3/18/06, Fredrik Kuivinen [off-list ref] wrote:
quoted
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 ?
  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

Re: [PATCH] Basic Zsh completion support

From: Nikolai Weibull <hidden>
Date: 2016-06-15 22:42:21

On 3/18/06, Bertrand Jacquin [off-list ref] wrote:
On 3/18/06, Nikolai Weibull [off-list ref] wrote:
quoted
On 3/18/06, Fredrik Kuivinen [off-list ref] wrote:
quoted
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

Re: [PATCH] Basic Zsh completion support

From: Fredrik Kuivinen <hidden>
Date: 2016-06-15 22:42:21

On Sat, Mar 18, 2006 at 04:25:04PM +0100, Nikolai Weibull wrote:
On 3/18/06, Fredrik Kuivinen [off-list ref] wrote:
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help