Skip to content

Commit

Permalink
feat(bash_completion.d): load from one relative to the main script
Browse files Browse the repository at this point in the history
Primarily for run-in-place-from-git-clone setups.
  • Loading branch information
scop committed Feb 22, 2023
1 parent 9a387d1 commit cdd8a15
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 8 deletions.
25 changes: 21 additions & 4 deletions bash_completion
Original file line number Diff line number Diff line change
Expand Up @@ -2610,14 +2610,31 @@ _comp_xfunc()
}
# source compat completion directory definitions
_comp__init_compat_dir=${BASH_COMPLETION_COMPAT_DIR:-/etc/bash_completion.d}
if [[ -d $_comp__init_compat_dir && -r $_comp__init_compat_dir && -x $_comp__init_compat_dir ]]; then
_comp__init_compat_dirs=()
if [[ -n $BASH_COMPLETION_COMPAT_DIR ]]; then
_comp__init_compat_dirs+=("$BASH_COMPLETION_COMPAT_DIR")
else
_comp__init_compat_dirs+=(/etc/bash_completion.d)
# Similarly as for the "completions" dir, look up from relative to
# bash_completion, primarily for run-in-place-from-git-clone setups.
# Notably we do it after the system location here, in order to
# prefer in-tree variables and functions.
if [[ $BASH_SOURCE == */* ]]; then
_comp__init_compat_dir="${BASH_SOURCE%/*}/bash_completion.d"
[[ ${_comp__init_compat_dirs[0]} == "$_comp__init_compat_dir" ]] ||
_comp__init_compat_dirs+=("$_comp__init_compat_dir")
else
_comp__init_compat_dirs+=(./bash_completion.d)
fi
fi
for _comp__init_compat_dir in "${_comp__init_compat_dirs[@]}"; do
[[ -d $_comp__init_compat_dir && -r $_comp__init_compat_dir && -x $_comp__init_compat_dir ]] || continue
for _comp__init_file in "$_comp__init_compat_dir"/*; do
[[ ${_comp__init_file##*/} != @($_comp_backup_glob|Makefile*|${BASH_COMPLETION_COMPAT_IGNORE-}) &&
-f $_comp__init_file && -r $_comp__init_file ]] && . "$_comp__init_file"
done
fi
unset -v _comp__init_compat_dir _comp__init_file
done
unset -v _comp__init_compat_dirs _comp__init_compat_dir _comp__init_file
# source user completion file
#
Expand Down
9 changes: 5 additions & 4 deletions doc/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,11 @@ used instead of it.

### `BASH_COMPLETION_COMPAT_DIR`

Directory for pre-dynamic loading era (pre-2.0) backwards compatibility
completion files that are loaded eagerly from `bash_completion` when it is
loaded. If unset or null, the default compatibility directory to use is
`/etc/bash_completion.d`.
Directory for pre-dynamic loading era (pre-2.0) and other backwards
compatibility completion files that are loaded eagerly from `bash_completion`
when it is loaded. If unset or null, the default compatibility directories to
use are `/etc/bash_completion.d`, and `bash_completion.d` relative to
`bash_completion` location.

### `BASH_COMPLETION_FILEDIR_FALLBACK`

Expand Down

0 comments on commit cdd8a15

Please # to comment.