#compdef -command-line- local _comp_command1 _comp_command2 _comp_command skip if [[ "$1" = -s ]]; then skip=(-s) else skip=() _compskip='' fi # Check for a history reference to complete modifiers. # $PREFIX has a quoted form of the !, so we can't test that # (it might the start of a real argument), but words has the # raw McCoy. if [[ -o BANG_HIST && ( ( $words[CURRENT] = \!*: && -z $compstate[quote] ) || ( $words[CURRENT] = \"\!*: && $compstate[all_quotes] = \" ) ) ]]; then # This looks like a real history expansion; in that case # we'd better put the !'s back the way pfalstad intended. PREFIX=${PREFIX//\\!/!} compset -P '*:' _history_modifiers h return fi # Completing in command position? if [[ CURRENT -eq 1 ]]; then curcontext="${curcontext%:*:*}:-command-:" comp="$_comps[-command-]" [[ -n "$comp" ]] && eval "$comp" && ret=0 return ret fi _set_command _dispatch "$skip[@]" "$_comp_command" \ "$_comp_command1" "$_comp_command2" -default-