diff options
Diffstat (limited to 'Functions/Zle/up-line-or-beginning-search')
-rw-r--r-- | Functions/Zle/up-line-or-beginning-search | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/Functions/Zle/up-line-or-beginning-search b/Functions/Zle/up-line-or-beginning-search index 12f2edaae..22d5183be 100644 --- a/Functions/Zle/up-line-or-beginning-search +++ b/Functions/Zle/up-line-or-beginning-search @@ -1,13 +1,18 @@ # Like up-line-or-search, but uses the whole line prefix up to the # cursor position for searching backwards. -if [[ $LASTWIDGET != $WIDGET ]] +if [[ $LBUFFER == *$'\n'* ]]; then + zle .up-line-or-history + __searching='' +elif [[ -n $PREBUFFER ]] && + zstyle -t ':zle:up-line-or-beginning-search' edit-buffer then - if [[ $LBUFFER == *$'\n'* ]] - then - __last_up_line=up-line-or-history - else - __last_up_line=history-beginning-search-backward - fi + zle .push-line-or-edit +else + [[ $LASTWIDGET = $__searching ]] && CURSOR=$__savecursor + __savecursor=$CURSOR + __searching=$WIDGET + zle .history-beginning-search-backward + zstyle -T ':zle:up-line-or-beginning-search' leave-cursor && + zle .end-of-line fi -zle .${__last_up_line:-beep} |