From 682e4faff0bacd9450ef1b859e38aade5eb550b3 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Wed, 20 Feb 2013 14:04:46 +0100 Subject: [PATCH] select and split operations use the search pattern register --- src/main.cc | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) 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)); + } }); }