mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 08:48:11 +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
|
@ -32,7 +32,7 @@
|
|||
|
||||
namespace GUI {
|
||||
|
||||
static Syntax::TextStyle style_for_token_type(Gfx::Palette palette, GMLToken::Type type)
|
||||
static Syntax::TextStyle style_for_token_type(const Gfx::Palette& palette, GMLToken::Type type)
|
||||
{
|
||||
switch (type) {
|
||||
case GMLToken::Type::LeftCurly:
|
||||
|
@ -61,8 +61,7 @@ bool GMLSyntaxHighlighter::is_identifier(void* token) const
|
|||
|
||||
void GMLSyntaxHighlighter::rehighlight(Gfx::Palette palette)
|
||||
{
|
||||
ASSERT(m_editor);
|
||||
auto text = m_editor->text();
|
||||
auto text = m_client->get_text();
|
||||
GMLLexer lexer(text);
|
||||
auto tokens = lexer.lex();
|
||||
|
||||
|
@ -78,12 +77,12 @@ void GMLSyntaxHighlighter::rehighlight(Gfx::Palette palette)
|
|||
span.data = reinterpret_cast<void*>(token.m_type);
|
||||
spans.append(span);
|
||||
}
|
||||
m_editor->document().set_spans(spans);
|
||||
m_client->do_set_spans(move(spans));
|
||||
|
||||
m_has_brace_buddies = false;
|
||||
highlight_matching_token_pair();
|
||||
|
||||
m_editor->update();
|
||||
m_client->do_update();
|
||||
}
|
||||
|
||||
Vector<GMLSyntaxHighlighter::MatchingTokenPair> GMLSyntaxHighlighter::matching_token_pairs() const
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue