diff options
author | Jari Aalto <jari.aalto@cante.net> | 2001-11-13 17:56:06 +0000 |
---|---|---|
committer | Jari Aalto <jari.aalto@cante.net> | 2009-09-12 16:46:54 +0000 |
commit | f73dda092b33638d2d5e9c35375f687a607b5403 (patch) | |
tree | f21584e70a444d6a1ecba0fb5e2cf79e8cce91db /examples/complete/complete.gnu-longopt | |
parent | 28ef6c316f1aff914bb95ac09787a3c83c1815fd (diff) | |
download | android_external_bash-f73dda092b33638d2d5e9c35375f687a607b5403.tar.gz android_external_bash-f73dda092b33638d2d5e9c35375f687a607b5403.tar.bz2 android_external_bash-f73dda092b33638d2d5e9c35375f687a607b5403.zip |
Imported from ../bash-2.05a.tar.gz.
Diffstat (limited to 'examples/complete/complete.gnu-longopt')
-rw-r--r-- | examples/complete/complete.gnu-longopt | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/examples/complete/complete.gnu-longopt b/examples/complete/complete.gnu-longopt new file mode 100644 index 0000000..c55b436 --- /dev/null +++ b/examples/complete/complete.gnu-longopt @@ -0,0 +1,43 @@ +# +# Originally from: +# +#Message-ID: <3B13EC65.179451AE@wanadoo.fr> +#Date: Tue, 29 May 2001 20:37:25 +0200 +#From: Manu Rouat <emmanuel.rouat@wanadoo.fr> +#Subject: [bash] Universal command options completion? +# +# +#In the recent versions of bash (after 2.04) programmable +#completion is available. A useful completion function +#is , for a particular command, to enumerate all flags +#that can be used in the command. Now, most GNU unix +#commands have so-called 'long options' for example: +# +#ls --color=always --no-group --size +# +#and these are all listed when you issue a '--help' flag. +#So the idea is to use that, then parse the output of the +#'--help' and reinject this to compgen. The basis of the +#following 'universal' completion funtion was the _configure_func' +#written by Ian McDonnald (or is it Chet Ramey ?) +#A dedicated function will always be better, but this is quite +#convenient. I chose to use 'long options' because they are +#easy to parse and explicit too (it's the point I guess...) +#Lots of room for improvement ! + +_longopt_func () +{ + case "$2" in + -*) ;; + *) return ;; + esac + + case "$1" in + \~*) eval cmd=$1 ;; + *) cmd="$1" ;; + esac + COMPREPLY=( $("$cmd" --help | sed -e '/--/!d' -e 's/.*--\([^ ]*\).*/--\1/'| \ +grep ^"$2" |sort -u) ) +} + +complete -o default -F _longopt_func ldd wget bash id info # some examples that work |