diff options
Diffstat (limited to 'Functions/Zle')
-rw-r--r-- | Functions/Zle/history-beginning-search-menu | 13 |
1 files changed, 13 insertions, 0 deletions
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 |