diff --git a/CHANGES b/CHANGES index 962deda5..dd9574b0 100644 --- a/CHANGES +++ b/CHANGES @@ -25,6 +25,7 @@ bash-completion (2.x) * Fix known hosts completion for IPv6 addresses whose last 16 bits are digits (Alioth: #312695, RedHat: #630658). * Improve mplayer and mencoder completions. + * Fixes to completions for filenames containing tabs (RedHat: #629518). [ Freddy Vulto ] * Added _tilde(), fix ~username completion (Alioth: #312613, Debian: #587095) diff --git a/bash_completion b/bash_completion index 9e16b9b7..e3ae3089 100644 --- a/bash_completion +++ b/bash_completion @@ -615,7 +615,7 @@ _quote_readline_by_ref() # _filedir() { - local i IFS=$'\t\n' xspec + local i IFS=$'\n' xspec _tilde "$cur" || return 0 @@ -1361,7 +1361,7 @@ complete -F _known_hosts traceroute traceroute6 tracepath tracepath6 ping \ # _cd() { - local cur IFS=$'\t\n' i j k + local cur IFS=$'\n' i j k _get_comp_words_by_ref cur # try to allow variable completion @@ -1384,7 +1384,7 @@ _cd() local -r mark_symdirs=$(_rl_enabled mark-symlinked-directories && echo y) # we have a CDPATH, so loop on its contents - for i in ${CDPATH//:/$'\t'}; do + for i in ${CDPATH//:/$'\n'}; do # create an array of matched subdirs k="${#COMPREPLY[@]}" for j in $( compgen -d $i/$cur ); do @@ -1564,7 +1564,7 @@ _filedir_xspec() { local IFS cur xspec - IFS=$'\t\n' + IFS=$'\n' COMPREPLY=() _get_comp_words_by_ref cur diff --git a/completions/bzip2 b/completions/bzip2 index f4902e29..be030274 100644 --- a/completions/bzip2 +++ b/completions/bzip2 @@ -21,7 +21,7 @@ _bzip2() return 0 fi - local IFS=$'\t\n' + local IFS=$'\n' xspec="*.bz2" if [[ "$prev" == --* ]]; then diff --git a/completions/gzip b/completions/gzip index 0951f72f..afd647ed 100644 --- a/completions/gzip +++ b/completions/gzip @@ -21,7 +21,7 @@ _gzip() return 0 fi - local IFS=$'\t\n' + local IFS=$'\n' xspec="*.@(gz|t[ag]z)" if [[ "$prev" == --* ]]; then diff --git a/completions/lrzip b/completions/lrzip index e5848035..445fc3c5 100644 --- a/completions/lrzip +++ b/completions/lrzip @@ -48,7 +48,7 @@ _lrzip() _expand || return 0 - local IFS=$'\t\n' + local IFS=$'\n' COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \ $( compgen -d -- "$cur" ) ) } && diff --git a/completions/lzma b/completions/lzma index a176f191..c2fece97 100644 --- a/completions/lzma +++ b/completions/lzma @@ -16,7 +16,7 @@ _lzma() return 0 fi - local IFS=$'\t\n' + local IFS=$'\n' xspec="*.@(lzma|tlz)" if [[ "$prev" == --* ]]; then diff --git a/completions/lzop b/completions/lzop index 19852b24..7a34ae3e 100644 --- a/completions/lzop +++ b/completions/lzop @@ -53,7 +53,7 @@ _lzop() _expand || return 0 - local IFS=$'\t\n' + local IFS=$'\n' COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \ $( compgen -d -- "$cur" ) ) } && diff --git a/completions/mplayer b/completions/mplayer index 5d1b87cf..39ac93d3 100644 --- a/completions/mplayer +++ b/completions/mplayer @@ -48,7 +48,7 @@ _mplayer() ;; -vobsub) _filedir '@(idx|ifo|sub)' - local IFS=$'\t\n' + local IFS=$'\n' COMPREPLY=( $( for i in "${COMPREPLY[@]}"; do if [[ -f $i && -r $i ]]; then printf '%s\n' ${i%.*} @@ -76,7 +76,7 @@ _mplayer() dirs=(/usr/share/mplayer/skins /usr/local/share/mplayer/skins) fi - local IFS=$'\t\n' + local IFS=$'\n' for i in ~/.mplayer/skins ${dirs[@]}; do if [[ -d $i && -r $i ]]; then for j in $( compgen -d $i/$cur ); do diff --git a/completions/perl b/completions/perl index ea71b2f4..9a1d84bf 100644 --- a/completions/perl +++ b/completions/perl @@ -30,7 +30,7 @@ _perl() # only handle module completion for now case $prev in -I|-x) - local IFS=$'\t\n' + local IFS=$'\n' COMPREPLY=( $( compgen -d $optPrefix $optSuffix -- "$cur" ) ) return 0 ;; diff --git a/completions/ssh b/completions/ssh index b4bafdee..2c20c2d3 100644 --- a/completions/ssh +++ b/completions/ssh @@ -246,13 +246,13 @@ _sftp() shopt -u hostcomplete && complete -F _sftp sftp # things we want to escape in remote scp paths -_scp_path_esc="[][(){}<>\",:;^&\!$=?\`|\\ ']" +_scp_path_esc="[][(){}<>\",:;^&\!$=?\`|\\ \t']" # Complete remote files with ssh. If the first arg is -d, complete on dirs # only. Returns paths escaped with three backslashes. _scp_remote_files() { - local IFS=$'\t\n' + local IFS=$'\n' # remove backslash escape from the first colon cur=${cur/\\:/:} @@ -291,7 +291,7 @@ _scp_remote_files() # an optional prefix to add to returned completions. _scp_local_files() { - local IFS=$'\t\n' + local IFS=$'\n' local dirsonly=false if [ "$1" = -d ]; then diff --git a/completions/wvdial b/completions/wvdial index 101112ca..3b135f0a 100644 --- a/completions/wvdial +++ b/completions/wvdial @@ -3,7 +3,7 @@ have wvdial && _wvdial() { - local cur prev config i IFS=$'\t\n' + local cur prev config i IFS=$'\n' COMPREPLY=() _get_comp_words_by_ref cur prev @@ -23,7 +23,7 @@ _wvdial() ;; *) # start with global and personal config files - config="/etc/wvdial.conf"$'\t'"$HOME/.wvdialrc" + config="/etc/wvdial.conf"$'\n'"$HOME/.wvdialrc" # replace with command line config file if present for (( i=1; i < COMP_CWORD; i++ )); do if [[ "${COMP_WORDS[i]}" == "--config" ]]; then diff --git a/completions/xz b/completions/xz index 46420b01..f947b080 100644 --- a/completions/xz +++ b/completions/xz @@ -52,7 +52,7 @@ _xz() _expand || return 0 - local IFS=$'\t\n' + local IFS=$'\n' COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \ $( compgen -d -- "$cur" ) ) } &&