[Bash-completion-commits] [SCM] bash-completion branch, master, updated. 1.3-438-ge81223a

Igor Murzov e-mail at date.by
Sun Sep 25 23:03:59 UTC 2011


The following commit has been merged in the master branch:
commit c7b9d08d171baa782bbb56ff142ea8572eecc778
Author: Igor Murzov <e-mail at date.by>
Date:   Wed Sep 21 03:07:45 2011 +0400

    feh: New completion.
    
    NB: feh should be compiled with `make help=1`. Otherwise `feh --help`
    will not print help message, and option completion will not work.

diff --git a/completions/Makefile.am b/completions/Makefile.am
index 0cfea79..62060c5 100644
--- a/completions/Makefile.am
+++ b/completions/Makefile.am
@@ -46,6 +46,7 @@ bashcomp_DATA = abook \
 		dvd+rw-tools \
 		e2fsprogs \
 		evince \
+		feh \
 		findutils \
 		freeciv \
 		freerdp \
diff --git a/completions/feh b/completions/feh
new file mode 100644
index 0000000..53ed558
--- /dev/null
+++ b/completions/feh
@@ -0,0 +1,127 @@
+# bash completion for feh(1)
+
+have feh || return
+
+_feh()
+{
+    local cur prev words cword split
+    _init_completion -s || return
+
+    case "$prev" in
+        -B|--image-bg)
+            COMPREPLY=( $( compgen -W 'default white black' -- "$cur" ) )
+            return
+            ;;
+        --index-dim|--index-name|--index-size)
+            COMPREPLY=( $( compgen -W '0 1' -- "$cur" ) )
+            return
+            ;;
+        -f|--filelist|-o|--output|-O|--output-only|-\||--start-at)
+            _filedir
+            return
+            ;;
+        -K|--caption-path|-C|--fontpath|-j|--output-dir)
+            _filedir -d
+            return
+            ;;
+        -e|--font|-M|--menu-font|-@|--title-font)
+            # 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
+            ;;
+        -T|--theme)
+            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
+            ;;
+        -S|--sort)
+            COMPREPLY=( $( compgen -W 'name filename width height pixels size
+                format' -- "$cur" ) )
+            return
+            ;;
+        -R|--reload|-H|--limit-height|-W|--limit-width|-E|--thumb-height|\
+        -y|--thumb-width|-J|--thumb-redraw)
+            # 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
+            ;;
+        -0|--reload-button|-1|--pan-button|-2|--zoom-button|-3|--menu-button|\
+        -4|--prev-button|-5|--next-button|-8|--rotate-button|-9|--blur-button)
+            COMPREPLY=( $( compgen -W '{0..9}' -- "$cur" ) )
+            return
+            ;;
+        -a|--alpha)
+            COMPREPLY=( $( compgen -W '{0..255}' -- "$cur" ) )
+            return
+            ;;
+        -b|--bg)
+            _filedir
+            COMPREPLY+=( $( compgen -W 'trans' -- "$cur" ) )
+            return
+            ;;
+        -g|--geometry)
+            # expect string like 640x480
+            if [[ $cur && "$cur" != *x* ]]; then
+                COMPREPLY=( x )
+            fi
+            COMPREPLY+=( $(compgen -W "{0..9}") )
+            compopt -o nospace
+            return
+            ;;
+        -L|--customlist|--info|-D|--slideshow-delay|-~|--thumb-title|-^|--title)
+            # argument required but no completions available
+            return
+            ;;
+    esac
+
+    $split && return
+
+    if [[ "$cur" == -* ]]; then
+        COMPREPLY=( $( compgen -W '$( _parse_help "$1" --help )' -- "$cur" ) )
+        [[ $COMPREPLY == *= ]] && compopt -o nospace
+        [[ $COMPREPLY ]] && return
+    fi
+
+    _filedir 'xpm|tif?(f)|png|p[npgba]m|iff|?(i)lbm|jp?(e)g|jfi?(f)|gif|bmp|arg?(b)|tga|xcf|ani|ico'
+} && complete -F _feh feh
+
+# 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/feh.exp b/test/completion/feh.exp
new file mode 100644
index 0000000..4613bfa
--- /dev/null
+++ b/test/completion/feh.exp
@@ -0,0 +1 @@
+assert_source_completions feh
diff --git a/test/lib/completions/feh.exp b/test/lib/completions/feh.exp
new file mode 100644
index 0000000..129e1f4
--- /dev/null
+++ b/test/lib/completions/feh.exp
@@ -0,0 +1,55 @@
+proc setup {} {
+    save_env
+}
+
+
+proc teardown {} {
+    assert_env_unmodified
+}
+
+
+setup
+
+
+assert_complete_any "feh "
+
+
+sync_after_int
+
+
+set test "--lis<TAB> should complete \"--list\""
+assert_complete "--list" "feh --lis" $test
+
+
+sync_after_int
+
+
+set test "-S pix<TAB> should complete \"pixels\""
+assert_complete "pixels" "feh -S pix" $test
+
+
+sync_after_int
+
+
+set test "--zoom ma<TAB> should complete \"max\""
+assert_complete "max" "feh --zoom ma" $test
+
+
+sync_after_int
+
+
+set test "-g 640<TAB> should complete digits plus \"x\""
+assert_complete "0 1 2 3 4 5 6 7 8 9 x" "feh -g 640" $test
+
+
+sync_after_int
+
+
+set test "-g 640x48<TAB> should complete digits"
+assert_complete "0 1 2 3 4 5 6 7 8 9" "feh -g 640x48" $test
+
+
+sync_after_int
+
+
+teardown

-- 
bash-completion



More information about the Bash-completion-commits mailing list