#!/usr/local/bin/zsh -f [[ -d $ZTST_testdir/Modules/zsh ]] && module_path=( $ZTST_testdir/Modules ) zmodload -i zsh/zpty setopt extendedglob fpath=( $ZTST_srcdir/../(Completion|Functions)/*~*/CVS(/) ) debug= dump=(-D) code= zsh=${ZSH:-zsh} termcap_ce="$(echotc ce)" while getopts Dd:c:z: opt; do case $opt in D) debug=yes;; d) dump=(-d "$OPTARG");; c) code="$OPTARG";; z) zsh="$OPTARG";; esac done (( OPTIND > 1 )) && shift $(( OPTIND - 1 )) input="$*" tmp=/tmp/comptest.$$ cat <$tmp module_path=( $module_path ) fpath=( $fpath ) stty columns 80 rows 24 LISTMAX=10000000 ZLS_COLORS='no=:fi=:di=:ln=:pi=:so=:bd=:cd=:ex=:mi=:tc=:sp=:lc=:ec=\n:rc=' bindkey -e autoload -U compinit compinit $dump zstyle ":completion:*" group-name "" zstyle ":completion*:messages" format "%d " zstyle ":completion*:descriptions" format "%d " zstyle ":completion*:options" verbose yes zstyle ":completion*:values" verbose yes setopt noalwayslastprompt listrowsfirst completeinword zmodload zsh/complist expand-or-complete-with-report () { print -lr "" zle expand-or-complete print -lr - "\$LBUFFER" "\$RBUFFER" zle clear-screen zle -R } list-choices-with-report () { print -lr "" zle list-choices zle clear-screen zle -R } finish () { print "" sleep 1 exit 0 } zle -N expand-or-complete-with-report zle -N list-choices-with-report zle -N finish bindkey "^I" expand-or-complete-with-report bindkey "^D" list-choices-with-report bindkey "^Z" finish $code End export PS1="" zpty zsh "$zsh" -f zpty -r zsh log1 "**" || { print first prompt doesn\'t appered. exit 1 } zpty -w zsh ". $tmp" zpty -r zsh log2 "**" || { print second prompt doesn\'t appered. exit 1 } rm $tmp zpty -n -w zsh "$input"$'\C-Z' zpty -r zsh log "**" || { print finish widget doesn\'t invoked. exit 1 } if [[ -n "$debug" ]]; then print -lr - "$log" > /tmp/comptest.debug fi logs=(${(s::)log}) shift logs for log in "$logs[@]"; do if [[ "$log" = (#b)*$''(*)$'\r\n'(*)$''* ]]; then print -lr "line: {$match[1]}{$match[2]}" fi while (( ${(N)log#*(#b)(<(??)>(*)|(*)|(*))} )); do log="${log[$mend[1]+1,-1]}" if (( 0 <= $mbegin[2] )); then if [[ $match[2] != TC && $match[3] != \ # ]]; then print -lr "$match[2]:{${match[3]%$termcap_ce}}" fi elif (( 0 <= $mbegin[4] )); then print -lr "DESCRIPTION:{$match[4]}" elif (( 0 <= $mbegin[5] )); then print -lr "MESSAGE:{$match[5]}" fi done done