]> git.pld-linux.org Git - packages/feh.git/blobdiff - feh-bash-completion
- up to 3.10
[packages/feh.git] / feh-bash-completion
index cc6a90d631f7d6b5a010675d1fbbc69919966f1e..5ba9751f7fd618d4c4b7da660fb8c9000f9aee3d 100644 (file)
-# feh bash_completition - made by uzsolt
-# TODO: add more file extensions
+# bash completion for feh(1)                               -*- shell-script -*-
 
-_feh() 
+_comp_cmd_feh()
 {
-       local cur
+    local cur prev words cword was_split comp_args
+    _comp_initialize -s -- "$@" || return
 
-       COMPREPLY=()
-       cur=${COMP_WORDS[COMP_CWORD]}
+    local noargopts='!(-*|*[foO|KCjeM@TSRHWEyJabgLD~^]*)'
+    # shellcheck disable=SC2254
+    case "$prev" in
+        --image-bg | -B)
+            _comp_compgen -- -W 'checks white black'
+            return
+            ;;
+        --filelist | --output | --output-only | --start-at | -${noargopts}[foO\|])
+            _comp_compgen_filedir
+            return
+            ;;
+        --caption-path | --fontpath | --output-dir | -${noargopts}[KCj])
+            _comp_compgen_filedir -d
+            return
+            ;;
+        --font | --menu-font | --title-font | -${noargopts}[eM@])
+            # expect string like "dejavu.ttf/12"
+            if [[ $cur == */* ]]; then # expect integer value
+                _comp_compgen -R -- -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"
+            # _comp_compgen -C "$font_path" -- -f -X "!*.@([tT][tT][fF])" -S /
+            for ((i = ${#words[@]} - 1; i > 0; i--)); do
+                if [[ ${words[i]} == -@(C|-fontpath) ]]; then
+                    font_path="${words[i + 1]}"
+                    _comp_compgen -aC "$font_path" -- \
+                        -f -X "!*.@([tT][tT][fF])" -S /
+                fi
+            done
+            compopt -o nospace
+            return
+            ;;
+        --theme | -${noargopts}T)
+            local conf_path=~/.config/feh/themes
+            local theme_name theme_opts
+            [[ -r $conf_path ]] || return
+            while read -r theme_name theme_opts; do
+                if [[ $theme_name == '#'* || $theme_name == "" ]]; then
+                    continue
+                fi
+                _comp_compgen -a -- -W "$theme_name"
+            done <"$conf_path"
+            return
+            ;;
+        --sort | -${noargopts}S)
+            _comp_compgen -- -W 'name filename mtime width height pixels size
+                format'
+            return
+            ;;
+        --reload | --limit-height | --limit-width | --thumb-height | --thumb-width | \
+            --thumb-redraw | --magick-timeout | -${noargopts}[RHWEyJ])
+            # expect integer value
+            _comp_compgen -aR -- -W '{0..9}'
+            compopt -o nospace
+            return
+            ;;
+        --zoom)
+            # expect integer value or "max", "fill"
+            _comp_compgen -- -W 'max fill'
+            if [[ ! $cur || ! ${COMPREPLY-} ]]; then
+                _comp_compgen -aR -- -W '{0..9}'
+                compopt -o nospace
+            fi
+            return
+            ;;
+        --alpha | -${noargopts}a)
+            _comp_compgen -- -W '{0..255}'
+            return
+            ;;
+        --bg | -${noargopts}b)
+            _comp_compgen_filedir
+            _comp_compgen -a -- -W 'trans'
+            return
+            ;;
+        --geometry | --max-dimension | --min-dimension | -${noargopts}g)
+            # expect string like 640x480
+            if [[ $cur && $cur != *x* ]]; then
+                COMPREPLY=(x)
+            fi
+            _comp_compgen -aR -- -W "{0..9}"
+            compopt -o nospace
+            return
+            ;;
+        --customlist | --index-info | --info | --slideshow-delay | --thumb-title | \
+            --title | -${noargopts}[LD~^])
+            # argument required but no completions available
+            return
+            ;;
+    esac
 
-       case "$cur" in
-           -*)
-               COMPREPLY=( $( compgen -W ' -1 -2 -4 -5 -6 -7 -8 -9\
-                    -a -A --action1 --action2 --action3 --action4 --action5 --action6 --action7 --action8 --action9\
-                    --alpha --auto-zoom -b --bg --bg-center --bg-scale --bg-seamless --bg-tile --blur-button\
-                    --borderless --builtin -c --cache-thumbnails --caption-path --collage --customlist --cycle-once\
-                    -d -D --draw-filename -e -E -f -F --filelist --fontpath --fullindex --full-screen -g -G --geometry\
-                    -h -H --help --hide-pointer -i -I --ignore-aspect --index -j -k --keep-http -l -L --limit-height \
-                    --limit-width --list --loadable -m -M --menu-bg --menu-border --menu-button --menu-ctrl-mask \
-                    --menu-font --menu-style --montage --multiwindow -n -N --next-button --no-blur-ctrl-mask \
-                    --no-jump-on-resort --no-menus --no-rotate-ctrl-mask -o -O --output-dir -p --preload -q -Q \
-                    --quiet -r -R --randomize --rcfile --recursive --reload --reverse --rotate-button -s -S 
-                    --scale-down --screen-clip --slideshow-delay --sort --stretch -t -T --theme --thumb-height \
-                    --thumbnails --thumb-width --title --title-font -u -U --unloadable -v -V --verbose --version \
-                    -w -W --wget-timestamp -x -X --xinerama -y -z -Z --zoom --zoom-button' -- $cur ) )
-               ;;
-           *)
-                _filedir '@(jpg|jpeg|png|gif|bmp|JPG|JPEG|PNG|GIF|BMP)'
-               ;;
-       esac
-  
-       return 0
+    [[ $was_split ]] && return
 
-}
-complete -F _feh -o filenames feh
+    if [[ $cur == -* ]]; then
+        # Some versions of feh just output "See 'man feh'" for --help :(
+        _comp_compgen_help
+        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
+    _comp_compgen_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|ff?(.gz|.bz2)|webp'
+} &&
+    complete -F _comp_cmd_feh feh
+
+# ex: filetype=sh
This page took 0.071121 seconds and 4 git commands to generate.