Serenity Operating System
at master 45 lines 1.8 kB view raw
1/* 2 * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/DeprecatedString.h> 10#include <AK/Vector.h> 11#include <LibGUI/TextDocument.h> 12#include <LibGUI/TextPosition.h> 13 14namespace Syntax { 15 16class HighlighterClient { 17public: 18 virtual ~HighlighterClient() = default; 19 20 virtual Vector<GUI::TextDocumentSpan>& spans() = 0; 21 virtual Vector<GUI::TextDocumentSpan> const& spans() const = 0; 22 virtual void set_span_at_index(size_t index, GUI::TextDocumentSpan span) = 0; 23 24 virtual Vector<GUI::TextDocumentFoldingRegion>& folding_regions() = 0; 25 virtual Vector<GUI::TextDocumentFoldingRegion> const& folding_regions() const = 0; 26 27 virtual DeprecatedString highlighter_did_request_text() const = 0; 28 virtual void highlighter_did_request_update() = 0; 29 virtual GUI::TextDocument& highlighter_did_request_document() = 0; 30 virtual GUI::TextPosition highlighter_did_request_cursor() const = 0; 31 virtual void highlighter_did_set_spans(Vector<GUI::TextDocumentSpan>) = 0; 32 virtual void highlighter_did_set_folding_regions(Vector<GUI::TextDocumentFoldingRegion>) = 0; 33 34 void do_set_spans(Vector<GUI::TextDocumentSpan> spans) { highlighter_did_set_spans(move(spans)); } 35 void do_set_folding_regions(Vector<GUI::TextDocumentFoldingRegion> folding_regions) { highlighter_did_set_folding_regions(move(folding_regions)); } 36 void do_update() { highlighter_did_request_update(); } 37 38 DeprecatedString get_text() const { return highlighter_did_request_text(); } 39 GUI::TextDocument& get_document() { return highlighter_did_request_document(); } 40 GUI::TextPosition get_cursor() const { return highlighter_did_request_cursor(); } 41 42 static constexpr auto span_collection_index = 0; 43}; 44 45}