summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-01-19 20:53:15 +0000
committerMaxime Coste <frrrwww@gmail.com>2012-01-19 20:53:15 +0000
commitbb36271ae5e9582a9056ce36ac2085366d8a74f9 (patch)
treed162c0f6688662c1fe5f3943cc14d9145445b5ad
parentce6b4c2cc4b7728a5b5e6952072ad571f58fff74 (diff)
HighlighterGroup: use idvaluemap::complete_id_if in complete_group_id
-rw-r--r--src/highlighter_group.cc9
-rw-r--r--src/highlighter_group.hh13
2 files changed, 10 insertions, 12 deletions
diff --git a/src/highlighter_group.cc b/src/highlighter_group.cc
index 831c9b47..7c7e8411 100644
--- a/src/highlighter_group.cc
+++ b/src/highlighter_group.cc
@@ -44,4 +44,13 @@ CandidateList HighlighterGroup::complete_id(const std::string& prefix,
return m_highlighters.complete_id<str_to_str>(prefix, cursor_pos);
}
+CandidateList HighlighterGroup::complete_group_id(const std::string& prefix,
+ size_t cursor_pos)
+{
+ return m_highlighters.complete_id_if<str_to_str>(
+ prefix, cursor_pos,
+ [](std::pair<std::string, HighlighterFunc>& func)
+ { return func.second.target<HighlighterGroup>() != nullptr; });
+}
+
}
diff --git a/src/highlighter_group.hh b/src/highlighter_group.hh
index 07379a63..1157a48c 100644
--- a/src/highlighter_group.hh
+++ b/src/highlighter_group.hh
@@ -21,18 +21,7 @@ public:
HighlighterGroup& get_group(const std::string& id);
CandidateList complete_id(const std::string& prefix, size_t cursor_pos);
-
- CandidateList complete_group_id(const std::string& prefix, size_t cursor_pos)
- {
- CandidateList all = complete_id(prefix, cursor_pos);
- CandidateList res;
- for (auto& id : all)
- {
- if (m_highlighters.find(id)->second.target<HighlighterGroup>())
- res.push_back(id);
- }
- return res;
- }
+ CandidateList complete_group_id(const std::string& prefix, size_t cursor_pos);
private:
idvaluemap<std::string, HighlighterFunc> m_highlighters;