#compdef atach
# ------------------------------------------------------------------------------
# Description
# -----------
#
#  Completion script for atach (https://github.com/sorin-ionescu/atach).
#
# ------------------------------------------------------------------------------
# Authors
# -------
#
#  * Sorin Ionescu <sorin.ionescu@gmail.com>
#
# ------------------------------------------------------------------------------

local state mode_values existing_sessions ret=1

mode_values=(
  "none:disable redrawing"
  "ctrl_l:use ctrl + l to redraw"
  "winch:use sigwinch to redraw"
)

existing_sessions=($(_call_program session atach))

_arguments -C -s -S \
  '(--list -l)'{--list,-l}'[list sessions]' \
  '(--sockets -L)'{--sockets,-L}'[list sockets]' \
  '(--session -s)'{--session=,-s+}'[set the session name]:session' \
  '(--char -c)'{--char=,-c+}'[set the detach character (default: ^\\)]:char' \
  '(--redraw -r)'{--redraw=,-r+}'[set the redraw method (none, ctrl_l, or winch)]:mode:->mode' \
  '(--detached -d)'{--detached,-d}'[start the session detached]' \
  '(--no-detach -D)'{--no-detach,-D}'[disable detaching]' \
  '(--no-suspend -Z)'{--no-suspend,-Z}'[disable suspending]' \
  '(--version -v)'{--version,-v}'[display version and copyright]' \
  '(--help -h)'{--help,-h}'[display help]' \
  '(-)::args:->session-or-command' && ret=0

case "$state" in
  (mode)
    _describe -t mode 'redraw mode' mode_values && ret=0
  ;;
  (session-or-command)
    _describe -t 'session' 'sessions' existing_sessions && ret=0
    _path_commands && ret=0
  ;;
esac

return $ret

