diff options
Diffstat (limited to 'Functions/Zle/read-from-minibuffer')
-rw-r--r-- | Functions/Zle/read-from-minibuffer | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/Functions/Zle/read-from-minibuffer b/Functions/Zle/read-from-minibuffer index 93eec42a5..6af7f2a39 100644 --- a/Functions/Zle/read-from-minibuffer +++ b/Functions/Zle/read-from-minibuffer @@ -1,3 +1,22 @@ +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 @@ -7,10 +26,15 @@ PREDISPLAY="$PREDISPLAY$savelbuffer$saverbuffer$POSTDISPLAY ${1:-? }" POSTDISPLAY= -zle recursive-edit -integer stat=$? - -(( stat )) || REPLY=$BUFFER +if [[ -n $keys ]]; then + zle -R + read -k $keys + stat=$? +else + zle recursive-edit + stat=$? + (( stat )) || REPLY=$BUFFER +fi LBUFFER=$savelbuffer RBUFFER=$saverbuffer |