diff options
Diffstat (limited to 'completions/lilo')
-rw-r--r-- | completions/lilo | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/completions/lilo b/completions/lilo index 03e3ee29..af8539aa 100644 --- a/completions/lilo +++ b/completions/lilo @@ -2,8 +2,9 @@ _lilo_labels() { - COMPREPLY=( $(compgen -W "$(awk -F'=' '/label/ {print $2}' \ - /etc/lilo.conf | command sed -e 's/\"//g')" -- "$cur") ) + COMPREPLY=($(compgen -W "$(awk -F= '$1 ~ /^[ \t]*label$/ {print $2}' \ + ${1:-/etc/lilo.conf} 2>/dev/null | command sed -e 's/\"//g')" \ + -- "$cur")) } _lilo() @@ -12,7 +13,7 @@ _lilo() _init_completion || return case $prev in - -C|-i|-m|-s|-S) + -C | -i | -m | -s | -S) _filedir return ;; @@ -20,12 +21,19 @@ _lilo() _filedir -d return ;; - -I|-D|-R) + -I | -D | -R) # label completion - _lilo_labels + local i conf + for i in "${!words[@]}"; do + if [[ ${words[i]} == -C ]]; then + conf=${words[i + 1]} + break + fi + done + _lilo_labels $conf return ;; - -A|-b|-M|-u|-U) + -A | -b | -M | -u | -U) # device completion cur=${cur:=/dev/} _filedir @@ -33,18 +41,26 @@ _lilo() ;; -T) # topic completion - COMPREPLY=( $(compgen -W 'help ChRul EBDA geom geom= table= - video' -- "$cur") ) + COMPREPLY=($(compgen -W 'help ChRul EBDA geom geom= table= + video' -- "$cur")) + return + ;; + -B) + _filedir bmp + return + ;; + -E) + _filedir '@(bmp|dat)' return ;; esac - if [[ "$cur" == -* ]]; then + if [[ $cur == -* ]]; then # relevant options completion - COMPREPLY=( $(compgen -W '-A -b -c -C -d -f -g -i -I -l -L -m -M -p -P - -q -r -R -s -S -t -T -u -U -v -V -w -x -z' -- "$cur") ) + COMPREPLY=($(compgen -W '-A -B -b -c -C -d -E -f -g -i -I -l -L -m -M + -p -P -q -r -R -s -S -t -T -u -U -v -V -w -x -z' -- "$cur")) fi } && -complete -F _lilo lilo + complete -F _lilo lilo # ex: filetype=sh |