diff options
Diffstat (limited to 'completions/feh')
-rw-r--r-- | completions/feh | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/completions/feh b/completions/feh new file mode 100644 index 0000000..f1d4b18 --- /dev/null +++ b/completions/feh @@ -0,0 +1,120 @@ +# bash completion for feh(1) -*- shell-script -*- + +_feh() +{ + local cur prev words cword split + _init_completion -s || return + + case "$prev" in + --image-bg | -B) + COMPREPLY=($(compgen -W 'checks white black' -- "$cur")) + return + ;; + --filelist | --output | --output-only | --start-at | -!(-*)[foO\|]) + _filedir + return + ;; + --caption-path | --fontpath | --output-dir | -!(-*)[KCj]) + _filedir -d + return + ;; + --font | --menu-font | --title-font | -!(-*)[eM@]) + # expect string like "dejavu.ttf/12" + if [[ $cur == */* ]]; then # expect integer value + COMPREPLY=($(compgen -P "$cur" -W '{0..9}')) + compopt -o nospace + return + fi + local font_path + # font_path="$(imlib2-config --prefix 2>/dev/null)/share/imlib2/data/fonts" + # COMPREPLY=( $(cd "$font_path" 2>/dev/null; compgen -f \ + # -X "!*.@([tT][tT][fF])" -S / -- "$cur") ) + for ((i = ${#words[@]} - 1; i > 0; i--)); do + if [[ ${words[i]} == -@(C|-fontpath) ]]; then + font_path="${words[i + 1]}" + COMPREPLY+=($( + cd "$font_path" 2>/dev/null + compgen -f \ + -X "!*.@([tT][tT][fF])" -S / -- "$cur" + )) + fi + done + compopt -o nospace + return + ;; + --theme | -!(-*)T) + local conf_path=~/.config/feh/themes + local theme_name theme_opts + [[ -r $conf_path ]] || return + while read theme_name theme_opts; do + if [[ $theme_name == '#'* || $theme_name == "" ]]; then + continue + fi + COMPREPLY+=($(compgen -W "$theme_name" -- "$cur")) + done <"$conf_path" + return + ;; + --sort | -!(-*)S) + COMPREPLY=($(compgen -W 'name filename mtime width height + pixels size format' -- "$cur")) + return + ;; + --reload | --limit-height | --limit-width | --thumb-height | --thumb-width | \ + --thumb-redraw | --magick-timeout | -!(-*)[RHWEyJ]) + # expect integer value + COMPREPLY+=($(compgen -W '{0..9}')) + compopt -o nospace + return + ;; + --zoom) + # expect integer value or "max", "fill" + COMPREPLY=($(compgen -W 'max fill' -- "$cur")) + if [[ ! $cur || ! ${COMPREPLY-} ]]; then + COMPREPLY+=($(compgen -W '{0..9}')) + compopt -o nospace + fi + return + ;; + --alpha | -!(-*)a) + COMPREPLY=($(compgen -W '{0..255}' -- "$cur")) + return + ;; + --bg | -!(-*)b) + _filedir + COMPREPLY+=($(compgen -W 'trans' -- "$cur")) + return + ;; + --geometry | --max-dimension | --min-dimension | -!(-*)g) + # expect string like 640x480 + if [[ $cur && $cur != *x* ]]; then + COMPREPLY=(x) + fi + COMPREPLY+=($(compgen -W "{0..9}")) + compopt -o nospace + return + ;; + --customlist | --index-info | --info | --slideshow-delay | --thumb-title | \ + --title | -!(-*)[LD~^]) + # argument required but no completions available + return + ;; + esac + + $split && return + + if [[ $cur == -* ]]; then + # Some versions of feh just output "See 'man feh'" for --help :( + COMPREPLY=($(compgen -W '$(_parse_help "$1" --help)' -- "$cur")) + if [[ ${COMPREPLY-} ]]; then + [[ $COMPREPLY == *= ]] && compopt -o nospace + return + fi + fi + + # FIXME: It is hard to determine correct supported extensions. + # feh can handle any format that imagemagick can plus some others + _filedir 'xpm|tif?(f)|png|p[npgba]m|iff|?(i)lbm|jp?(e)g|jfi?(f)|gif|bmp|arg?(b)|tga|xcf|ani|ico|?(e)ps|pdf|dvi|txt|svg?(z)|cdr|[ot]tf' +} && + complete -F _feh feh + +# ex: filetype=sh |