summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2016-10-01 14:12:21 +0100
committerMaxime Coste <frrrwww@gmail.com>2016-10-01 14:12:21 +0100
commit4b6d4ec8ebf944415b648bdfc9e447a7df49be05 (patch)
tree32c57c782260b779bc6fd6808649c704e2afa726 /src
parent1b9c8b9cf2ff0e91005abab01420c61ec5f2e084 (diff)
Small refactoring in highlighters.cc
Diffstat (limited to 'src')
-rw-r--r--src/highlighters.cc25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/highlighters.cc b/src/highlighters.cc
index 13bbbdc5..b3e3f563 100644
--- a/src/highlighters.cc
+++ b/src/highlighters.cc
@@ -1191,6 +1191,7 @@ struct RegionMatches
struct RegionDesc
{
+ String m_name;
Regex m_begin;
Regex m_end;
Regex m_recurse;
@@ -1219,9 +1220,9 @@ struct RegionDesc
struct RegionsHighlighter : public Highlighter
{
public:
- using NamedRegionDescList = Vector<std::pair<String, RegionDesc>, MemoryDomain::Highlight>;
+ using RegionDescList = Vector<RegionDesc, MemoryDomain::Highlight>;
- RegionsHighlighter(NamedRegionDescList regions, String default_group)
+ RegionsHighlighter(RegionDescList regions, String default_group)
: m_regions{std::move(regions)}, m_default_group{std::move(default_group)}
{
if (m_regions.empty())
@@ -1229,8 +1230,8 @@ public:
for (auto& region : m_regions)
{
- m_groups.append({region.first, HighlighterGroup{}});
- if (region.second.m_begin.empty() or region.second.m_end.empty())
+ m_groups.append({region.m_name, HighlighterGroup{}});
+ if (region.m_begin.empty() or region.m_end.empty())
throw runtime_error("invalid regex for region highlighter");
}
if (not m_default_group.empty())
@@ -1324,7 +1325,7 @@ public:
if ((parser.positional_count() % 4) != 1)
throw runtime_error("wrong parameter count, expect <id> (<group name> <begin> <end> <recurse>)+");
- RegionsHighlighter::NamedRegionDescList regions;
+ RegionsHighlighter::RegionDescList regions;
for (size_t i = 1; i < parser.positional_count(); i += 4)
{
if (parser[i].empty() or parser[i+1].empty() or parser[i+2].empty())
@@ -1336,7 +1337,7 @@ public:
if (not parser[i+3].empty())
recurse = Regex{parser[i+3], Regex::nosubs | Regex::optimize };
- regions.push_back({ parser[i], {std::move(begin), std::move(end), std::move(recurse)} });
+ regions.push_back({ parser[i], std::move(begin), std::move(end), std::move(recurse) });
}
auto default_group = parser.get_switch("default").value_or(StringView{}).str();
@@ -1344,7 +1345,7 @@ public:
}
private:
- const NamedRegionDescList m_regions;
+ const RegionDescList m_regions;
const String m_default_group;
IdMap<HighlighterGroup, MemoryDomain::Highlight> m_groups;
@@ -1392,13 +1393,13 @@ private:
{
cache.matches.resize(m_regions.size());
for (size_t i = 0; i < m_regions.size(); ++i)
- cache.matches[i] = m_regions[i].second.find_matches(buffer);
+ cache.matches[i] = m_regions[i].find_matches(buffer);
}
else
{
auto modifs = compute_line_modifications(buffer, cache.timestamp);
for (size_t i = 0; i < m_regions.size(); ++i)
- m_regions[i].second.update_matches(buffer, modifs, cache.matches[i]);
+ m_regions[i].update_matches(buffer, modifs, cache.matches[i]);
}
cache.regions.clear();
@@ -1415,7 +1416,7 @@ private:
begin != end; )
{
const RegionMatches& matches = cache.matches[begin.first];
- auto& named_region = m_regions[begin.first];
+ auto& region = m_regions[begin.first];
auto beg_it = begin.second;
auto end_it = matches.find_matching_end(beg_it->end_coord());
@@ -1423,14 +1424,14 @@ private:
{
regions.push_back({ {beg_it->line, beg_it->begin},
range.end,
- named_region.first });
+ region.m_name });
break;
}
else
{
regions.push_back({ beg_it->begin_coord(),
end_it->end_coord(),
- named_region.first });
+ region.m_name });
auto end_coord = end_it->end_coord();
// With empty begin and end matches (for example if the regexes