diff options
author | Oliver Kiddle <opk@users.sourceforge.net> | 2002-04-04 11:59:08 +0000 |
---|---|---|
committer | Oliver Kiddle <opk@users.sourceforge.net> | 2002-04-04 11:59:08 +0000 |
commit | 8ce654afb58e1b5fb619144e2eb12142d448976b (patch) | |
tree | ce1851b7e9f78416bd168f332bc10c0115ff0f1b /Functions | |
parent | 41eb475f9b23ca4309e31bec21809cd23090feb0 (diff) | |
download | zsh-8ce654afb58e1b5fb619144e2eb12142d448976b.tar.gz zsh-8ce654afb58e1b5fb619144e2eb12142d448976b.tar.xz zsh-8ce654afb58e1b5fb619144e2eb12142d448976b.zip |
16933: more sophisticated versions of these functions
Diffstat (limited to 'Functions')
-rw-r--r-- | Functions/Zle/down-line-or-beginning-search | 22 | ||||
-rw-r--r-- | Functions/Zle/up-line-or-beginning-search | 21 |
2 files changed, 27 insertions, 16 deletions
diff --git a/Functions/Zle/down-line-or-beginning-search b/Functions/Zle/down-line-or-beginning-search index 881150171..8a8ed8994 100644 --- a/Functions/Zle/down-line-or-beginning-search +++ b/Functions/Zle/down-line-or-beginning-search @@ -1,13 +1,19 @@ # Like down-line-or-search, but uses the whole line prefix up to the # cursor position for searching forwards. -if [[ $LASTWIDGET != $WIDGET ]] +if [[ ${+NUMERIC} -eq 0 && + ( $LASTWIDGET = $__searching || $RBUFFER != *$'\n'* ) ]] then - if [[ $LBUFFER == *$'\n'* ]] - then - __last_down_line=down-line-or-history - else - __last_down_line=history-beginning-search-forward - fi + [[ $LASTWIDGET = $__searching ]] && CURSOR=$__savecursor + __searching=$WIDGET + __savecursor=$CURSOR + if zle .history-beginning-search-forward; then + [[ $RBUFFER = *$'\n'* ]] || + zstyle -T ':zle:down-line-or-beginning-search' leave-cursor && + zle .end-of-line + return + fi + [[ $RBUFFER = *$'\n'* ]] || return fi -zle .${__last_down_line:-beep} +__searching='' +zle .down-line-or-history 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} |