summaryrefslogtreecommitdiff
path: root/Functions
diff options
context:
space:
mode:
Diffstat (limited to 'Functions')
-rw-r--r--Functions/Zle/history-beginning-search-menu13
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