#compdef w3m

local curcontext="$curcontext" state line expl ret=1
typeset -A opt_args

_arguments -C \
  '-t[tabwidth]:tabwidth:' \
  '-r[ignore backspace effect]' \
  '-l[preserved lines]:number of lines:' \
  '-B[load bookmark]' \
  '-bookmark:bookmark file:_files' \
  '-T[content-type]:content type' \
  '-m[internet message mode]' \
  '-v[visual startup mode]' \
  '-M[monochrome display]' \
  '-F[automatically render frame]' \
  '(-dump_source -dump_head)-dump' \
  '-cols:column width' \
  '(-dump -dump_head)-dump_source' \
  '(-dump -dump_source)-dump_head' \
  '-num[show line number]' \
  '-no-proxy' \
  '-no-mouse' \
  '(-no-cookie)-cookie' \
  '(-cookie)-no-cookie' \
  '-no-graph' \
  '-S[squeeze multiple blank lines]' \
  '-W[toggle wrap search mode]' \
  '-X[do not use termcap init/deinit]' \
  '-o[option]:option-value' \
  '-config:config file:_files' \
  '-debug' \
  ':URL:->html' \
  '+:goto line' && ret=0

if [[ -n $state ]]; then
  local w3mhistory

  _tags files w3mhistory urls
  while _tags; do
    _requested files expl 'file' _files -g "*.x#html(-.)" && ret=0
    _requested urls expl 'URL' _urls && ret=0
    if [[ -s ~/.w3m/history ]] && _requested w3mhistory; then
      w3mhistory=( ${(f)"$(<~/.w3m/history)"} )
      _all_labels w3mhistory expl 'URL from history' compadd -a w3mhistory
    fi
    (( ret )) || break
  done
fi

return ret
