mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:47:45 +00:00
LibSyntax+LibGUI+LibJS: Move JS syntax highlighter to LibJS
This is a little bit messy but the basic idea is: Syntax::Highlighter now has a Syntax::HighlighterClient to talk to the outside world. It mostly communicates in LibGUI primitives that are available in headers, so inlineable. GUI::TextEditor inherits from Syntax::HighlighterClient. This let us to move GUI::JSSyntaxHighlighter to JS::SyntaxHighlighter and remove LibGUI's dependency on LibJS.
This commit is contained in:
parent
22baa5e64f
commit
ddbf20ecf6
23 changed files with 139 additions and 80 deletions
|
@ -37,13 +37,15 @@
|
|||
#include <LibGUI/TextRange.h>
|
||||
#include <LibGfx/TextAlignment.h>
|
||||
#include <LibSyntax/Forward.h>
|
||||
#include <LibSyntax/HighlighterClient.h>
|
||||
|
||||
namespace GUI {
|
||||
|
||||
class TextEditor
|
||||
: public ScrollableWidget
|
||||
, public TextDocument::Client {
|
||||
C_OBJECT(TextEditor)
|
||||
, public TextDocument::Client
|
||||
, public Syntax::HighlighterClient {
|
||||
C_OBJECT(TextEditor);
|
||||
|
||||
public:
|
||||
enum Type {
|
||||
|
@ -241,6 +243,16 @@ private:
|
|||
virtual void document_did_set_text() override;
|
||||
virtual void document_did_set_cursor(const TextPosition&) override;
|
||||
|
||||
// ^Syntax::HighlighterClient
|
||||
virtual Vector<TextDocumentSpan>& spans() final { return document().spans(); }
|
||||
virtual const Vector<TextDocumentSpan>& spans() const final { return document().spans(); }
|
||||
virtual void highlighter_did_set_spans(Vector<TextDocumentSpan> spans) { document().set_spans(move(spans)); }
|
||||
virtual void set_span_at_index(size_t index, TextDocumentSpan span) final { document().set_span_at_index(index, move(span)); }
|
||||
virtual void highlighter_did_request_update() final { update(); }
|
||||
virtual String highlighter_did_request_text() const final { return text(); }
|
||||
virtual GUI::TextDocument& highlighter_did_request_document() final { return document(); }
|
||||
virtual GUI::TextPosition highlighter_did_request_cursor() const final { return m_cursor; }
|
||||
|
||||
void create_actions();
|
||||
void paint_ruler(Painter&);
|
||||
void update_content_size();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue