Skip to content

Commit 84921b8

Browse files
authored
Merge pull request #1032 from akinomyoga/refactor-api-1
refactor: API/naming of functions and a variable in `bash_completion`
2 parents b7ca4f3 + d9082d2 commit 84921b8

File tree

19 files changed

+128
-99
lines changed

19 files changed

+128
-99
lines changed

bash_completion

Lines changed: 93 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -2071,7 +2071,7 @@ _comp_compgen_allowed_groups()
20712071
}
20722072

20732073
# @since 2.12
2074-
_comp_selinux_users()
2074+
_comp_compgen_selinux_users()
20752075
{
20762076
_comp_compgen_split -- "$(semanage user -nl 2>/dev/null |
20772077
awk '{ print $1 }')"
@@ -2308,8 +2308,7 @@ _known_hosts()
23082308
# Helper function to locate ssh included files in configs
23092309
# This function looks for the "Include" keyword in ssh config files and
23102310
# includes them recursively, adding each result to the config variable.
2311-
# TODO:API: rename per conventions
2312-
_included_ssh_config_files()
2311+
_comp__included_ssh_config_files()
23132312
{
23142313
(($# < 1)) &&
23152314
echo "bash_completion: $FUNCNAME: missing mandatory argument CONFIG" >&2
@@ -2358,7 +2357,7 @@ _included_ssh_config_files()
23582357
fi
23592358
done
23602359
done
2361-
} # _included_ssh_config_files()
2360+
} # _comp__included_ssh_config_files()
23622361

23632362
# Helper function for completing _known_hosts.
23642363
# This function performs host completion based on ssh's config and known_hosts
@@ -2435,7 +2434,7 @@ _known_hosts_real()
24352434
# "Include" keyword in ssh config files
24362435
if ((${#config[@]} > 0)); then
24372436
for i in "${config[@]}"; do
2438-
_included_ssh_config_files "$i"
2437+
_comp__included_ssh_config_files "$i"
24392438
done
24402439
fi
24412440

@@ -2659,7 +2658,7 @@ _comp_command_offset()
26592658
# If still nothing, just load it for the basename
26602659
if [[ ! $cspec ]]; then
26612660
compcmd=${cmd##*/}
2662-
_completion_loader "$compcmd"
2661+
_comp_load -D -- "$compcmd"
26632662
cspec=$(complete -p "$compcmd" 2>/dev/null)
26642663
fi
26652664

@@ -2838,7 +2837,8 @@ complete -F _comp_longopt \
28382837
sed seq shar sort split strip sum tac tail tee \
28392838
texindex touch tr uname unexpand uniq units vdir wc who
28402839
2841-
declare -Ag _xspecs
2840+
# @since 2.12
2841+
declare -Ag _comp_xspecs
28422842
28432843
# TODO:API: rename per conventions
28442844
_filedir_xspec()
@@ -2852,7 +2852,7 @@ _filedir_xspec()
28522852
_comp_quote_compgen "$cur"
28532853
local quoted=$ret
28542854
2855-
local xspec=${_xspecs[${1##*/}]}
2855+
local xspec=${_comp_xspecs[${1##*/}]-${_xspecs[${1##*/}]-}}
28562856
local -a toks
28572857
_comp_compgen -v toks -c "$quoted" -- -d
28582858
@@ -2880,75 +2880,74 @@ _filedir_xspec()
28802880
fi
28812881
}
28822882
2883-
# TODO:API: rename per conventions
2884-
_install_xspec()
2883+
_comp__init_install_xspec()
28852884
{
28862885
local xspec=$1 cmd
28872886
shift
28882887
for cmd in "$@"; do
2889-
_xspecs[$cmd]=$xspec
2888+
_comp_xspecs[$cmd]=$xspec
28902889
done
28912890
}
28922891
# bzcmp, bzdiff, bz*grep, bzless, bzmore intentionally not here, see Debian: #455510
2893-
_install_xspec '!*.?(t)bz?(2)' bunzip2 bzcat pbunzip2 pbzcat lbunzip2 lbzcat
2894-
_install_xspec '!*.@(zip|[aegjkswx]ar|exe|pk3|wsz|zargo|xpi|s[tx][cdiw]|sx[gm]|o[dt][tspgfc]|od[bm]|oxt|?(o)xps|epub|cbz|apk|aab|ipa|do[ct][xm]|p[op]t[mx]|xl[st][xm]|pyz|whl|[Ff][Cc][Ss]td)' unzip zipinfo
2895-
_install_xspec '*.Z' compress znew
2892+
_comp__init_install_xspec '!*.?(t)bz?(2)' bunzip2 bzcat pbunzip2 pbzcat lbunzip2 lbzcat
2893+
_comp__init_install_xspec '!*.@(zip|[aegjkswx]ar|exe|pk3|wsz|zargo|xpi|s[tx][cdiw]|sx[gm]|o[dt][tspgfc]|od[bm]|oxt|?(o)xps|epub|cbz|apk|aab|ipa|do[ct][xm]|p[op]t[mx]|xl[st][xm]|pyz|whl|[Ff][Cc][Ss]td)' unzip zipinfo
2894+
_comp__init_install_xspec '*.Z' compress znew
28962895
# zcmp, zdiff, z*grep, zless, zmore intentionally not here, see Debian: #455510
2897-
_install_xspec '!*.@(Z|[gGd]z|t[ag]z)' gunzip zcat
2898-
_install_xspec '!*.@(Z|[gGdz]z|t[ag]z)' unpigz
2899-
_install_xspec '!*.Z' uncompress
2896+
_comp__init_install_xspec '!*.@(Z|[gGd]z|t[ag]z)' gunzip zcat
2897+
_comp__init_install_xspec '!*.@(Z|[gGdz]z|t[ag]z)' unpigz
2898+
_comp__init_install_xspec '!*.Z' uncompress
29002899
# lzcmp, lzdiff intentionally not here, see Debian: #455510
2901-
_install_xspec '!*.@(tlz|lzma)' lzcat lzegrep lzfgrep lzgrep lzless lzmore unlzma
2902-
_install_xspec '!*.@(?(t)xz|tlz|lzma)' unxz xzcat
2903-
_install_xspec '!*.lrz' lrunzip
2904-
_install_xspec '!*.@(gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx)' ee
2905-
_install_xspec '!*.@(gif|jp?(e)g|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|svg)' qiv
2906-
_install_xspec '!*.@(gif|jp?(e)g?(2)|j2[ck]|jp[2f]|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|?(e)ps)' xv
2907-
_install_xspec '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))' gv ggv kghostview
2908-
_install_xspec '!*.@(dvi|DVI)?(.@(gz|Z|bz2))' xdvi kdvi
2909-
_install_xspec '!*.dvi' dvips dviselect dvitype dvipdf advi dvipdfm dvipdfmx
2910-
_install_xspec '!*.[pf]df' acroread gpdf xpdf
2911-
_install_xspec '!*.@(?(e)ps|pdf)' kpdf
2912-
_install_xspec '!*.@(okular|@(?(e|x)ps|?(E|X)PS|[pf]df|[PF]DF|dvi|DVI|cb[rz]|CB[RZ]|djv?(u)|DJV?(U)|dvi|DVI|gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx|GIF|JP?(E)G|MIFF|TIF?(F)|PN[GM]|P[BGP]M|BMP|XPM|ICO|XWD|TGA|PCX|epub|EPUB|odt|ODT|fb?(2)|FB?(2)|mobi|MOBI|g3|G3|chm|CHM|md|markdown)?(.?(gz|GZ|bz2|BZ2|xz|XZ)))' okular
2913-
_install_xspec '!*.pdf' epdfview pdfunite
2914-
_install_xspec '!*.@(cb[rz7t]|djv?(u)|?(e)ps|pdf)' zathura
2915-
_install_xspec '!*.@(?(e)ps|pdf)' ps2pdf ps2pdf12 ps2pdf13 ps2pdf14 ps2pdfwr
2916-
_install_xspec '!*.texi*' makeinfo texi2html
2917-
_install_xspec '!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)' tex latex slitex jadetex pdfjadetex pdftex pdflatex texi2dvi xetex xelatex luatex lualatex
2918-
_install_xspec '!*.mp3' mpg123 mpg321 madplay
2919-
_install_xspec '!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmv]|OG[AGMV]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))' xine aaxine cacaxine fbxine
2920-
_install_xspec '!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmv]|OG[AGMV]|opus|OPUS|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM|iso|ISO)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))' kaffeine dragon totem
2921-
_install_xspec '!*.@(avi|asf|wmv)' aviplay
2922-
_install_xspec '!*.@(rm?(j)|ra?(m)|smi?(l))' realplay
2923-
_install_xspec '!*.@(mpg|mpeg|avi|mov|qt)' xanim
2924-
_install_xspec '!*.@(og[ag]|m3u|flac|spx)' ogg123
2925-
_install_xspec '!*.@(mp3|ogg|pls|m3u)' gqmpeg freeamp
2926-
_install_xspec '!*.fig' xfig
2927-
_install_xspec '!*.@(mid?(i)|cmf)' playmidi
2928-
_install_xspec '!*.@(mid?(i)|rmi|rcp|[gr]36|g18|mod|xm|it|x3m|s[3t]m|kar)' timidity
2929-
_install_xspec '!*.@(669|abc|am[fs]|d[bs]m|dmf|far|it|mdl|m[eo]d|mid?(i)|mt[2m]|oct|okt?(a)|p[st]m|s[3t]m|ult|umx|wav|xm)' modplugplay modplug123
2930-
_install_xspec '*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)' vi vim gvim rvim view rview rgvim rgview gview emacs xemacs sxemacs kate kwrite
2931-
_install_xspec '!*.@(zip|z|gz|tgz)' bzme
2900+
_comp__init_install_xspec '!*.@(tlz|lzma)' lzcat lzegrep lzfgrep lzgrep lzless lzmore unlzma
2901+
_comp__init_install_xspec '!*.@(?(t)xz|tlz|lzma)' unxz xzcat
2902+
_comp__init_install_xspec '!*.lrz' lrunzip
2903+
_comp__init_install_xspec '!*.@(gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx)' ee
2904+
_comp__init_install_xspec '!*.@(gif|jp?(e)g|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|svg)' qiv
2905+
_comp__init_install_xspec '!*.@(gif|jp?(e)g?(2)|j2[ck]|jp[2f]|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|?(e)ps)' xv
2906+
_comp__init_install_xspec '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))' gv ggv kghostview
2907+
_comp__init_install_xspec '!*.@(dvi|DVI)?(.@(gz|Z|bz2))' xdvi kdvi
2908+
_comp__init_install_xspec '!*.dvi' dvips dviselect dvitype dvipdf advi dvipdfm dvipdfmx
2909+
_comp__init_install_xspec '!*.[pf]df' acroread gpdf xpdf
2910+
_comp__init_install_xspec '!*.@(?(e)ps|pdf)' kpdf
2911+
_comp__init_install_xspec '!*.@(okular|@(?(e|x)ps|?(E|X)PS|[pf]df|[PF]DF|dvi|DVI|cb[rz]|CB[RZ]|djv?(u)|DJV?(U)|dvi|DVI|gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx|GIF|JP?(E)G|MIFF|TIF?(F)|PN[GM]|P[BGP]M|BMP|XPM|ICO|XWD|TGA|PCX|epub|EPUB|odt|ODT|fb?(2)|FB?(2)|mobi|MOBI|g3|G3|chm|CHM|md|markdown)?(.?(gz|GZ|bz2|BZ2|xz|XZ)))' okular
2912+
_comp__init_install_xspec '!*.pdf' epdfview pdfunite
2913+
_comp__init_install_xspec '!*.@(cb[rz7t]|djv?(u)|?(e)ps|pdf)' zathura
2914+
_comp__init_install_xspec '!*.@(?(e)ps|pdf)' ps2pdf ps2pdf12 ps2pdf13 ps2pdf14 ps2pdfwr
2915+
_comp__init_install_xspec '!*.texi*' makeinfo texi2html
2916+
_comp__init_install_xspec '!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)' tex latex slitex jadetex pdfjadetex pdftex pdflatex texi2dvi xetex xelatex luatex lualatex
2917+
_comp__init_install_xspec '!*.mp3' mpg123 mpg321 madplay
2918+
_comp__init_install_xspec '!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmv]|OG[AGMV]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))' xine aaxine cacaxine fbxine
2919+
_comp__init_install_xspec '!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmv]|OG[AGMV]|opus|OPUS|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM|iso|ISO)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))' kaffeine dragon totem
2920+
_comp__init_install_xspec '!*.@(avi|asf|wmv)' aviplay
2921+
_comp__init_install_xspec '!*.@(rm?(j)|ra?(m)|smi?(l))' realplay
2922+
_comp__init_install_xspec '!*.@(mpg|mpeg|avi|mov|qt)' xanim
2923+
_comp__init_install_xspec '!*.@(og[ag]|m3u|flac|spx)' ogg123
2924+
_comp__init_install_xspec '!*.@(mp3|ogg|pls|m3u)' gqmpeg freeamp
2925+
_comp__init_install_xspec '!*.fig' xfig
2926+
_comp__init_install_xspec '!*.@(mid?(i)|cmf)' playmidi
2927+
_comp__init_install_xspec '!*.@(mid?(i)|rmi|rcp|[gr]36|g18|mod|xm|it|x3m|s[3t]m|kar)' timidity
2928+
_comp__init_install_xspec '!*.@(669|abc|am[fs]|d[bs]m|dmf|far|it|mdl|m[eo]d|mid?(i)|mt[2m]|oct|okt?(a)|p[st]m|s[3t]m|ult|umx|wav|xm)' modplugplay modplug123
2929+
_comp__init_install_xspec '*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)' vi vim gvim rvim view rview rgvim rgview gview emacs xemacs sxemacs kate kwrite
2930+
_comp__init_install_xspec '!*.@(zip|z|gz|tgz)' bzme
29322931
# konqueror not here on purpose, it's more than a web/html browser
2933-
_install_xspec '!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))' netscape mozilla lynx galeon dillo elinks amaya epiphany
2934-
_install_xspec '!*.@(sxw|stw|sxg|sgl|doc?([mx])|dot?([mx])|rtf|txt|htm|html|?(f)odt|ott|odm|pdf)' oowriter lowriter
2935-
_install_xspec '!*.@(sxi|sti|pps?(x)|ppt?([mx])|pot?([mx])|?(f)odp|otp)' ooimpress loimpress
2936-
_install_xspec '!*.@(sxc|stc|xls?([bmx])|xlw|xlt?([mx])|[ct]sv|?(f)ods|ots)' oocalc localc
2937-
_install_xspec '!*.@(sxd|std|sda|sdd|?(f)odg|otg)' oodraw lodraw
2938-
_install_xspec '!*.@(sxm|smf|mml|odf)' oomath lomath
2939-
_install_xspec '!*.odb' oobase lobase
2940-
_install_xspec '!*.[rs]pm' rpm2cpio
2941-
_install_xspec '!*.aux' bibtex
2942-
_install_xspec '!*.po' poedit gtranslator kbabel lokalize
2943-
_install_xspec '!*.@([Pp][Rr][Gg]|[Cc][Ll][Pp])' harbour gharbour hbpp
2944-
_install_xspec '!*.[Hh][Rr][Bb]' hbrun
2945-
_install_xspec '!*.ly' lilypond ly2dvi
2946-
_install_xspec '!*.@(dif?(f)|?(d)patch)?(.@([gx]z|bz2|lzma))' cdiff
2947-
_install_xspec '!@(*.@(ks|jks|jceks|p12|pfx|bks|ubr|gkr|cer|crt|cert|p7b|pkipath|pem|p10|csr|crl)|cacerts)' portecle
2948-
_install_xspec '!*.@(mp[234c]|og[ag]|@(fl|a)ac|m4[abp]|spx|tta|w?(a)v|wma|aif?(f)|asf|ape)' kid3 kid3-qt
2949-
unset -f _install_xspec
2950-
2951-
# Minimal completion to use as fallback in _completion_loader.
2932+
_comp__init_install_xspec '!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))' netscape mozilla lynx galeon dillo elinks amaya epiphany
2933+
_comp__init_install_xspec '!*.@(sxw|stw|sxg|sgl|doc?([mx])|dot?([mx])|rtf|txt|htm|html|?(f)odt|ott|odm|pdf)' oowriter lowriter
2934+
_comp__init_install_xspec '!*.@(sxi|sti|pps?(x)|ppt?([mx])|pot?([mx])|?(f)odp|otp)' ooimpress loimpress
2935+
_comp__init_install_xspec '!*.@(sxc|stc|xls?([bmx])|xlw|xlt?([mx])|[ct]sv|?(f)ods|ots)' oocalc localc
2936+
_comp__init_install_xspec '!*.@(sxd|std|sda|sdd|?(f)odg|otg)' oodraw lodraw
2937+
_comp__init_install_xspec '!*.@(sxm|smf|mml|odf)' oomath lomath
2938+
_comp__init_install_xspec '!*.odb' oobase lobase
2939+
_comp__init_install_xspec '!*.[rs]pm' rpm2cpio
2940+
_comp__init_install_xspec '!*.aux' bibtex
2941+
_comp__init_install_xspec '!*.po' poedit gtranslator kbabel lokalize
2942+
_comp__init_install_xspec '!*.@([Pp][Rr][Gg]|[Cc][Ll][Pp])' harbour gharbour hbpp
2943+
_comp__init_install_xspec '!*.[Hh][Rr][Bb]' hbrun
2944+
_comp__init_install_xspec '!*.ly' lilypond ly2dvi
2945+
_comp__init_install_xspec '!*.@(dif?(f)|?(d)patch)?(.@([gx]z|bz2|lzma))' cdiff
2946+
_comp__init_install_xspec '!@(*.@(ks|jks|jceks|p12|pfx|bks|ubr|gkr|cer|crt|cert|p7b|pkipath|pem|p10|csr|crl)|cacerts)' portecle
2947+
_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
2948+
unset -f _comp__init_install_xspec
2949+
2950+
# Minimal completion to use as fallback in _comp_complete_load.
29522951
# TODO:API: rename per conventions
29532952
_minimal()
29542953
{
@@ -2960,9 +2959,22 @@ _minimal()
29602959
# https://lists.gnu.org/archive/html/bug-bash/2012-01/msg00045.html
29612960
complete -F _minimal ''
29622961
2963-
# TODO:API: rename per conventions
2964-
__load_completion()
2962+
# @since 2.12
2963+
_comp_load()
29652964
{
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+
29662978
local cmd=$1 cmdname=${1##*/} dir compfile
29672979
local -a paths
29682980
[[ $cmdname ]] || return 1
@@ -3069,25 +3081,28 @@ __load_completion()
30693081
done
30703082
30713083
# Look up simple "xspec" completions
3072-
[[ -v _xspecs[$cmdname] ]] &&
3084+
[[ -v _comp_xspecs[$cmdname] || -v _xspecs[$cmdname] ]] &&
30733085
complete -F _filedir_xspec "$cmdname" "$backslash$cmdname" && return 0
30743086
3087+
if [[ $flag_fallback_default ]]; then
3088+
complete -F _minimal -- "$origcmd" && return 0
3089+
fi
3090+
30753091
return 1
30763092
}
30773093
30783094
# set up dynamic completion loading
3079-
# TODO:API: rename per conventions
3080-
_completion_loader()
3095+
# @since 2.12
3096+
_comp_complete_load()
30813097
{
30823098
# $1=_EmptycmD_ already for empty cmds in bash 4.3, set to it for earlier
30833099
local cmd=${1:-_EmptycmD_}
30843100
3085-
__load_completion "$cmd" && return 124
3086-
3087-
# Need to define *something*, otherwise there will be no completion at all.
3088-
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
30893104
} &&
3090-
complete -D -F _completion_loader
3105+
complete -D -F _comp_complete_load
30913106
30923107
# Function for loading and calling functions from dynamically loaded
30933108
# completion files that may not have been sourced yet.
@@ -3102,7 +3117,7 @@ _comp_xfunc()
31023117
local xfunc_name=$2
31033118
[[ $xfunc_name == _* ]] ||
31043119
xfunc_name=_comp_xfunc_${1//[^a-zA-Z0-9_]/_}_$xfunc_name
3105-
declare -F "$xfunc_name" &>/dev/null || __load_completion "$1"
3120+
declare -F "$xfunc_name" &>/dev/null || _comp_load "$1"
31063121
"$xfunc_name" "${@:3}"
31073122
}
31083123

bash_completion.d/000_bash_completion_compat.bash

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ _comp_deprecate_func 2.12 _modules _comp_compgen_kernel_modules
2929
_comp_deprecate_func 2.12 _installed_modules _comp_compgen_inserted_kernel_modules
3030
_comp_deprecate_func 2.12 _usergroup _comp_compgen_usergroup
3131
_comp_deprecate_func 2.12 _complete_as_root _comp_as_root
32+
_comp_deprecate_func 2.12 __load_completion _comp_load
33+
34+
# @deprecated 2.12 Use `_comp_xspecs`
35+
declare -Ag _xspecs
3236

3337
# Backwards compatibility for compat completions that use have().
3438
# @deprecated 1.90 should no longer be used; generally not needed with
@@ -443,4 +447,14 @@ _count_args()
443447
done
444448
}
445449

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+
}
446460
# ex: filetype=sh

completions/_cargo

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#
33
# This serves as a fallback in case the completion is not installed otherwise.
44

5-
# shellcheck disable=SC2168 # "local" is ok, assume sourced by __load_completion
5+
# shellcheck disable=SC2168 # "local" is ok, assume sourced by _comp_load
66
local rustup="${1%cargo}rustup" # use rustup from same dir
77
eval -- "$("$rustup" completions bash cargo 2>/dev/null)"
88

completions/mussh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ _comp_cmd_mussh()
3939
;;
4040
-c)
4141
compopt -o filenames
42-
_comp_compgen -a commands
42+
_comp_compgen_commands
4343
return
4444
;;
4545
esac

completions/useradd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ _comp_cmd_useradd()
3838
return
3939
;;
4040
--selinux-user | -${noargopts}Z)
41-
_comp_selinux_users
41+
_comp_compgen_selinux_users
4242
return
4343
;;
4444
--shell | -${noargopts}s)

completions/usermod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ _comp_cmd_usermod()
3838
return
3939
;;
4040
--selinux-user | -${noargopts}Z)
41-
_comp_selinux_users
41+
_comp_compgen_selinux_users
4242
return
4343
;;
4444
--shell | -${noargopts}s)

0 commit comments

Comments
 (0)