diff options
Diffstat (limited to 'completions/xfreerdp')
-rw-r--r-- | completions/xfreerdp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/completions/xfreerdp b/completions/xfreerdp new file mode 100644 index 0000000..f17414f --- /dev/null +++ b/completions/xfreerdp @@ -0,0 +1,67 @@ +# xfreerdp completion -*- shell-script -*- + +_xfreerdp() +{ + local cur prev words cword + _init_completion -n : || return + + case $prev in # old/dash syntax + -k) + COMPREPLY=($(compgen -W '$("$1" --kbd-list | + awk "/^0x/ { print \$1 }")' -- "$cur")) + return + ;; + -a) + COMPREPLY=($(compgen -W '8 15 16 24 32' -- "$cur")) + return + ;; + -x) + COMPREPLY=($(compgen -W 'broadband modem lan' -- "$cur")) + return + ;; + --plugin) + COMPREPLY=($(compgen -W 'cliprdr rdpsnd rdpdr' -- "$cur")) + return + ;; + esac + + case $cur in # new/slash syntax + /kbd:*) + COMPREPLY=($(compgen -W '$("$1" /kbd-list | + awk "/^0x/ { print \$1 }")' -- "${cur#/kbd:}")) + return + ;; + /bpp:*) + COMPREPLY=($(compgen -W '8 15 16 24 32' -- "${cur#/bpp:}")) + return + ;; + /*:* | /help | /version | -h | --help | --version) + return + ;; + esac + + if [[ $cur == /* ]]; then + COMPREPLY=($(compgen -W '$("$1" --help | + awk "\$1 ~ /^\\// && \$1 !~ /^.(flag\$|option:)/ { sub(\":.*\",\":\",\$1); print \$1 }")' \ + -- "$cur")) + [[ ${COMPREPLY-} == *: ]] && compopt -o nospace + elif [[ $cur == [+-]* ]]; then + local char=${cur:0:1} + local help="$($1 --help)" + if [[ $help == */help* ]]; then # new/slash syntax + COMPREPLY=($(compgen -W '$(awk " + \$1 ~ /^[+-]/ && \$1 !~ /^.toggle\$/ { sub(\"^.\",\"$char\",\$1); print \$1 } + " <<<"$help")' -- "$cur")) + else # old/dash syntax + COMPREPLY=($(_parse_help - <<<"$help")) + COMPREPLY=($(compgen -W '${COMPREPLY[@]%:}' -- "$cur")) + fi + else + COMPREPLY=($(compgen -W "$(awk '{print $1}' ~/.freerdp/known_hosts \ + 2>/dev/null)" -- "$cur")) + fi + +} && + complete -F _xfreerdp xfreerdp + +# ex: filetype=sh |