Support Append mode for Editor::select and use it for 'N' key

This commit is contained in:
Maxime Coste 2012-10-10 13:57:52 +02:00
parent 4c8b4890e6
commit 5bb37ad755
2 changed files with 11 additions and 1 deletions

View File

@ -174,6 +174,16 @@ void Editor::select(const Selector& selector, SelectMode mode)
{
check_invariant();
if (mode == SelectMode::Append)
{
auto& sel = m_selections.back();
SelectionAndCaptures res = selector(sel.selection);
if (res.captures.empty())
res.captures = sel.captures;
m_selections.push_back(res);
return;
}
for (auto& sel : m_selections)
{
SelectionAndCaptures res = selector(sel.selection);

View File

@ -411,7 +411,7 @@ std::unordered_map<Key, std::function<void (Context& context)>> keymap =
{ { Key::Modifiers::None, '/' }, do_search<SelectMode::Replace> },
{ { Key::Modifiers::None, '?' }, do_search<SelectMode::Extend> },
{ { Key::Modifiers::None, 'n' }, do_search_next<SelectMode::Replace> },
{ { Key::Modifiers::None, 'N' }, do_search_next<SelectMode::Extend> },
{ { Key::Modifiers::None, 'N' }, do_search_next<SelectMode::Append> },
{ { Key::Modifiers::None, 'u' }, repeated([](Context& context) { if (not context.editor().undo()) { context.print_status("nothing left to undo"); } }) },
{ { Key::Modifiers::None, 'U' }, repeated([](Context& context) { if (not context.editor().redo()) { context.print_status("nothing left to redo"); } }) },