@ -8,6 +8,11 @@
# - $FZF_COMPLETION_TRIGGER (default: '**')
# - $FZF_COMPLETION_OPTS (default: empty)
_fzf_orig_completion_filter( ) {
sed 's/.*-F *\([^ ]*\).* \([^ ]*\)$/export _fzf_orig_completion_\2=\1;/' |
sed 's/[^a-z0-9_= ;]/_/g'
}
_fzf_opts_completion( ) {
local cur prev opts
COMPREPLY = ( )
@ -89,7 +94,7 @@ _fzf_path_completion() {
}
_fzf_list_completion( ) {
local cur selected trigger cmd src
local cur selected trigger cmd src ret
read -r src
cmd = $( echo ${ COMP_WORDS [0] } | sed 's/[^a-z0-9_=]/_/g' )
trigger = ${ FZF_COMPLETION_TRIGGER :- ** }
@ -109,7 +114,15 @@ _fzf_list_completion() {
else
shift
orig = $( eval " echo \$_fzf_orig_completion_ $cmd " )
[ -n " $orig " ] && type " $orig " > /dev/null && $orig " $@ "
if [ -n " $orig " ] && type " $orig " > /dev/null; then
$orig " $@ "
elif [ -n " $_fzf_completion_loader " ] ; then
_completion_loader " $@ "
ret = $?
eval $( complete | grep " \-F.* $cmd $" | _fzf_orig_completion_filter)
source $BASH_SOURCE
return $ret
fi
fi
}
@ -153,7 +166,7 @@ EOF
_fzf_ssh_completion( ) {
_fzf_list_completion '+m' " $@ " << "EOF"
cat <( cat ~/.ssh/config /etc/ssh/ssh_config 2> /dev/null | grep -i ^host) <( grep -v '^\s*\(#\|$\)' /etc/hosts) | awk '{print $2}' | sort -u
cat <( cat ~/.ssh/config /etc/ssh/ssh_config 2> /dev/null | grep -i ^host | grep -v '*' ) <( grep -v '^\s*\(#\|$\)' /etc/hosts) | awk '{print $2}' | sort -u
EOF
}
@ -186,13 +199,15 @@ a_cmds="
x_cmds = "kill ssh telnet unset unalias export"
# Preserve existing completion
if [ " $_fzf_completion_loaded " != '0.8.6 ' ] ; then
if [ " $_fzf_completion_loaded " != '0.8.6 -1 ' ] ; then
# Really wish I could use associative array but OSX comes with bash 3.2 :(
eval $( complete | grep '\-F' | grep -v _fzf_ |
grep -E -w " $( echo $d_cmds $f_cmds $a_cmds $x_cmds | sed 's/ /|/g' | sed 's/+/\\+/g' ) " |
sed 's/.*-F *\([^ ]*\).* \([^ ]*\)$/export _fzf_orig_completion_\2=\1;/' |
sed 's/[^a-z0-9_= ;]/_/g' )
export _fzf_completion_loaded = 0.8.6.1
grep -E " ( $( echo $d_cmds $f_cmds $a_cmds $x_cmds | sed 's/ /|/g' | sed 's/+/\\+/g' ) ) $" | _fzf_orig_completion_filter)
export _fzf_completion_loaded = 0.8.6-1
fi
if type _completion_loader > /dev/null; then
_fzf_completion_loader = 1
fi
# Directory