iterative / shtab

↔️ Automagic shell tab completion for Python CLI applications
https://docs.iterative.ai/shtab
Other
375 stars 34 forks source link

error when no positional args #29

Closed casperdcl closed 3 years ago

casperdcl commented 3 years ago

On zsh when there are no (only --optional) args, shtab doesn't work https://github.com/tldr-pages/tldr-python-client/pull/135#issuecomment-753408950

% tldr <TAB>
_arguments:comparguments:312: doubled rest argument definition: *::args:->args
bl-ue commented 3 years ago

Any progress? I'd like to merge https://github.com/tldr-pages/tldr-python-client/pull/135.

casperdcl commented 3 years ago

Ah sorry, will take a look in a couple of weeks (ping me again if I'm not responsive)

bl-ue commented 3 years ago

No problem (thanks for the lightnening fast response! ⚡⚡)

bl-ue commented 3 years ago

gentle ping, @casperdcl. Any time so far? No problem if not 🙂

casperdcl commented 3 years ago

@bl-ue think it's fixed now :)

yozachar commented 1 year ago

Hi, this is the completion scripts that gets executed every time zsh is launched.

#'tldr --print-completion zsh'
#compdef tldr

# AUTOMATICALLY GENERATED by `shtab`

_shtab_tldr_commands() {
  local _commands=(

  )
  _describe 'tldr commands' _commands
}

_shtab_tldr_options=(
  "(- : *)"{-h,--help}"[show this help message and exit]"
  "(- : *)"{-v,--version}"[show program\'s version number and exit]"
  "--search[Search for a specific command from a query]:search:"
  {-u,--update_cache}"[Update the local cache of pages and exit]"
  {-p,--platform}"[Override the operating system \[linux, osx, sunos, windows, common\]]:platform:(linux osx sunos windows common)"
  {-l,--list}"[List all available commands for operating system]"
  {-s,--source}"[Override the default page source]:source:"
  {-c,--color}"[Override color stripping]"
  {-r,--render}"[Render local markdown files]"
  {-L,--language}"[Override the default language]:language:"
  {-m,--markdown}"[Just print the plain page file.]"
  "(- : *)--print-completion[print shell completion script]:print_completion:(bash zsh tcsh)"
  "(*)::command to lookup:shtab_tldr_cmd_list"
)

_shtab_tldr() {
  local context state line curcontext="$curcontext" one_or_more='(-)*' remainder='(*)'

  if ((${_shtab_tldr_options[(I)${(q)one_or_more}*]} + ${_shtab_tldr_options[(I)${(q)remainder}*]} == 0)); then  # noqa: E501
    _shtab_tldr_options+=(': :_shtab_tldr_commands' '*::: :->tldr')
  fi
  _arguments -C -s $_shtab_tldr_options

  case $state in
    tldr)
      words=($line[1] "${words[@]}")
      (( CURRENT += 1 ))
      curcontext="${curcontext%:*:*}:_shtab_tldr-$line[1]:"
      case $line[1] in

      esac
  esac
}

# Custom Preamble
shtab_tldr_cmd_list(){
          _describe 'command' "($("/usr/bin/python" -m tldr --list | sed 's/[^[:alnum:]_]/ /g'))"
        }

# End Custom Preamble

typeset -A opt_args
_shtab_tldr "$@"

But I see this error in the console:

_shtab_tldr:6: command not found: _arguments
casperdcl commented 1 year ago

Looks like a problem with your zsh install, vis. https://zsh-users.zsh.narkive.com/u1d54kbu/command-not-found-arguments