summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Murzov <e-mail@date.by>2011-09-21 03:07:45 +0400
committerIgor Murzov <e-mail@date.by>2011-09-26 02:59:14 +0400
commitc7b9d08d171baa782bbb56ff142ea8572eecc778 (patch)
treedeb8230758d2bb1d25a419813ddd39b89cb58fc3
parenta1b8148d234f5a49d8da28977387e0463ce349ed (diff)
downloadbash-completion-c7b9d08d171baa782bbb56ff142ea8572eecc778.tar.gz
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.
-rw-r--r--completions/Makefile.am1
-rw-r--r--completions/feh127
-rw-r--r--test/completion/feh.exp1
-rw-r--r--test/lib/completions/feh.exp55
4 files changed, 184 insertions, 0 deletions
diff --git a/completions/Makefile.am b/completions/Makefile.am
index 0cfea794..62060c5c 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 00000000..53ed5589
--- /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 00000000..4613bfaf
--- /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 00000000..129e1f4d
--- /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