[Bash-completion-commits] [SCM] bash-completion branch, master, updated. 29ee9fb3f973ad249806c1b412716330d76f06b2

Ville Skyttä ville.skytta at iki.fi
Sat Oct 31 12:12:35 UTC 2009


The following commit has been merged in the master branch:
commit 46fa5c464b326ac431d587880582307007e6a82e
Author: Ville Skyttä <ville.skytta at iki.fi>
Date:   Thu Oct 29 20:29:35 2009 +0200

    Add abook completion, based on work by Raphaël Droz.

diff --git a/CHANGES b/CHANGES
index d9e3ae9..cc0c165 100644
--- a/CHANGES
+++ b/CHANGES
@@ -18,7 +18,7 @@ bash-completion (2.x)
   * Apply pine completion to alpine too.
   * Remove many unnecessary short option completions where long ones exist.
   * Improve cvs, gkrellm, lftp, mdadm, and mysqladmin completions.
-  * Add wtf completion, based on work by Raphaël Droz.
+  * Add abook and wtf completion, based on work by Raphaël Droz.
   * Add lftpget completion.
   * Don't overwrite other host completions when completing from multiple
     SSH known hosts files.
diff --git a/Makefile.am b/Makefile.am
index 8a1eacb..94392ad 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -3,7 +3,8 @@ AUTOMAKE_OPTIONS = dist-bzip2
 sysconf_DATA = bash_completion
 
 bashcompdir = $(sysconfdir)/bash_completion.d
-bashcomp_DATA = contrib/ant \
+bashcomp_DATA = contrib/abook \
+		contrib/ant \
 		contrib/apache2ctl \
 		contrib/apt \
 		contrib/apt-build \
diff --git a/contrib/abook b/contrib/abook
new file mode 100644
index 0000000..fba0f24
--- /dev/null
+++ b/contrib/abook
@@ -0,0 +1,65 @@
+# abook(1) completion
+
+have abook &&
+_abook()
+{
+    local cur prev
+
+    COMPREPLY=()
+    cur=`_get_cword`
+    prev=${COMP_WORDS[COMP_CWORD-1]}
+
+    # abook only takes options, tabbing after command name adds a single
+    # dash (bash4)
+    [ ${BASH_VERSINFO[0]} -ge 4 -a $COMP_CWORD -eq 1 -a -z "$cur" ] &&
+    {
+        compopt -o nospace
+        COMPREPLY=( "-" )
+        return 0
+    }
+
+    case "$cur" in
+        -*)
+            _longopt abook
+            return 0
+            ;;
+    esac
+
+    case "$prev" in
+        --informat)
+            [ ${BASH_VERSINFO[0]} -ge 4 ] && compopt +o filenames
+            COMPREPLY=( $( compgen -W "$(abook --formats | \
+                sed -n -e 's/^\t\([a-z]*\).*/\1/p' -e '/^$/q')" -- "$cur" ) )
+            return 0
+            ;;
+        --outformat)
+            [ ${BASH_VERSINFO[0]} -ge 4 ] && compopt +o filenames
+            COMPREPLY=( $( compgen -W "$(abook --formats | \
+                sed -n -e '/^$/,$s/^\t\([a-z]*\).*/\1/p')" -- "$cur" ) )
+            return 0
+            ;;
+        --infile)
+            COMPREPLY=( $( compgen -W stdin -- "$cur" ) )
+            _filedir
+            return 0
+            ;;
+        --outfile)
+            COMPREPLY=( $( compgen -W stdout -- "$cur" ) )
+            _filedir
+            return 0
+            ;;
+        --config|--datafile)
+            _filedir
+            return 0
+            ;;
+    esac
+} &&
+complete -F _abook -o filenames abook
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh

-- 
bash-completion



More information about the Bash-completion-commits mailing list