summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/normal.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/normal.cc b/src/normal.cc
index c856ebe7..1b1f9152 100644
--- a/src/normal.cc
+++ b/src/normal.cc
@@ -603,6 +603,8 @@ void regex_prompt(Context& context, const String prompt, T func)
[=](const String& str, PromptEvent event, Context& context) {
try
{
+ if (event != PromptEvent::Change and context.has_ui())
+ context.ui().info_hide();
context.selections() = selections;
context.input_handler().set_prompt_colors(get_color("Prompt"));
if (event == PromptEvent::Abort)
@@ -622,6 +624,22 @@ void regex_prompt(Context& context, const String prompt, T func)
else
context.input_handler().set_prompt_colors(get_color("Error"));
}
+ catch (std::runtime_error& err)
+ {
+ if (event == PromptEvent::Validate)
+ throw runtime_error("regex error: "_str + err.what());
+ else
+ {
+ context.input_handler().set_prompt_colors(get_color("Error"));
+ if (context.has_ui())
+ {
+ ColorPair col = get_color("Information");
+ CharCoord pos = context.window().dimensions();
+ pos.column -= 1;
+ context.ui().info_show("regex error", err.what(), pos, col, MenuStyle::Prompt);
+ }
+ }
+ }
catch (runtime_error&)
{
context.selections() = selections;