#compdef ed

local -a args

args=(
  '(-p --prompt)'{-p+,--prompt=}'[specify prompt]:prompt:'
  '(-s --quiet --silent)'{-s,--quiet,--silent}'[suppress diagnostics]'
)

if _pick_variant gnu=GNU unix --version; then
  args+=(
    '(-G --traditional)'{-G,--traditional}'[run in compatibility mode]'
    '(- :)'{-h,--help}'[display help]'
    '(-l --loose-exit-status)'{-l,--loose-exit-status}'[exit 0 even if a command fails]'
    '(-r --restricted)'{-r,--restricted}'[run in restricted mode]'
    '(- :)'{-V,--version}'[display version]'
    '(-v --verbose)'{-v,--verbose}'[be verbose]'
  )
else
  args=(-A '-*' ${args:#*\)--*})
  case $OSTYPE in
    dragonfly*|freebsd*|darwin*|netbsd*|solaris*)
      args+=(
        '-x[prompt for an encryption key]'
      )
      ;|
    netbsd*)
      args+=(
        '-E[enable extended regular expressions]'
        '-S[disable ! command]'
      )
      ;;
  esac
fi

_arguments -s -S \
  $args \
  ':file:_files'
