diff --git a/Applications/Spreadsheet/CellSyntaxHighlighter.cpp b/Applications/Spreadsheet/CellSyntaxHighlighter.cpp index 8a3c0a5688..f2202f1d85 100644 --- a/Applications/Spreadsheet/CellSyntaxHighlighter.cpp +++ b/Applications/Spreadsheet/CellSyntaxHighlighter.cpp @@ -53,6 +53,19 @@ void CellSyntaxHighlighter::rehighlight(Gfx::Palette palette) false, false, nullptr); + + if (m_cell && m_cell->exception()) { + auto range = m_cell->exception()->source_ranges().first(); + GUI::TextRange text_range { { range.start.line - 1, range.start.column }, { range.end.line - 1, range.end.column - 1 } }; + m_editor->document().spans().prepend({ text_range, + Color::Black, + Color::Red, + false, + false, + false, + nullptr }); + } + m_editor->update(); } CellSyntaxHighlighter::~CellSyntaxHighlighter() diff --git a/Applications/Spreadsheet/CellSyntaxHighlighter.h b/Applications/Spreadsheet/CellSyntaxHighlighter.h index 4c42630b97..f02f7e2bbb 100644 --- a/Applications/Spreadsheet/CellSyntaxHighlighter.h +++ b/Applications/Spreadsheet/CellSyntaxHighlighter.h @@ -26,6 +26,7 @@ #pragma once +#include "Cell.h" #include #include @@ -37,6 +38,10 @@ public: virtual ~CellSyntaxHighlighter() override; virtual void rehighlight(Gfx::Palette) override; + void set_cell(const Cell* cell) { m_cell = cell; } + +private: + const Cell* m_cell { nullptr }; }; } diff --git a/Applications/Spreadsheet/SpreadsheetWidget.cpp b/Applications/Spreadsheet/SpreadsheetWidget.cpp index 6e94ed4093..fc78f578da 100644 --- a/Applications/Spreadsheet/SpreadsheetWidget.cpp +++ b/Applications/Spreadsheet/SpreadsheetWidget.cpp @@ -142,6 +142,7 @@ void SpreadsheetWidget::setup_tabs(NonnullRefPtrVector new_sheets) update(); }; m_cell_value_editor->set_enabled(true); + static_cast(const_cast(m_cell_value_editor->syntax_highlighter()))->set_cell(&cell); return; } @@ -169,9 +170,11 @@ void SpreadsheetWidget::setup_tabs(NonnullRefPtrVector new_sheets) } }; m_cell_value_editor->set_enabled(true); + static_cast(const_cast(m_cell_value_editor->syntax_highlighter()))->set_cell(cells.first()); }; m_selected_view->on_selection_dropped = [&]() { m_cell_value_editor->set_enabled(false); + static_cast(const_cast(m_cell_value_editor->syntax_highlighter()))->set_cell(nullptr); m_cell_value_editor->set_text(""); m_current_cell_label->set_enabled(false); m_current_cell_label->set_text("");