diff options
Diffstat (limited to '')
-rw-r--r-- | completions/feh | 76 |
1 files changed, 37 insertions, 39 deletions
diff --git a/completions/feh b/completions/feh index f1d4b18..3762574 100644 --- a/completions/feh +++ b/completions/feh @@ -1,110 +1,108 @@ # bash completion for feh(1) -*- shell-script -*- -_feh() +_comp_cmd_feh() { - local cur prev words cword split - _init_completion -s || return + local cur prev words cword was_split comp_args + _comp_initialize -s -- "$@" || return + local noargopts='!(-*|*[foO|KCjeM@TSRHWEyJabgLD~^]*)' + # shellcheck disable=SC2254 case "$prev" in --image-bg | -B) - COMPREPLY=($(compgen -W 'checks white black' -- "$cur")) + _comp_compgen -- -W 'checks white black' return ;; - --filelist | --output | --output-only | --start-at | -!(-*)[foO\|]) - _filedir + --filelist | --output | --output-only | --start-at | -${noargopts}[foO\|]) + _comp_compgen_filedir return ;; - --caption-path | --fontpath | --output-dir | -!(-*)[KCj]) - _filedir -d + --caption-path | --fontpath | --output-dir | -${noargopts}[KCj]) + _comp_compgen_filedir -d return ;; - --font | --menu-font | --title-font | -!(-*)[eM@]) + --font | --menu-font | --title-font | -${noargopts}[eM@]) # expect string like "dejavu.ttf/12" if [[ $cur == */* ]]; then # expect integer value - COMPREPLY=($(compgen -P "$cur" -W '{0..9}')) + _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" - # COMPREPLY=( $(cd "$font_path" 2>/dev/null; compgen -f \ - # -X "!*.@([tT][tT][fF])" -S / -- "$cur") ) + # _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]}" - COMPREPLY+=($( - cd "$font_path" 2>/dev/null - compgen -f \ - -X "!*.@([tT][tT][fF])" -S / -- "$cur" - )) + _comp_compgen -aC "$font_path" -- \ + -f -X "!*.@([tT][tT][fF])" -S / fi done compopt -o nospace return ;; - --theme | -!(-*)T) + --theme | -${noargopts}T) local conf_path=~/.config/feh/themes local theme_name theme_opts [[ -r $conf_path ]] || return - while read theme_name theme_opts; do + while read -r theme_name theme_opts; do if [[ $theme_name == '#'* || $theme_name == "" ]]; then continue fi - COMPREPLY+=($(compgen -W "$theme_name" -- "$cur")) + _comp_compgen -a -- -W "$theme_name" done <"$conf_path" return ;; - --sort | -!(-*)S) - COMPREPLY=($(compgen -W 'name filename mtime width height - pixels size format' -- "$cur")) + --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 | -!(-*)[RHWEyJ]) + --thumb-redraw | --magick-timeout | -${noargopts}[RHWEyJ]) # expect integer value - COMPREPLY+=($(compgen -W '{0..9}')) + _comp_compgen -aR -- -W '{0..9}' compopt -o nospace return ;; --zoom) # expect integer value or "max", "fill" - COMPREPLY=($(compgen -W 'max fill' -- "$cur")) + _comp_compgen -- -W 'max fill' if [[ ! $cur || ! ${COMPREPLY-} ]]; then - COMPREPLY+=($(compgen -W '{0..9}')) + _comp_compgen -aR -- -W '{0..9}' compopt -o nospace fi return ;; - --alpha | -!(-*)a) - COMPREPLY=($(compgen -W '{0..255}' -- "$cur")) + --alpha | -${noargopts}a) + _comp_compgen -- -W '{0..255}' return ;; - --bg | -!(-*)b) - _filedir - COMPREPLY+=($(compgen -W 'trans' -- "$cur")) + --bg | -${noargopts}b) + _comp_compgen_filedir + _comp_compgen -a -- -W 'trans' return ;; - --geometry | --max-dimension | --min-dimension | -!(-*)g) + --geometry | --max-dimension | --min-dimension | -${noargopts}g) # expect string like 640x480 if [[ $cur && $cur != *x* ]]; then COMPREPLY=(x) fi - COMPREPLY+=($(compgen -W "{0..9}")) + _comp_compgen -aR -- -W "{0..9}" compopt -o nospace return ;; --customlist | --index-info | --info | --slideshow-delay | --thumb-title | \ - --title | -!(-*)[LD~^]) + --title | -${noargopts}[LD~^]) # argument required but no completions available return ;; esac - $split && return + [[ $was_split ]] && return if [[ $cur == -* ]]; then # Some versions of feh just output "See 'man feh'" for --help :( - COMPREPLY=($(compgen -W '$(_parse_help "$1" --help)' -- "$cur")) + _comp_compgen_help if [[ ${COMPREPLY-} ]]; then [[ $COMPREPLY == *= ]] && compopt -o nospace return @@ -113,8 +111,8 @@ _feh() # 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' + _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|y4m|hei[cf]?(s)|avif?(s)' } && - complete -F _feh feh + complete -F _comp_cmd_feh feh # ex: filetype=sh |