Move SelectMode enum as an implementation detail in normal.cc
This commit is contained in:
parent
39b43f4c3c
commit
eb81eef03e
|
@ -12,14 +12,6 @@ namespace InputModes { class Insert; }
|
||||||
|
|
||||||
class Register;
|
class Register;
|
||||||
|
|
||||||
enum class SelectMode
|
|
||||||
{
|
|
||||||
Replace,
|
|
||||||
Extend,
|
|
||||||
Append,
|
|
||||||
ReplaceMain,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class InsertMode : unsigned
|
enum class InsertMode : unsigned
|
||||||
{
|
{
|
||||||
Insert,
|
Insert,
|
||||||
|
|
|
@ -22,6 +22,14 @@ namespace Kakoune
|
||||||
|
|
||||||
using namespace std::placeholders;
|
using namespace std::placeholders;
|
||||||
|
|
||||||
|
enum class SelectMode
|
||||||
|
{
|
||||||
|
Replace,
|
||||||
|
Extend,
|
||||||
|
Append,
|
||||||
|
ReplaceMain,
|
||||||
|
};
|
||||||
|
|
||||||
template<SelectMode mode, typename T>
|
template<SelectMode mode, typename T>
|
||||||
class Select
|
class Select
|
||||||
{
|
{
|
||||||
|
@ -360,6 +368,30 @@ void pipe(Context& context, int)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<Direction direction, SelectMode mode>
|
||||||
|
void select_next_match(const Buffer& buffer, SelectionList& selections,
|
||||||
|
const Regex& regex)
|
||||||
|
{
|
||||||
|
if (mode == SelectMode::Replace)
|
||||||
|
{
|
||||||
|
for (auto& sel : selections)
|
||||||
|
sel = find_next_match<direction>(buffer, sel, regex);
|
||||||
|
}
|
||||||
|
if (mode == SelectMode::Extend)
|
||||||
|
{
|
||||||
|
for (auto& sel : selections)
|
||||||
|
sel.merge_with(find_next_match<direction>(buffer, sel, regex));
|
||||||
|
}
|
||||||
|
else if (mode == SelectMode::ReplaceMain)
|
||||||
|
selections.main() = find_next_match<direction>(buffer, selections.main(), regex);
|
||||||
|
else if (mode == SelectMode::Append)
|
||||||
|
{
|
||||||
|
selections.push_back(find_next_match<direction>(buffer, selections.main(), regex));
|
||||||
|
selections.set_main_index(selections.size() - 1);
|
||||||
|
}
|
||||||
|
selections.sort_and_merge_overlapping();
|
||||||
|
}
|
||||||
|
|
||||||
template<SelectMode mode, Direction direction>
|
template<SelectMode mode, Direction direction>
|
||||||
void search(Context& context, int)
|
void search(Context& context, int)
|
||||||
{
|
{
|
||||||
|
|
|
@ -266,30 +266,6 @@ Selection find_next_match(const Buffer& buffer, const Selection& sel, const Rege
|
||||||
return {begin.coord(), end.coord(), std::move(captures)};
|
return {begin.coord(), end.coord(), std::move(captures)};
|
||||||
}
|
}
|
||||||
|
|
||||||
template<Direction direction, SelectMode mode>
|
|
||||||
void select_next_match(const Buffer& buffer, SelectionList& selections,
|
|
||||||
const Regex& regex)
|
|
||||||
{
|
|
||||||
if (mode == SelectMode::Replace)
|
|
||||||
{
|
|
||||||
for (auto& sel : selections)
|
|
||||||
sel = find_next_match<direction>(buffer, sel, regex);
|
|
||||||
}
|
|
||||||
if (mode == SelectMode::Extend)
|
|
||||||
{
|
|
||||||
for (auto& sel : selections)
|
|
||||||
sel.merge_with(find_next_match<direction>(buffer, sel, regex));
|
|
||||||
}
|
|
||||||
else if (mode == SelectMode::ReplaceMain)
|
|
||||||
selections.main() = find_next_match<direction>(buffer, selections.main(), regex);
|
|
||||||
else if (mode == SelectMode::Append)
|
|
||||||
{
|
|
||||||
selections.push_back(find_next_match<direction>(buffer, selections.main(), regex));
|
|
||||||
selections.set_main_index(selections.size() - 1);
|
|
||||||
}
|
|
||||||
selections.sort_and_merge_overlapping();
|
|
||||||
}
|
|
||||||
|
|
||||||
void select_all_matches(const Buffer& buffer, SelectionList& selections,
|
void select_all_matches(const Buffer& buffer, SelectionList& selections,
|
||||||
const Regex& regex);
|
const Regex& regex);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user