1
1
mirror of https://github.com/mawww/kakoune.git synced 2024-12-21 02:21:32 +03:00
kakoune/src/highlighter_registry.cc
Maxime Coste 0ce6bd9bf5 use ByteCount instead of CharCount when we are really counting bytes
(that is most of the time when we are not concerned with displaying)
2012-10-11 00:41:48 +02:00

42 lines
1.2 KiB
C++

#include "highlighter_registry.hh"
#include "exception.hh"
#include "window.hh"
#include "highlighters.hh"
namespace Kakoune
{
struct factory_not_found : public runtime_error
{
factory_not_found(const String& name)
: runtime_error("highlighter factory not found '" + name + "'") {}
};
void HighlighterRegistry::register_factory(const String& name,
const HighlighterFactory& factory)
{
assert(not m_factories.contains(name));
m_factories.append(std::make_pair(name, factory));
}
void HighlighterRegistry::add_highlighter_to_group(Window& window,
HighlighterGroup& group,
const String& name,
const HighlighterParameters& parameters)
{
auto it = m_factories.find(name);
if (it == m_factories.end())
throw factory_not_found(name);
group.append(it->second(window, parameters));
}
CandidateList HighlighterRegistry::complete_highlighter(const String& prefix,
ByteCount cursor_pos)
{
return m_factories.complete_id(prefix, cursor_pos);
}
}