diff --git a/completions/Makefile.am b/completions/Makefile.am index 324599cc..a7ad5edf 100644 --- a/completions/Makefile.am +++ b/completions/Makefile.am @@ -36,6 +36,7 @@ bashcomp_DATA = abook \ dd \ dhclient \ dict \ + dot \ dpkg \ dselect \ dsniff \ diff --git a/completions/dot b/completions/dot new file mode 100644 index 00000000..cd53598f --- /dev/null +++ b/completions/dot @@ -0,0 +1,53 @@ +# dot(1) completion + +have dot || return + +_dot() +{ + local cur prev words cword + _init_completion -n := || return + + [[ $prev == -@(V|\?) ]] && return + + case $cur in + -G*|-N*|-E*|-l?*|-q?*|-s?*|-Ln*|-LU*|-LC*|-LT*) + return + ;; + -T*) + local langs=( $( "$1" -TNON_EXISTENT 2>&1 | \ + sed -ne 's/.*one of://p' ) ) + COMPREPLY=( $( compgen -P -T -W '${langs[@]}' -- "${cur#-T}" ) ) + return + ;; + -K*) + local layouts=( $( "$1" -KNON_EXISTENT 2>&1 | \ + sed -ne 's/.*one of://p' ) ) + COMPREPLY=( $( compgen -P -K -W '${layouts[@]}' -- "${cur#-K}" ) ) + return + ;; + -o*) + cur=${cur#-o} + _filedir + COMPREPLY=( $( compgen -P -o -W '${COMPREPLY[@]}' -- "$cur" ) ) + return + ;; + esac + + if [[ $cur == -* ]]; then + COMPREPLY=( $( compgen -W '-V -v -G -N -E -T -K -l -o -O -P -q -s -y -n + -n1 -n2 -x -Lg -LO -Ln -LU -LC -LT -m -c -?' -- "$cur" ) ) + [[ $COMPREPLY == -@(G|N|E|T|K|o|L[nUCT]) ]] && compopt -o nospace + return + fi + + _filedir dot +} && +complete -F _dot dot + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/test/completion/dot.exp b/test/completion/dot.exp new file mode 100644 index 00000000..d12422c1 --- /dev/null +++ b/test/completion/dot.exp @@ -0,0 +1 @@ +assert_source_completions dot diff --git a/test/lib/completions/dot.exp b/test/lib/completions/dot.exp new file mode 100644 index 00000000..2a85a56b --- /dev/null +++ b/test/lib/completions/dot.exp @@ -0,0 +1,20 @@ +proc setup {} { + save_env +} + + +proc teardown {} { + assert_env_unmodified +} + + +setup + + +assert_complete_any "dot " + + +sync_after_int + + +teardown