summaryrefslogtreecommitdiff
path: root/src/highlighter.hh
blob: 926224d2a6b9f883640433fe5d067b7786f8edc1 (plain)
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
#ifndef highlighter_hh_INCLUDED
#define highlighter_hh_INCLUDED

#include <functional>

#include "string.hh"
#include "utils.hh"
#include "memoryview.hh"
#include "function_registry.hh"

namespace Kakoune
{

class DisplayBuffer;
class Window;

// An Highlighter is a function which mutates a DisplayBuffer in order to
// change the visual representation of a file. It could be changing text
// color, adding information text (line numbering for example) or replacing
// buffer content (folding for example)

typedef std::function<void (DisplayBuffer& display_buffer)> HighlighterFunc;
typedef std::pair<String, HighlighterFunc> HighlighterAndId;
typedef memoryview<String> HighlighterParameters;

using HighlighterFactory = std::function<HighlighterAndId (Window& window,
                                                           const HighlighterParameters& params)>;

struct HighlighterRegistry : FunctionRegistry<HighlighterFactory>,
                             Singleton<HighlighterRegistry>
{};

}

#endif // highlighter_hh_INCLUDED