From: ted@tedpavlic.com
To: catalin.marinas@gmail.com
Cc: git@vger.kernel.org, Ted Pavlic <ted@tedpavlic.com>
Subject: [StGit PATCH] Added basic bash completion script for StGit.
Date: Mon, 19 Jan 2009 17:57:59 -0500 [thread overview]
Message-ID: <1232405879-6188-1-git-send-email-ted@tedpavlic.com> (raw)
From: Ted Pavlic <ted@tedpavlic.com>
Signed-off-by: Ted Pavlic <ted@tedpavlic.com>
---
contrib/completion/stg-completion.bash | 106 ++++++++++++++++++++++++++++++++
1 files changed, 106 insertions(+), 0 deletions(-)
create mode 100755 contrib/completion/stg-completion.bash
diff --git a/contrib/completion/stg-completion.bash b/contrib/completion/stg-completion.bash
new file mode 100755
index 0000000..13cc792
--- /dev/null
+++ b/contrib/completion/stg-completion.bash
@@ -0,0 +1,106 @@
+#!bash
+#
+# bash completion support for Stacked Git (StGit).
+#
+# Copyright (c) 2009 by Theodore P. Pavlic <ted@tedpavlic.com>
+# Distributed under the GNU General Public License, version 2.0.
+#
+# Design is highly influenced by completion scripts for Mercurial and
+# git.
+#
+# To use these routines:
+#
+# 1) Copy this file to somewhere (e.g. ~/.stg-completion.sh).
+# 2) Added the following line to your .bashrc or .bash_profile:
+# source ~/.stg-completion.sh
+#
+# To submit patches:
+#
+# *) Read Documentation/SubmittingPatches
+# *) Send all patches to the Git mailing list
+#
+# git@vger.kernel.org
+#
+# and CC the message to the StGit maintainer
+#
+# catalin.marinas@gmail.com
+#
+# Prefix the subject with something like "[StGit PATCH]",
+# "[StGit PATCH i/n]", "[StGit PATCH RFC]", or similar. Patches
+# should be "Signed-off-by:" you as described in
+# Documentation/SubmittingPatches.
+#
+# It is recommended that editors submit patches using utilities
+# like
+#
+# stg mail
+# git send-email
+# git format-patch
+#
+# In the latter case, make sure e-amils submitted to the list do
+# not have "format=flowed" and do not "word wrap" your patch.
+#
+
+# This 'extglob' bash option allows for
+# if [[ $param == @(-h|--help) ]]
+# type statements. That is, the pattern is true if $param matches -h OR
+# --help
+shopt -s extglob
+
+__stg_commands()
+{
+ local commands
+ commands="$("$stg" help|grep '^ '|cut -f3 -d' ' 2>/dev/null)" || commands=""
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$commands' -- "$cur"))
+}
+
+__stg()
+{
+ local cur prev cmd
+ local stg="$1"
+
+ COMPREPLY=()
+ cur="$2"
+ prev="$3"
+
+ if [ $COMP_CWORD -gt 1 ]; then
+ # Try to complete the argument to an already complete stg command
+ # (e.g., "stg command partial<tab>")
+ cmd=${COMP_WORDS[${COMP_CWORD}-1]}
+ __stg_specific_command
+ else
+ # Try to complete an incomplete stg command (possibly blank)
+ # (e.g., "stg partial<tab>")
+ __stg_commands
+ fi
+
+}
+
+# Handle "stg command <tab>" completion
+__stg_specific_command()
+{
+ # Here, try to find (possibly user-defined) functions that match the
+ # command
+ if [ "$(type -t "__stg_cmd_$cmd")" = function ]; then
+ "__stg_cmd_$cmd"
+ return 0
+ fi
+
+ # Special handling of particular stg commands can be placed here
+ case "$cmd" in
+ help)
+ # Complete help with all possible help commands
+ __stg_commands
+ ;;
+ *)
+ # Bail out to normal bash completion
+ return 1
+ ;;
+ esac
+
+ return 0
+}
+
+# Use __stg for stg completion and bail out to normal bash completion
+complete -o bashdefault -o default -F __stg stg 2>/dev/null \
+ || complete -o default -F __stg stg
--
1.6.1.87.g15624
next reply other threads:[~2009-01-19 22:59 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-19 22:57 ted [this message]
2009-01-19 23:15 ` [StGit PATCH] Added basic bash completion script for StGit Ted Pavlic
2009-01-19 23:35 ` Ted Pavlic
2009-01-22 16:03 ` Karl Hasselström
2009-01-22 16:09 ` Ted Pavlic
2009-01-22 16:18 ` Karl Hasselström
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=1232405879-6188-1-git-send-email-ted@tedpavlic.com \
--to=ted@tedpavlic.com \
--cc=catalin.marinas@gmail.com \
--cc=git@vger.kernel.org \
/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).