# Programmable completion for the ISE Eiffel estudio and ec command under bash. shopt -s extglob _ec() { local cur prev fcmds cmds COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} # possible expansions fcmds='-help -version -melt -quick_melt -freeze -finalize -precompile -c_compile -config -ace -project -target -clean' # handle some special cases case $prev in -ace) # followed by a filename _filedir 'ace' return 0 ;; -config) # followed by a filename _filedir 'ecf' return 0 ;; -project) # followed by a filename _filedir 'epr' return 0 ;; *) cmds=$fcmds ;; esac # can't use an expansion more than once for (( i=1; i<=$COMP_CWORD-1; ++i )) ; do opt=${COMP_WORDS[$i]} cmds=${cmds/${opt}/ } done COMPREPLY=( $( compgen -W "$cmds" -- $cur ) ) return 0 } complete -F _ec -o filenames ec