diff --git a/src/main.cc b/src/main.cc index dcc18a68..7102b853 100644 --- a/src/main.cc +++ b/src/main.cc @@ -269,18 +269,34 @@ void do_paste(Context& context) void do_select_regex(Context& context) { context.input_handler().prompt("select: ", complete_nothing, - [](const String& ex, PromptEvent event, Context& context) { - if (event == PromptEvent::Validate and not ex.empty()) - context.editor().multi_select(std::bind(select_all_matches, _1, ex)); + [](const String& str, PromptEvent event, Context& context) { + if (event == PromptEvent::Validate) + { + String ex = str; + if (ex.empty()) + ex = RegisterManager::instance()['/'].values(context)[0]; + else + RegisterManager::instance()['/'] = ex; + if (not ex.empty()) + context.editor().multi_select(std::bind(select_all_matches, _1, ex)); + } }); } void do_split_regex(Context& context) { context.input_handler().prompt("split: ", complete_nothing, - [](const String& ex, PromptEvent event, Context& context) { - if (event == PromptEvent::Validate and not ex.empty()) - context.editor().multi_select(std::bind(split_selection, _1, ex)); + [](const String& str, PromptEvent event, Context& context) { + if (event == PromptEvent::Validate) + { + String ex = str; + if (ex.empty()) + ex = RegisterManager::instance()['/'].values(context)[0]; + else + RegisterManager::instance()['/'] = ex; + if (not ex.empty()) + context.editor().multi_select(std::bind(split_selection, _1, ex)); + } }); }