You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
3.7 KiB
87 lines
3.7 KiB
#A script with programmable completion for BASH
|
|
#In order to apply it, put a line "source path/to/this/script" somewhere where it gets executed every time you start bash, e.g. in ~/.profile
|
|
|
|
#Features
|
|
#* completion of switches. Just type hyphen and hit TAB twice
|
|
#* completion of constants. If a model name was specified, hit TAB twice when you are specifying a parameter to -const switch
|
|
#* completion for -{pta,scc,sim}method switch parameters
|
|
|
|
_prismcomplete() {
|
|
local cur prev MODELFILE PROPFILE curconst preconst CONSTANTS PARS SWITCHES
|
|
COMPREPLY=()
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
|
|
if [ "$prev" = -const ]; then
|
|
|
|
#get the name of the model
|
|
MODELFILE=`echo $COMP_LINE | grep -E -o "[^ ]*[.]([psn]m|smg) " | sed "s/ ^//"`
|
|
#expand tilde
|
|
MODELFILE=`eval echo $MODELFILE`
|
|
#check if model has been specified and is valid
|
|
test -n "$MODELFILE"|| return 0;
|
|
test -e $MODELFILE || return 0;
|
|
|
|
#get the parts after/before the last comma
|
|
curconst=`echo $cur | sed "s/.*,\([^,]*\)$/\\1/"`
|
|
preconst=`echo $cur | sed "s/[^,]*$//" | sed "s/.*[=]//"`
|
|
|
|
#check if we are after = sign, which means that we don't autocomplete
|
|
(echo $curconst | grep -q "=") && return 1;
|
|
|
|
#get a list of constants from the model file
|
|
CONSTANTS=`grep "^[ \t]*const " $MODELFILE | sed "s/.*const[ ]*\([^=;]*\)[\=;].*/\\1/" | sed "s/[^ ]* \([^ ]*\)[ ]*/\\1=/"`
|
|
|
|
COMPREPLY=( `compgen -W "$CONSTANTS" -- $curconst` )
|
|
|
|
COMPREPLY=("${COMPREPLY[@]/#/$preconst}")
|
|
return 0;
|
|
fi;
|
|
|
|
if [ "$prev" = -property ]; then
|
|
|
|
PROPFILE=`echo $COMP_LINE | grep -E -o "[^ ]*[.](pctl|props)" | sed "s/ ^//"`
|
|
PROPFILE=`eval echo $PROPFILE`
|
|
test -n "$PROPFILE"|| return 0;
|
|
test -e $PROPFILE || return 0;
|
|
|
|
#get the number of properties
|
|
SEQUENCE=`sed "s/\/\/.*//" $PROPFILE | grep "[a-z]" | awk '{print NR, " ", $0}' | sed "s/^[0-9]*[^\\"]*\\"\(.*\)\\":.*/\\1/" | sed "s/^\([0-9][0-9]*\).*$/\\1/"`
|
|
|
|
COMPREPLY=( `compgen -W "$SEQUENCE" -- $cur` )
|
|
COMPREPLY=("${COMPREPLY[@]/%/ }")
|
|
return 0;
|
|
fi;
|
|
|
|
if [ "$prev" = -simmethod ]; then
|
|
PARS="ci aci apmc sprt"
|
|
COMPREPLY=( `compgen -W "$PARS" -- $cur` )
|
|
COMPREPLY=("${COMPREPLY[@]/%/ }")
|
|
return 0;
|
|
fi;
|
|
|
|
if [ "$prev" = -ptamethod ]; then
|
|
PARS="games digital"
|
|
COMPREPLY=( `compgen -W "$PARS" -- $cur` )
|
|
COMPREPLY=("${COMPREPLY[@]/%/ }")
|
|
return 0;
|
|
fi;
|
|
|
|
if [ "$prev" = -sccmethod ]; then
|
|
PARS="xiebeerel lockstep sccfind"
|
|
COMPREPLY=( `compgen -W "$PARS" -- $cur` )
|
|
COMPREPLY=("${COMPREPLY[@]/%/ }")
|
|
return 0;
|
|
fi;
|
|
if [[ $cur == -* ]] ; then
|
|
SWITCHES="-noprob0 -noprob1 -help -version -pctl -property -const -steadystate -transient -simpath -nobuild -test -testall -importpepa -importtrans -importstates -importlabels -importinitdist -dtmc -ctmc -mdp -exportresults -exporttrans -exportstaterewards -exporttransrewards -exportrewards -exportstates -exportlabels -exportmatlab -exportmrmc -exportrows -exportordered -exportunordered -exporttransdot -exporttransdotstates -exportdot -exportbsccs -exportsteadystate -exporttransient -exportprism -exportprismconst -mtbdd -m -sparse -s -hybrid -h -ptamethod -power -jacobi -gaussseidel -bgaussseidel -pgaussseidel -bpgaussseidel -jor -sor -bsor -psor -bpsor -omega -relative -absolute -epsilon -maxiters -nopre -fair -nofair -fixdl -noprobchecks -zerorewardcheck -nossdetect -sccmethod -symm -aroptions -exportadv -exportadvmdp -verbose -extraddinfo -extrareachinfo -nocompact -sbl -sbmax -gsl -gsmax -cuddmaxmem -cuddepsilon -sim -simmethod -simsamples -simconf -simwidth -simapprox -simmanual -simvar -simmaxrwd -simpathlen"
|
|
COMPREPLY=( `compgen -W "$SWITCHES" -- $cur` )
|
|
COMPREPLY=("${COMPREPLY[@]/%/ }")
|
|
return 0;
|
|
fi;
|
|
#COMPREPLY=( `compgen -A file -- $cur` )
|
|
return 0;
|
|
}
|
|
|
|
complete -o nospace -F _prismcomplete -o default prism
|
|
|