summaryrefslogtreecommitdiff
path: root/src/filter.hh
blob: f1b11ca0a94c8b83e3a72b4616c9f9bcf0c28541 (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
#ifndef filter_hh_INCLUDED
#define filter_hh_INCLUDED

#include <functional>

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

namespace Kakoune
{

class Buffer;
class Selection;

// A Filter is a function which is applied to a Buffer and a pending
// Modification in order to mutate the Buffer or the Modification
// prior to it's application.

using FilterFunc = std::function<void (Buffer& buffer, Selection& selection, String& content)>;
using FilterAndId = std::pair<String, FilterFunc>;

using FilterParameters = memoryview<String>;
using FilterFactory = std::function<FilterAndId (const FilterParameters& params)>;

struct FilterRegistry : FunctionRegistry<FilterFactory>,
                        Singleton<FilterRegistry>
{};

}

#endif // filter_hh_INCLUDED