summaryrefslogtreecommitdiff
path: root/src/highlighter_group.hh
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2017-05-03 19:41:37 +0100
committerMaxime Coste <mawww@kakoune.org>2017-05-07 16:26:14 +0100
commitfa5ae65f3a16abffc9a8cc5b71de41015dc0c2bf (patch)
treeb9d0187d28f4f90b2b422edffa0dbb0067c0f76c /src/highlighter_group.hh
parent55631c8d8ef29f8c48d43410d487b6bfeb37c73b (diff)
Move passes logic to the base Highlighter class
Validate that childs of HighlighterGroup are matching its passes.
Diffstat (limited to 'src/highlighter_group.hh')
-rw-r--r--src/highlighter_group.hh9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/highlighter_group.hh b/src/highlighter_group.hh
index 763fbbb7..12fc07d3 100644
--- a/src/highlighter_group.hh
+++ b/src/highlighter_group.hh
@@ -17,10 +17,7 @@ struct child_not_found : public runtime_error
class HighlighterGroup : public Highlighter
{
public:
- void highlight(const Context& context, HighlightPass pass, DisplayBuffer& display_buffer, BufferRange range) override;
-
- void compute_display_setup(const Context& context, HighlightPass pass,
- DisplaySetup& setup) override;
+ HighlighterGroup(HighlightPass passes) : Highlighter{passes} {}
bool has_children() const override { return true; }
void add_child(HighlighterAndId&& hl) override;
@@ -31,6 +28,9 @@ public:
Completions complete_child(StringView path, ByteCount cursor_pos, bool group) const override;
private:
+ void do_highlight(const Context& context, HighlightPass pass, DisplayBuffer& display_buffer, BufferRange range) override;
+ void do_compute_display_setup(const Context& context, HighlightPass pass, DisplaySetup& setup) override;
+
using HighlighterMap = HashMap<String, std::unique_ptr<Highlighter>, MemoryDomain::Highlight>;
HighlighterMap m_highlighters;
};
@@ -38,6 +38,7 @@ private:
struct DefinedHighlighters : public HighlighterGroup,
public Singleton<DefinedHighlighters>
{
+ DefinedHighlighters() : HighlighterGroup{HighlightPass::All} {}
};
}