2011-11-29 23:37:20 +01:00
|
|
|
#ifndef highlighter_hh_INCLUDED
|
|
|
|
#define highlighter_hh_INCLUDED
|
|
|
|
|
2013-04-09 20:05:40 +02:00
|
|
|
#include "function_group.hh"
|
|
|
|
#include "function_registry.hh"
|
|
|
|
#include "memoryview.hh"
|
2012-11-23 13:40:20 +01:00
|
|
|
#include "string.hh"
|
|
|
|
#include "utils.hh"
|
2013-04-09 20:05:40 +02:00
|
|
|
|
|
|
|
#include <functional>
|
2011-11-29 23:37:20 +01:00
|
|
|
|
|
|
|
namespace Kakoune
|
|
|
|
{
|
|
|
|
|
|
|
|
class DisplayBuffer;
|
2012-11-23 13:40:20 +01:00
|
|
|
class Window;
|
2011-11-29 23:37:20 +01:00
|
|
|
|
2012-01-11 15:21:58 +01:00
|
|
|
// 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)
|
|
|
|
|
2013-05-23 13:39:00 +02:00
|
|
|
typedef std::function<void (const Window& window, DisplayBuffer& display_buffer)> HighlighterFunc;
|
2012-04-14 03:17:09 +02:00
|
|
|
typedef std::pair<String, HighlighterFunc> HighlighterAndId;
|
|
|
|
typedef memoryview<String> HighlighterParameters;
|
2012-01-15 14:44:16 +01:00
|
|
|
|
2013-03-06 14:17:28 +01:00
|
|
|
using HighlighterFactory = std::function<HighlighterAndId (const HighlighterParameters& params,
|
2013-03-31 13:52:15 +02:00
|
|
|
Window& window)>;
|
2012-11-23 13:40:20 +01:00
|
|
|
|
2013-05-23 13:39:00 +02:00
|
|
|
using HighlighterGroup = FunctionGroup<const Window&, DisplayBuffer&>;
|
2013-03-27 13:41:41 +01:00
|
|
|
|
2012-11-23 13:40:20 +01:00
|
|
|
struct HighlighterRegistry : FunctionRegistry<HighlighterFactory>,
|
|
|
|
Singleton<HighlighterRegistry>
|
|
|
|
{};
|
2011-11-29 23:37:20 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // highlighter_hh_INCLUDED
|