Skip to content

Commit d9082d2

Browse files
committed
refactor: rename _completion_loader => _comp_complete_load
1 parent 4f95ab6 commit d9082d2

File tree

2 files changed

+35
-9
lines changed

2 files changed

+35
-9
lines changed

bash_completion

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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
29482948
unset -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.

bash_completion.d/000_bash_completion_compat.bash

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,4 +447,14 @@ _count_args()
447447
done
448448
}
449449

450+
# @deprecated 2.12 Use `_comp_load -D -- CommandName` to load the completion,
451+
# or use `_comp_complete_load` as a completion function specified to `complete
452+
# -F`.
453+
_completion_loader()
454+
{
455+
# We call `_comp_complete_load` instead of `_comp_load -D` in case that
456+
# `_completion_loader` is used without an argument or `_completion_loader`
457+
# is specified to `complete -F` by a user.
458+
_comp_complete_load "$@"
459+
}
450460
# ex: filetype=sh

0 commit comments

Comments
 (0)