diff --git a/bash_completion b/bash_completion index 63a5ae4c..2e703d5a 100644 --- a/bash_completion +++ b/bash_completion @@ -4023,49 +4023,6 @@ _openssl() complete -F _openssl $default openssl } -# screen(1) completion -# -have screen && -_screen() -{ - local cur prev preprev - - COMPREPLY=() - cur=`_get_cword` - prev=${COMP_WORDS[COMP_CWORD-1]} - - [ "$COMP_CWORD" -ge 2 ] && preprev=${COMP_WORDS[COMP_CWORD-2]} - - if [ "$preprev" = "-d" -o "$preprev" = "-D" -a "$prev" = "-r" -o \ - "$prev" = "-R" ]; then - # list all - COMPREPLY=( $( command screen -ls | \ - sed -ne 's|^['$'\t'']\+\('$cur'[0-9]\+\.[^'$'\t'']\+\).*$|\1|p' ) ) - else - case "$prev" in - -[rR]) - # list detached - COMPREPLY=( $( command screen -ls | \ - sed -ne 's|^['$'\t'']\+\('$cur'[0-9]\+\.[^'$'\t'']\+\).*Detached.*$|\1|p' ) ) - ;; - -[dDx]) - # list attached - COMPREPLY=( $( command screen -ls | \ - sed -ne 's|^['$'\t'']\+\('$cur'[0-9]\+\.[^'$'\t'']\+\).*Attached.*$|\1|p' ) ) - ;; - -s) - # shells - COMPREPLY=( $( grep ^${cur:-[^#]} /etc/shells ) ) - ;; - *) - ;; - esac - fi - - return 0 -} && -complete -F _screen $default screen - # lftp(1) bookmark completion # have lftp && diff --git a/contrib/screen b/contrib/screen new file mode 100644 index 00000000..a549b763 --- /dev/null +++ b/contrib/screen @@ -0,0 +1,66 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash completion for screen + +# screen(1) completion +# +have screen && +_screen_sessions() +{ + local pattern + + if [ -n "$1" ]; then + pattern=".*$1.*" + else + pattern=".*" + fi + + COMPREPLY=( $( command screen -ls | \ + sed -ne 's|^['$'\t'']\+\('$cur'[0-9]\+\.[^'$'\t'']\+\)'$pattern'$|\1|p' ) ) +} && +_screen() +{ + local cur prev preprev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + [ "$COMP_CWORD" -ge 2 ] && preprev=${COMP_WORDS[COMP_CWORD-2]} + + case "$preprev" in + -[dD]) + _screen_sessions + return 0 + ;; + esac + + case "$prev" in + -[rR]) + # list detached + _screen_sessions 'Detached' + return 0 + ;; + -[dDx]) + # list attached + _screen_sessions 'Attached' + return 0 + ;; + -s) + # shells + COMPREPLY=( $( grep ^${cur:-[^#]} /etc/shells ) ) + ;; + -c) + _filedirs + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -A -c -d -D -e -f -fn -fa -h -i \ + -l -ln -ls -list -L -m -O -p -q -r -R -s -S -t -U -v \ + -wipe -x -X' -- $cur ) ) + fi +} && +complete -F _screen $default screen diff --git a/debian/changelog b/debian/changelog index 6524529e..90dc92c5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -25,6 +25,7 @@ bash-completion (1:1.0-1) UNRELEASED; urgency=low * Added quota-tools completion * Added rdesktop completion * Added tightvncviewer completion + * Cleanup screen completion, and make it completes on options [ David Paleino ] * Added .kar to Timidity completion.