screen: Drop pid prefixes from session name completions where possible.

Thanks-to: Alexey Zaytsev <alexey.zaytsev@gmail.com>
This commit is contained in:
Ville Skyttä 2011-05-17 20:07:08 +03:00
parent eefc69d83b
commit 6e4912d9cc

View File

@ -4,9 +4,23 @@ have screen || return
_screen_sessions()
{
COMPREPLY=( $( compgen -W "$( command screen -ls | sed -ne \
's|^\t\{1,\}\([0-9]\{1,\}\.[^\t]\{1,\}\).*'"$1"'.*$|\1|p' )" \
-- "$cur" ) )
local sessions=( $( command screen -ls | sed -ne \
's|^\t\{1,\}\([0-9]\{1,\}\.[^\t]\{1,\}\).*'"$1"'.*$|\1|p' ) )
if [[ $cur == +([0-9])?(.*) ]]; then
# Complete sessions including pid prefixes
COMPREPLY=( $( compgen -W '${sessions[@]}' -- "$cur" ) )
else
# Create unique completions, dropping pids where possible
local -A res
local i tmp
for i in ${sessions[@]}; do
res[${i/#+([0-9])./}]+=" $i"
done
for i in ${!res[@]}; do
[[ ${res[$i]} == \ *\ * ]] && tmp+=" ${res[$i]}" || tmp+=" $i"
done
COMPREPLY=( $( compgen -W '$tmp' -- "$cur" ) )
fi
} &&
_screen()
{