All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] completion: add new git_complete helper
@ 2012-04-15 21:20 Felipe Contreras
  2012-04-15 21:37 ` Jonathan Nieder
  0 siblings, 1 reply; 40+ messages in thread
From: Felipe Contreras @ 2012-04-15 21:20 UTC (permalink / raw)
  To: git
  Cc: Jonathan Nieder, SZEDER Gábor, Junio C Hamano, Thomas Rast,
	Felipe Contreras

This simplifies the completions, and makes it easier to define aliases:

 git_complete gf git_fetch

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---

Since v2:

 * Remove stuff related to aliases fixes; should work on top of master

 contrib/completion/git-completion.bash |   68 +++++++++++++++-----------------
 t/t9902-completion.sh                  |    2 +-
 2 files changed, 32 insertions(+), 38 deletions(-)

diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 31f714d..abb4ccb 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -2603,21 +2603,6 @@ _git ()
 {
 	local i c=1 command __git_dir
 
-	if [[ -n ${ZSH_VERSION-} ]]; then
-		emulate -L bash
-		setopt KSH_TYPESET
-
-		# workaround zsh's bug that leaves 'words' as a special
-		# variable in versions < 4.3.12
-		typeset -h words
-
-		# workaround zsh's bug that quotes spaces in the COMPREPLY
-		# array if IFS doesn't contain spaces.
-		typeset -h IFS
-	fi
-
-	local cur words cword prev
-	_get_comp_words_by_ref -n =: cur words cword prev
 	while [ $c -lt $cword ]; do
 		i="${words[c]}"
 		case "$i" in
@@ -2663,22 +2648,6 @@ _git ()
 
 _gitk ()
 {
-	if [[ -n ${ZSH_VERSION-} ]]; then
-		emulate -L bash
-		setopt KSH_TYPESET
-
-		# workaround zsh's bug that leaves 'words' as a special
-		# variable in versions < 4.3.12
-		typeset -h words
-
-		# workaround zsh's bug that quotes spaces in the COMPREPLY
-		# array if IFS doesn't contain spaces.
-		typeset -h IFS
-	fi
-
-	local cur words cword prev
-	_get_comp_words_by_ref -n =: cur words cword prev
-
 	__git_has_doubledash && return
 
 	local g="$(__gitdir)"
@@ -2699,16 +2668,41 @@ _gitk ()
 	__git_complete_revlist
 }
 
-complete -o bashdefault -o default -o nospace -F _git git 2>/dev/null \
-	|| complete -o default -o nospace -F _git git
-complete -o bashdefault -o default -o nospace -F _gitk gitk 2>/dev/null \
-	|| complete -o default -o nospace -F _gitk gitk
+foo_wrap ()
+{
+	if [[ -n ${ZSH_VERSION-} ]]; then
+		emulate -L bash
+		setopt KSH_TYPESET
+
+		# workaround zsh's bug that leaves 'words' as a special
+		# variable in versions < 4.3.12
+		typeset -h words
+
+		# workaround zsh's bug that quotes spaces in the COMPREPLY
+		# array if IFS doesn't contain spaces.
+		typeset -h IFS
+	fi
+	local cur words cword prev
+	_get_comp_words_by_ref -n =: cur words cword prev
+	foo "$@"
+}
+
+git_complete ()
+{
+	local name="${2-$1}"
+	eval "$(typeset -f foo_wrap | sed -e "s/foo/_$name/")"
+	complete -o bashdefault -o default -o nospace -F _${name}_wrap $1 2>/dev/null \
+		|| complete -o default -o nospace -F _${name}_wrap $1
+}
+
+git_complete git
+git_complete gitk
 
 # The following are necessary only for Cygwin, and only are needed
 # when the user has tab-completed the executable name and consequently
 # included the '.exe' suffix.
 #
 if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
-complete -o bashdefault -o default -o nospace -F _git git.exe 2>/dev/null \
-	|| complete -o default -o nospace -F _git git.exe
+git_complete git.exe git
 fi
diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
index 7bd37f5..0f1a9ec 100755
--- a/t/t9902-completion.sh
+++ b/t/t9902-completion.sh
@@ -63,7 +63,7 @@ run_completion ()
 	local _cword
 	_words=( $1 )
 	(( _cword = ${#_words[@]} - 1 ))
-	_git && print_comp
+	_git_wrap && print_comp
 }
 
 test_completion ()
-- 
1.7.10

^ permalink raw reply related	[flat|nested] 40+ messages in thread

end of thread, other threads:[~2012-04-22 12:58 UTC | newest]

Thread overview: 40+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-15 21:20 [PATCH v2] completion: add new git_complete helper Felipe Contreras
2012-04-15 21:37 ` Jonathan Nieder
2012-04-16 10:49   ` Felipe Contreras
2012-04-16 15:54     ` Junio C Hamano
2012-04-16 16:07       ` Jonathan Nieder
2012-04-16 16:32         ` Junio C Hamano
2012-04-16 20:04         ` Felipe Contreras
2012-04-16 20:09           ` Jonathan Nieder
2012-04-16 20:30             ` Felipe Contreras
2012-04-16 20:33               ` Jonathan Nieder
2012-04-16 20:42                 ` Felipe Contreras
2012-04-16 20:46                   ` Jonathan Nieder
2012-04-16 20:51                     ` Felipe Contreras
2012-04-16 20:59                       ` Jonathan Nieder
2012-04-21  7:20                         ` Ville Skyttä
2012-04-21 15:41                           ` [Bash-completion-devel] " Felipe Contreras
2012-04-21 17:39                             ` Ville Skyttä
2012-04-22 12:58                               ` Felipe Contreras
2012-04-16 20:51                 ` Junio C Hamano
2012-04-16 21:09                   ` Felipe Contreras
2012-04-16 22:44                     ` Jonathan Nieder
2012-04-16 23:04                       ` Felipe Contreras
2012-04-16 23:05                         ` Jonathan Nieder
2012-04-16 23:16                         ` Jonathan Nieder
2012-04-17  7:10                           ` Felipe Contreras
2012-04-17  7:36                             ` Jonathan Nieder
2012-04-17  7:56                               ` Felipe Contreras
2012-04-17  8:06                                 ` Jonathan Nieder
2012-04-17  8:22                                 ` Jonathan Nieder
2012-04-16 16:00     ` Jonathan Nieder
2012-04-16 22:15   ` SZEDER Gábor
2012-04-16 22:33     ` Felipe Contreras
2012-04-17 15:50       ` Junio C Hamano
2012-04-17 16:13         ` Felipe Contreras
2012-04-17 18:15           ` Junio C Hamano
2012-04-17 20:53             ` Felipe Contreras
2012-04-17 21:08               ` Jonathan Nieder
2012-04-17 22:14               ` SZEDER Gábor
2012-04-17 22:19                 ` Felipe Contreras
2012-04-17 17:50         ` SZEDER Gábor

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.