123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /*
- * Copyright (c) 2020, the SerenityOS developers.
- *
- * SPDX-License-Identifier: BSD-2-Clause
- */
- #include "CellSyntaxHighlighter.h"
- #include <LibGUI/TextEditor.h>
- #include <LibGfx/Palette.h>
- #include <LibJS/Lexer.h>
- namespace Spreadsheet {
- void CellSyntaxHighlighter::rehighlight(const Palette& palette)
- {
- auto text = m_client->get_text();
- m_client->spans().clear();
- if (!text.starts_with('=')) {
- m_client->do_update();
- return;
- }
- JS::SyntaxHighlighter::rehighlight(palette);
- // Highlight the '='
- m_client->spans().empend(
- GUI::TextRange { { 0, 0 }, { 0, 1 } },
- Gfx::TextAttributes {
- palette.syntax_keyword(),
- Optional<Color> {},
- false,
- false,
- },
- (u64)-1,
- false);
- if (m_cell && m_cell->exception()) {
- auto& traceback = m_cell->exception()->traceback();
- auto& range = traceback.first().source_range;
- GUI::TextRange text_range { { range.start.line - 1, range.start.column }, { range.end.line - 1, range.end.column - 1 } };
- m_client->spans().prepend(
- GUI::TextDocumentSpan {
- text_range,
- Gfx::TextAttributes {
- Color::Black,
- Color::Red,
- false,
- false,
- },
- (u64)-1,
- false });
- }
- m_client->do_update();
- }
- CellSyntaxHighlighter::~CellSyntaxHighlighter()
- {
- }
- }
|