/
highlighter_group.hh
42 lines (31 loc) · 1.05 KB
/
highlighter_group.hh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifndef highlighter_group_hh_INCLUDED
#define highlighter_group_hh_INCLUDED
#include "exception.hh"
#include "id_map.hh"
#include "highlighter.hh"
#include "utils.hh"
namespace Kakoune
{
struct child_not_found : public runtime_error
{
using runtime_error::runtime_error;
};
class HighlighterGroup : public Highlighter
{
public:
void highlight(const Context& context, HighlightFlags flags, DisplayBuffer& display_buffer, BufferRange range) override;
bool has_children() const override { return true; }
void add_child(HighlighterAndId&& hl) override;
void remove_child(StringView id) override;
Highlighter& get_child(StringView path) override;
Completions complete_child(StringView path, ByteCount cursor_pos, bool group) const override;
private:
using HighlighterMap = IdMap<std::unique_ptr<Highlighter>, MemoryDomain::Highlight>;
HighlighterMap m_highlighters;
};
struct DefinedHighlighters : public HighlighterGroup,
public Singleton<DefinedHighlighters>
{
};
}
#endif // highlighter_group_hh_INCLUDED