1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 20:28:11 +00:00

LibGUI+HackStudio: Move syntax highlighting from HackStudio to LibGUI

This patch introduces the GUI::SyntaxHighlighter class, which can be
attached to a GUI::TextEditor to provide syntax highlighting.

The C++ syntax highlighting from HackStudio becomes a new class called
GUI::CppSyntaxHighlighter. This will make it possible to get C++ syntax
highlighting in any app that uses a GUI::TextEditor. :^)

Sidenote: It does feel a bit weird having a C++ lexer in a GUI toolkit
library, and we'll probably end up moving this out to a separate place
as this functionality grows larger.
This commit is contained in:
Andreas Kling 2020-02-07 20:07:15 +01:00
parent 6cf49c23d4
commit bb8e65be41
13 changed files with 277 additions and 170 deletions

View file

@ -42,6 +42,7 @@ class Action;
class Menu;
class Painter;
class ScrollBar;
class SyntaxHighlighter;
class TextEditor
: public ScrollableWidget
@ -133,6 +134,8 @@ public:
void set_cursor(size_t line, size_t column);
void set_cursor(const TextPosition&);
void set_syntax_highlighter(OwnPtr<SyntaxHighlighter>);
protected:
explicit TextEditor(Widget* parent);
explicit TextEditor(Type, Widget* parent);
@ -248,6 +251,8 @@ private:
};
NonnullOwnPtrVector<LineVisualData> m_line_visual_data;
OwnPtr<SyntaxHighlighter> m_highlighter;
};
}