Slightly more performant regex capture gathering in select_all_matches
This commit is contained in:
parent
6840f7ce9c
commit
12abb54a88
|
@ -570,6 +570,7 @@ void select_all_matches(SelectionList& selections, const Regex& regex)
|
||||||
RegexIt re_it(buffer.iterator_at(sel.min()), sel_end, regex);
|
RegexIt re_it(buffer.iterator_at(sel.min()), sel_end, regex);
|
||||||
RegexIt re_end;
|
RegexIt re_end;
|
||||||
|
|
||||||
|
const unsigned mark_count = regex.mark_count();
|
||||||
for (; re_it != re_end; ++re_it)
|
for (; re_it != re_end; ++re_it)
|
||||||
{
|
{
|
||||||
auto begin = ensure_char_start(buffer, (*re_it)[0].first);
|
auto begin = ensure_char_start(buffer, (*re_it)[0].first);
|
||||||
|
@ -578,8 +579,10 @@ void select_all_matches(SelectionList& selections, const Regex& regex)
|
||||||
auto end = ensure_char_start(buffer, (*re_it)[0].second);
|
auto end = ensure_char_start(buffer, (*re_it)[0].second);
|
||||||
|
|
||||||
CaptureList captures;
|
CaptureList captures;
|
||||||
|
captures.reserve(mark_count);
|
||||||
for (auto& match : *re_it)
|
for (auto& match : *re_it)
|
||||||
captures.emplace_back(match.first, match.second);
|
captures.push_back(buffer.string(match.first.coord(),
|
||||||
|
match.second.coord()));
|
||||||
|
|
||||||
result.push_back(
|
result.push_back(
|
||||||
keep_direction({ begin.coord(),
|
keep_direction({ begin.coord(),
|
||||||
|
|
Loading…
Reference in New Issue
Block a user