From: Jonas Fonseca <fonseca@diku.dk>
To: Petr Baudis <pasky@ucw.cz>, git@vger.kernel.org
Subject: [TG PATCH] Complete depend subcommand
Date: Thu, 25 Sep 2008 15:47:06 +0200 [thread overview]
Message-ID: <20080925134706.GA16533@diku.dk> (raw)
In-Reply-To: <20080925110656.GB12949@diku.dk>
Also, removes a debug line and fixes the script header.
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
---
contrib/tg-completion.bash | 60 ++++++++++++++++++++++++++-----------------
1 files changed, 36 insertions(+), 24 deletions(-)
The completion of the depend command didn't make it into the first
patch because I had a broken topgit usage. Here is a resend, which
also amends the script header.
diff --git a/contrib/tg-completion.bash b/contrib/tg-completion.bash
index 35eabe9..59fbc50 100755
--- a/contrib/tg-completion.bash
+++ b/contrib/tg-completion.bash
@@ -7,32 +7,13 @@
# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
# Distributed under the GNU General Public License, version 2.0.
#
-# The contained completion routines provide support for completing:
-#
-# *) local and remote branch names
-# *) local and remote tag names
-# *) .git/remotes file names
-# *) git 'subcommands'
-# *) tree paths within 'ref:path/to/file' expressions
-# *) common --long-options
-#
# To use these routines:
#
-# 1) Copy this file to somewhere (e.g. ~/.git-completion.sh).
-# 2) Added the following line to your .bashrc:
-# source ~/.git-completion.sh
-#
-# 3) You may want to make sure the git executable is available
-# in your PATH before this script is sourced, as some caching
-# is performed while the script loads. If git isn't found
-# at source time then all lookups will be done on demand,
-# which may be slightly slower.
+# 1) Copy this file to somewhere (e.g. ~/.tg-completion.sh).
+# 2) Source it from your ~/.bashrc.
#
-# 4) Consider changing your PS1 to also show the current branch:
-# PS1='[\u@\h \W$(__tg_ps1 " (%s)")]\$ '
-#
-# The argument to __tg_ps1 will be displayed only if you
-# are currently in a git repository. The %s token will be
+# Note: Make sure the tg script is in your PATH before you source this
+# script, so it can properly setup cached values.
case "$COMP_WORDBREAKS" in
*:*) : great ;;
@@ -172,6 +153,22 @@ __tg_remotes ()
done
}
+__tg_find_subcommand ()
+{
+ local word subcommand c=1
+
+ while [ $c -lt $COMP_CWORD ]; do
+ word="${COMP_WORDS[c]}"
+ for subcommand in $1; do
+ if [ "$subcommand" = "$word" ]; then
+ echo "$subcommand"
+ return
+ fi
+ done
+ c=$((++c))
+ done
+}
+
__tg_complete_revlist ()
{
local pfx cur="${COMP_WORDS[COMP_CWORD]}"
@@ -268,6 +265,21 @@ _tg_delete ()
esac
}
+_tg_depend ()
+{
+ local subcommands="add"
+ local subcommand="$(__git_find_subcommand "$subcommands")"
+ if [ -z "$subcommand" ]; then
+ __tgcomp "$subcommands"
+ return
+ fi
+
+ case "$subcommand" in
+ add)
+ __tgcomp "$(__tg_refs)"
+ esac
+}
+
_tg_export ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
@@ -411,6 +423,7 @@ _tg ()
case "$command" in
create) _tg_create "$c" ;;
delete) _tg_delete ;;
+ depend) _tg_depend ;;
export) _tg_export ;;
help) _tg_help ;;
import) _tg_import ;;
@@ -426,7 +439,6 @@ _tg ()
### }}}
- __tgcomp "$(__tg_refs top-bases)"
complete -o default -o nospace -F _tg tg
# The following are necessary only for Cygwin, and only are needed
--
tg: (43a8db8..) jf/completion-fixes (depends on: master)
--
Jonas Fonseca
prev parent reply other threads:[~2008-09-25 13:48 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-25 11:06 [TG RFC PATCH] Add bash completion script for TopGit Jonas Fonseca
2008-09-25 13:47 ` Jonas Fonseca [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080925134706.GA16533@diku.dk \
--to=fonseca@diku.dk \
--cc=git@vger.kernel.org \
--cc=pasky@ucw.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).