summaryrefslogtreecommitdiff
path: root/shell/completion.bash
diff options
context:
space:
mode:
Diffstat (limited to 'shell/completion.bash')
-rw-r--r--shell/completion.bash10
1 files changed, 7 insertions, 3 deletions
diff --git a/shell/completion.bash b/shell/completion.bash
index 445df178..d2287c84 100644
--- a/shell/completion.bash
+++ b/shell/completion.bash
@@ -113,7 +113,7 @@ _fzf_opts_completion() {
}
_fzf_handle_dynamic_completion() {
- local cmd orig_var orig ret orig_cmd
+ local cmd orig_var orig ret orig_cmd orig_complete
cmd="$1"
shift
orig_cmd="$1"
@@ -122,10 +122,14 @@ _fzf_handle_dynamic_completion() {
if [ -n "$orig" ] && type "$orig" > /dev/null 2>&1; then
$orig "$@"
elif [ -n "$_fzf_completion_loader" ]; then
+ orig_complete=$(complete -p "$cmd")
_completion_loader "$@"
ret=$?
- eval "$(complete | command grep "\-F.* $orig_cmd$" | _fzf_orig_completion_filter)"
- source "${BASH_SOURCE[0]}"
+ # _completion_loader may not have updated completion for the command
+ if [ "$(complete -p "$cmd")" != "$orig_complete" ]; then
+ eval "$(complete | command grep "\-F.* $orig_cmd$" | _fzf_orig_completion_filter)"
+ eval "$orig_complete"
+ fi
return $ret
fi
}