summaryrefslogtreecommitdiff
path: root/contrib/iconv
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/iconv')
-rw-r--r--contrib/iconv33
1 files changed, 23 insertions, 10 deletions
diff --git a/contrib/iconv b/contrib/iconv
index cf497e99..14b618dc 100644
--- a/contrib/iconv
+++ b/contrib/iconv
@@ -3,28 +3,41 @@
have iconv &&
_iconv()
{
- local cur prev
+ local cur prev split=false
COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
+ _get_comp_words_by_ref cur prev
- case "$prev" in
- -@(f|t|-@(from|to)-code))
- COMPREPLY=( $( compgen -W \
- '$( iconv --list | sed -e "s@//@@;" )' -- "$cur" ) )
+ _split_longopt && split=true
+
+ case $prev in
+ -'?'|--help|--usage|-V|--version|--unicode-subst|--byte-subst|\
+ --widechar-subst)
+ return 0
+ ;;
+ -f|--from-code|-t|--to-code)
+ COMPREPLY=( $( compgen -W '$( iconv -l | \
+ sed -e "s@/*\$@@" -e "s/[,()]//g" )' -- "$cur" ) )
+ return 0
+ ;;
+ -o|--output)
+ _filedir
return 0
;;
esac
+ $split && return 0
if [[ "$cur" = -* ]]; then
- COMPREPLY=( $( compgen -W '--from-code -f --to-code -t --list
- --output -o --verbose' -- "$cur" ) )
+ COMPREPLY=( $( compgen -W '--from-code --to-code --list -c
+ --unicode-subst --byte-subst --widechar-subst --output --silent
+ --verbose --help --usage --version' -- "$cur" ) )
return 0
fi
} &&
-complete -F _iconv $default iconv
+complete -F _iconv -o default iconv
+# Intentionally not -o filenames here, -f/-t completions may contain slashes
+# and -o filenames would break them.
# Local variables:
# mode: shell-script