From ef4a4ff3c558afff0917633876f11b586899934d Mon Sep 17 00:00:00 2001 From: Luca Saccarola <96259932+saccarosium@users.noreply.github.com> Date: Wed, 24 Jul 2024 18:25:25 +0200 Subject: [PATCH] Make bash completion behave normally (#11246) --- contrib/completion/hx.bash | 42 +++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/contrib/completion/hx.bash b/contrib/completion/hx.bash index 62ca029b..1b102017 100644 --- a/contrib/completion/hx.bash +++ b/contrib/completion/hx.bash @@ -2,23 +2,31 @@ # Bash completion script for Helix editor _hx() { - # $1 command name - # $2 word being completed - # $3 word preceding + local cur prev languages + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD - 1]}" - case "$3" in - -g | --grammar) - COMPREPLY="$(compgen -W 'fetch build' -- $2)" - ;; - --health) - local languages=$(hx --health |tail -n '+7' |awk '{print $1}' |sed 's/\x1b\[[0-9;]*m//g') - COMPREPLY="$(compgen -W """$languages""" -- $2)" - ;; - *) - COMPREPLY="$(compgen -fd -W "-h --help --tutor -V --version -v -vv -vvv --health -g --grammar --vsplit --hsplit -c --config --log" -- """$2""")" - ;; - esac + case "$prev" in + -g | --grammar) + COMPREPLY=($(compgen -W 'fetch build' -- "$cur")) + return 0 + ;; + --health) + languages=$(hx --health | tail -n '+7' | awk '{print $1}' | sed 's/\x1b\[[0-9;]*m//g') + COMPREPLY=($(compgen -W """$languages""" -- "$cur")) + return 0 + ;; + esac - local IFS=$'\n' - COMPREPLY=($COMPREPLY) + case "$2" in + -*) + COMPREPLY=($(compgen -W "-h --help --tutor -V --version -v -vv -vvv --health -g --grammar --vsplit --hsplit -c --config --log" -- """$2""")) + return 0 + ;; + *) + COMPREPLY=($(compgen -fd -- """$2""")) + return 0 + ;; + esac } && complete -o filenames -F _hx hx