From 80a6fa6af5d6ab1017dafe492343a0a07003cc24 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Fri, 28 Jul 2006 10:21:06 +0000 Subject: 22560: tweak history-beginning-search-menu to clear menu after use --- Functions/Zle/history-beginning-search-menu | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'Functions') diff --git a/Functions/Zle/history-beginning-search-menu b/Functions/Zle/history-beginning-search-menu index 37d3aec17..616cc7d7f 100644 --- a/Functions/Zle/history-beginning-search-menu +++ b/Functions/Zle/history-beginning-search-menu @@ -41,6 +41,10 @@ local -a display local search=$LBUFFER if [[ $WIDGET = *-space* ]]; then + # We need to quote metacharacters in the search string + # since they are otherwise active in the reverse subscript. + # We need to avoid quoting other characters since they aren't + # and just stay quoted, rather annoyingly. search=${search//(#m)[*?#<>]/\\$MATCH/} search=${search// /*} fi @@ -68,7 +72,14 @@ zle -R "Enter digit${${width##1}:+s}:" $display local chars read -k$width chars +# Hmmm... this isn't great. The only way of clearing the display +# appears to be to overwrite it completely. I think that's because +# displaying strings in this way doesn't set the completion list +# properly. +display=(${display//?/ }) + if [[ $chars != [[:digit:]]## || $chars -eq 0 || $chars -gt $n ]]; then + zle -R '' $display return 1 fi @@ -87,3 +98,5 @@ else BUFFER=${matches[$chars]} (( newcursor )) && CURSOR=$newcursor fi + +zle -R '' $display -- cgit 1.4.1