Skip to content

Commit

Permalink
Make bash completion behave normally (helix-editor#11246)
Browse files Browse the repository at this point in the history
  • Loading branch information
saccarosium authored and plul committed Oct 13, 2024
1 parent 44db30d commit 05e7f3b
Showing 1 changed file with 25 additions and 17 deletions.
42 changes: 25 additions & 17 deletions contrib/completion/hx.bash
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 05e7f3b

Please sign in to comment.