class EE::UI::Doc::SyntaxHighlighter

#include <syntaxhighlighter.hpp>

class SyntaxHighlighter {
public:
    // construction

    SyntaxHighlighter(TextDocument* doc);
    ~SyntaxHighlighter();

    // methods

    void changeDoc(TextDocument* doc);
    void reset();
    void invalidate(Int64 lineIndex);
    const std::vector<SyntaxTokenPosition>& getLine(const size_t& index, bool mustTokenize = true);
    Int64 getFirstInvalidLine() const;
    Int64 getMaxWantedLine() const;
    bool updateDirty(int visibleLinesCount = 40);
    const SyntaxDefinition& getSyntaxDefinitionFromTextPosition(const TextPosition& position);
    SyntaxStyleType getTokenTypeAt(const TextPosition& pos);
    SyntaxTokenPosition getTokenPositionAt(const TextPosition& pos);
    void setLine(const size_t& line, const TokenizedLine& tokenization);
    void mergeLine(const size_t& line, const TokenizedLine& tokenization);
    TokenizedLine tokenizeLine(const size_t& line, const SyntaxState& state = SyntaxState{});
    Mutex& getLinesMutex();
    void moveHighlight(const Int64& fromLine, const Int64& numLines);
    Uint64 getTokenizedLineSignature(const size_t& index);
    const Int64& getMaxTokenizationLength() const;
    void setMaxTokenizationLength(const Int64& maxTokenizationLength);
    void tokenizeAsync(std::shared_ptr<ThreadPool> pool, const std::function<void()>& onDone = {});
    bool isTokenizingAsync() const;
    void setStopTokenizingAsync();
};