@@ -2658,7 +2658,7 @@ _comp_command_offset()
26582658 # If still nothing, just load it for the basename
26592659 if [[ ! $cspec ]]; then
26602660 compcmd=${cmd##*/ }
2661- _completion_loader " $compcmd "
2661+ _comp_load -D -- " $compcmd "
26622662 cspec=$( complete -p " $compcmd " 2> /dev/null)
26632663 fi
26642664
@@ -2947,7 +2947,7 @@ _comp__init_install_xspec '!@(*.@(ks|jks|jceks|p12|pfx|bks|ubr|gkr|cer|crt|cert|
29472947_comp__init_install_xspec '!*.@(mp[234c]|og[ag]|@(fl|a)ac|m4[abp]|spx|tta|w?(a)v|wma|aif?(f)|asf|ape)' kid3 kid3-qt
29482948unset -f _comp__init_install_xspec
29492949
2950- # Minimal completion to use as fallback in _completion_loader .
2950+ # Minimal completion to use as fallback in _comp_complete_load .
29512951# TODO:API: rename per conventions
29522952_minimal()
29532953{
@@ -2962,6 +2962,19 @@ complete -F _minimal ''
29622962# @since 2.12
29632963_comp_load()
29642964{
2965+ local flag_fallback_default=" " IFS=$' \t\n'
2966+ local OPTIND=1 OPTARG=" " OPTERR=0 opt
2967+ while getopts ':D' opt " $@ " ; do
2968+ case $opt in
2969+ D) flag_fallback_default=set ;;
2970+ *)
2971+ echo " bash_completion: $FUNCNAME : usage error" >&2
2972+ return 2
2973+ ;;
2974+ esac
2975+ done
2976+ shift " $(( OPTIND - 1 )) "
2977+
29652978 local cmd=$1 cmdname=${1##*/ } dir compfile
29662979 local -a paths
29672980 [[ $cmdname ]] || return 1
@@ -3071,22 +3084,25 @@ _comp_load()
30713084 [[ -v _comp_xspecs[$cmdname ] || -v _xspecs[$cmdname ] ]] &&
30723085 complete -F _filedir_xspec " $cmdname " " $backslash$cmdname " && return 0
30733086
3087+ if [[ $flag_fallback_default ]]; then
3088+ complete -F _minimal -- " $origcmd " && return 0
3089+ fi
3090+
30743091 return 1
30753092}
30763093
30773094# set up dynamic completion loading
3078- # TODO:API: rename per conventions
3079- _completion_loader ()
3095+ # @since 2.12
3096+ _comp_complete_load ()
30803097{
30813098 # $1 =_EmptycmD_ already for empty cmds in bash 4.3, set to it for earlier
30823099 local cmd=${1:- _EmptycmD_}
30833100
3084- _comp_load " $cmd " && return 124
3085-
3086- # Need to define *something*, otherwise there will be no completion at all.
3087- complete -F _minimal -- " $cmd " && return 124
3101+ # Pass -D to define *something*, or otherwise there will be no completion
3102+ # at all.
3103+ _comp_load -D -- " $cmd " && return 124
30883104} &&
3089- complete -D -F _completion_loader
3105+ complete -D -F _comp_complete_load
30903106
30913107# Function for loading and calling functions from dynamically loaded
30923108# completion files that may not have been sourced yet.
0 commit comments