summaryrefslogtreecommitdiff
path: root/Functions/Zle/up-line-or-beginning-search
diff options
context:
space:
mode:
authorOliver Kiddle <opk@users.sourceforge.net>2002-04-04 11:59:08 +0000
committerOliver Kiddle <opk@users.sourceforge.net>2002-04-04 11:59:08 +0000
commit8ce654afb58e1b5fb619144e2eb12142d448976b (patch)
treece1851b7e9f78416bd168f332bc10c0115ff0f1b /Functions/Zle/up-line-or-beginning-search
parent41eb475f9b23ca4309e31bec21809cd23090feb0 (diff)
downloadzsh-8ce654afb58e1b5fb619144e2eb12142d448976b.tar.gz
zsh-8ce654afb58e1b5fb619144e2eb12142d448976b.zip
16933: more sophisticated versions of these functions
Diffstat (limited to 'Functions/Zle/up-line-or-beginning-search')
-rw-r--r--Functions/Zle/up-line-or-beginning-search21
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}