emulate -L zsh setopt extendedglob local opt keys integer stat while getopts "k:" opt; do case $opt in (k) keys=$OPTARG ;; (*) return 1 ;; esac done (( OPTIND > 1 )) && shift $(( OPTIND - 1 )) local savelbuffer=$LBUFFER saverbuffer=$RBUFFER local savepredisplay=$PREDISPLAY savepostdisplay=$POSTDISPLAY LBUFFER= RBUFFER= PREDISPLAY="$PREDISPLAY$savelbuffer$saverbuffer$POSTDISPLAY ${1:-? }" POSTDISPLAY= if [[ -n $keys ]]; then zle -R read -k $keys stat=$? else zle recursive-edit stat=$? (( stat )) || REPLY=$BUFFER fi LBUFFER=$savelbuffer RBUFFER=$saverbuffer PREDISPLAY=$savepredisplay POSTDISPLAY=$savepostdisplay return $stat