mirror of
https://github.com/junegunn/fzf.git
synced 2025-12-06 12:54:26 +08:00
[zsh-completion] Allow custom completion function
While in bash you can externally register custom completion functions using `complete` command, it was not possible to do so in zsh without changing completion.zsh as the name of the supported commands are hard-coded within the code (See #362). With this commit, fzf-completion of zsh will first look if `_fzf_COMMAND_completion` exists and calls the function, so one can externally define completion functions for specific commands. This commit also tries to make the interface of (yet undocumented) _fzf_list_completion helper function consistent across bash and zsh. So the following code works both on bash and zsh. _fzf_pass_completion() { local pwdir=${PASSWORD_STORE_DIR-~/.password-store/} local stringsize="${#pwdir}" let "stringsize+=1" _fzf_list_completion '+m' "$@" << "EOF" find "$pwdir" -name "*.gpg" -print | cut -c "$stringsize"- | sed -e 's/\(.*\)\.gpg/\1/' EOF } # Only on bash complete -F _fzf_pass_completion -o default -o bashdefault pass Note that the suggested convention and the interface are not yet final and subject to change. /cc @d4ndo
This commit is contained in:
@@ -195,7 +195,7 @@ _fzf_kill_completion() {
|
||||
|
||||
_fzf_telnet_completion() {
|
||||
_fzf_list_completion '+m' "$@" << "EOF"
|
||||
\grep -v '^\s*\(#\|$\)' /etc/hosts | \grep -Fv '0.0.0.0' | awk '{if (length($2) > 0) {print $2}}' | sort -u
|
||||
\grep -v '^\s*\(#\|$\)' /etc/hosts | \grep -Fv '0.0.0.0' | awk '{if (length($2) > 0) {print $2}}' | sort -u
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -207,13 +207,13 @@ EOF
|
||||
|
||||
_fzf_env_var_completion() {
|
||||
_fzf_list_completion '-m' "$@" << "EOF"
|
||||
declare -xp | sed 's/=.*//' | sed 's/.* //'
|
||||
declare -xp | sed 's/=.*//' | sed 's/.* //'
|
||||
EOF
|
||||
}
|
||||
|
||||
_fzf_alias_completion() {
|
||||
_fzf_list_completion '-m' "$@" << "EOF"
|
||||
alias | sed 's/=.*//' | sed 's/.* //'
|
||||
alias | sed 's/=.*//' | sed 's/.* //'
|
||||
EOF
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user