2020-05-10 21:32:21 +03:00
|
|
|
function _complete_nix {
|
2020-05-11 22:37:53 +03:00
|
|
|
local -a words
|
|
|
|
local cword cur
|
|
|
|
_get_comp_words_by_ref -n ':=&' words cword cur
|
2020-05-10 22:35:07 +03:00
|
|
|
local have_type
|
2020-05-10 21:32:21 +03:00
|
|
|
while IFS= read -r line; do
|
2020-10-09 10:39:51 +03:00
|
|
|
local completion=${line%% *}
|
2020-05-10 22:35:07 +03:00
|
|
|
if [[ -z $have_type ]]; then
|
|
|
|
have_type=1
|
2021-12-22 13:37:59 +02:00
|
|
|
if [[ $completion == filenames ]]; then
|
2020-05-10 22:35:07 +03:00
|
|
|
compopt -o filenames
|
2021-12-22 13:37:59 +02:00
|
|
|
elif [[ $completion == attrs ]]; then
|
|
|
|
compopt -o nospace
|
2020-05-10 22:35:07 +03:00
|
|
|
fi
|
2024-08-02 00:37:45 +03:00
|
|
|
continue
|
2020-05-10 22:35:07 +03:00
|
|
|
fi
|
2024-08-02 00:37:45 +03:00
|
|
|
|
|
|
|
if [[ "${cur}" =~ "=" ]]; then
|
|
|
|
# drop everything up to the first =. if a = is included, bash assumes this to be
|
|
|
|
# an arg=value argument and the completion gets mangled (see #11208)
|
|
|
|
completion="${completion#*=}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
COMPREPLY+=("${completion}")
|
2022-02-19 15:26:34 +02:00
|
|
|
done < <(NIX_GET_COMPLETIONS=$cword "${words[@]}" 2>/dev/null)
|
2020-05-11 22:37:53 +03:00
|
|
|
__ltrim_colon_completions "$cur"
|
2020-05-10 21:32:21 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
complete -F _complete_nix nix
|