From db048a079267ecea1c0aff5080a027afed16ae46 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Thu, 12 Dec 2013 23:56:53 +0000 Subject: MultiSelectors now transforms the whole selection --- src/editor.cc | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) (limited to 'src/editor.cc') diff --git a/src/editor.cc b/src/editor.cc index b3572333..2e39bacf 100644 --- a/src/editor.cc +++ b/src/editor.cc @@ -282,26 +282,7 @@ struct nothing_selected : public runtime_error void Editor::multi_select(const MultiSelector& selector) { - SelectionList new_selections; - for (auto& sel : m_selections) - { - SelectionList res = selector(*m_buffer, sel); - new_selections.reserve(new_selections.size() + res.size()); - for (auto& new_sel : res) - { - // preserve captures when selectors captures nothing. - if (new_sel.captures().empty()) - new_selections.emplace_back(new_sel.first(), new_sel.last(), - sel.captures()); - else - new_selections.push_back(std::move(new_sel)); - } - } - if (new_selections.empty()) - throw nothing_selected(); - new_selections.set_main_index(new_selections.size() - 1); - new_selections.sort_and_merge_overlapping(); - m_selections = std::move(new_selections); + m_selections = selector(*m_buffer, std::move(m_selections)); check_invariant(); } -- cgit v1.2.3