/* * Copyright (c) 2020, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #include "CellSyntaxHighlighter.h" #include #include #include 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 {}, 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 } }; 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() { } }