summaryrefslogtreecommitdiff
path: root/src/editor.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2013-12-14 13:21:07 +0000
committerMaxime Coste <frrrwww@gmail.com>2013-12-14 14:38:17 +0000
commitdad27fe1a0d3cf7382675e9fb2c64a0a4f874a59 (patch)
treebcb63fc2186360c8fb27a13b3f24b3e8b689228e /src/editor.cc
parentf53ba0baede2aade92b4267f416bf1a4965064f6 (diff)
Remove simple selectors, always go through a multi selector
Diffstat (limited to 'src/editor.cc')
-rw-r--r--src/editor.cc42
1 files changed, 1 insertions, 41 deletions
diff --git a/src/editor.cc b/src/editor.cc
index f4153122..4f925374 100644
--- a/src/editor.cc
+++ b/src/editor.cc
@@ -235,52 +235,12 @@ void Editor::select(SelectionList selections)
check_invariant();
}
-void Editor::select(const Selector& selector, SelectMode mode)
-{
- if (mode == SelectMode::Append)
- {
- auto& sel = m_selections.main();
- auto res = selector(*m_buffer, sel);
- if (res.captures().empty())
- res.captures() = sel.captures();
- m_selections.push_back(res);
- m_selections.set_main_index(m_selections.size() - 1);
- }
- else if (mode == SelectMode::ReplaceMain)
- {
- auto& sel = m_selections.main();
- auto res = selector(*m_buffer, sel);
- sel.first() = res.first();
- sel.last() = res.last();
- if (not res.captures().empty())
- sel.captures() = std::move(res.captures());
- }
- else
- {
- for (auto& sel : m_selections)
- {
- auto res = selector(*m_buffer, sel);
- if (mode == SelectMode::Extend)
- sel.merge_with(res);
- else
- {
- sel.first() = res.first();
- sel.last() = res.last();
- }
- if (not res.captures().empty())
- sel.captures() = std::move(res.captures());
- }
- }
- m_selections.sort_and_merge_overlapping();
- check_invariant();
-}
-
struct nothing_selected : public runtime_error
{
nothing_selected() : runtime_error("nothing was selected") {}
};
-void Editor::multi_select(const MultiSelector& selector)
+void Editor::select(const MultiSelector& selector)
{
selector(*m_buffer, m_selections);
check_invariant();