You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.3 KiB
43 lines
1.3 KiB
#!/usr/bin/env bash |
|
###-begin-{{cmd}}-completion-### |
|
# |
|
# {{cmd}} command completion script |
|
# |
|
# Installation: {{cmd}} completion >> ~/.bashrc (or ~/.zshrc) |
|
# Or, maybe: {{cmd}} completion > /usr/local/etc/bash_completion.d/{{cmd}} |
|
# |
|
|
|
COMP_WORDBREAKS=${COMP_WORDBREAKS/=/} |
|
COMP_WORDBREAKS=${COMP_WORDBREAKS/@/} |
|
export COMP_WORDBREAKS |
|
|
|
if complete &>/dev/null; then |
|
_{{cmd}}_completion () { |
|
local si="$IFS" |
|
IFS=$'\n' COMPREPLY=($(COMP_CWORD="$COMP_CWORD" \ |
|
COMP_LINE="$COMP_LINE" \ |
|
COMP_POINT="$COMP_POINT" \ |
|
{{cmd}} completion -- "${COMP_WORDS[@]}" \ |
|
2>/dev/null)) || return $? |
|
IFS="$si" |
|
} |
|
complete -F _{{cmd}}_completion {{cmd}} |
|
elif compctl &>/dev/null; then |
|
_{{cmd}}_completion () { |
|
local cword line point words si |
|
read -Ac words |
|
read -cn cword |
|
let cword-=1 |
|
read -l line |
|
read -ln point |
|
si="$IFS" |
|
IFS=$'\n' reply=($(COMP_CWORD="$cword" \ |
|
COMP_LINE="$line" \ |
|
COMP_POINT="$point" \ |
|
{{cmd}} completion -- "${words[@]}" \ |
|
2>/dev/null)) || return $? |
|
IFS="$si" |
|
} |
|
compctl -K _{{cmd}}_completion {{cmd}} |
|
fi |
|
###-end-{{cmd}}-completion-###
|
|
|