From 6a5515e276d88e7115f3e75ae0eb0446cae50a45 Mon Sep 17 00:00:00 2001 From: Ritchie Cunningham Date: Fri, 24 Oct 2025 17:52:39 +0100 Subject: [PATCH] [Fix] Only apply tokenization to editor. --- client/src/terminal.cpp | 2 +- client/src/ui/editor.cpp | 4 ++-- client/src/ui/text_view.cpp | 34 ++++++++++++++++++++-------------- client/src/ui/text_view.h | 3 ++- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/client/src/terminal.cpp b/client/src/terminal.cpp index 5c7fe3b..b2a8a4c 100644 --- a/client/src/terminal.cpp +++ b/client/src/terminal.cpp @@ -15,7 +15,7 @@ Terminal::Terminal(GameState* game_state) : _game_state(game_state), _should_close(false), _command_history_index(0), _scroll_offset(0), _prompt(""), _pending_action({ActionType::NONE}), _session_id(0) { - _input_view = std::make_unique(&_input_buffer, false, false); + _input_view = std::make_unique(&_input_buffer, false, false, false); } Terminal::~Terminal(void) {} diff --git a/client/src/ui/editor.cpp b/client/src/ui/editor.cpp index 093beca..b05d614 100644 --- a/client/src/ui/editor.cpp +++ b/client/src/ui/editor.cpp @@ -8,7 +8,7 @@ Editor::Editor(void) : _should_close(false), _pending_action({ActionType::NONE}), _filename("untitled.txt") { - _view = std::make_unique(&_buffer, true, true); + _view = std::make_unique(&_buffer, true, true, true); _menu_bar = std::make_unique(25); _menu_bar->add_menu("File"); _menu_bar->add_menu_item("File", "Save", [this]() { @@ -19,7 +19,7 @@ Editor::Editor(void) Editor::Editor(const std::string& filename) : _should_close(false), _pending_action({ActionType::NONE}), _filename(filename) { - _view = std::make_unique(&_buffer, true, true); + _view = std::make_unique(&_buffer, true, true, true); _menu_bar = std::make_unique(25); _menu_bar->add_menu("File"); _menu_bar->add_menu_item("File", "Save", [this]() { diff --git a/client/src/ui/text_view.cpp b/client/src/ui/text_view.cpp index a28fda8..1d150a4 100644 --- a/client/src/ui/text_view.cpp +++ b/client/src/ui/text_view.cpp @@ -7,11 +7,13 @@ #include "ui/text_buffer.h" #include "ui/ui_renderer.h" -TextView::TextView(TextBuffer* buffer, bool handle_ret, bool show_line_numbers) : +TextView::TextView(TextBuffer* buffer, bool handle_ret, bool show_line_numbers, + bool syntax_highlighting) : _buffer(buffer), _scroll_offset(0), _handle_ret(handle_ret), - _show_line_numbers(show_line_numbers) { + _show_line_numbers(show_line_numbers), + _syntax_highlighting(syntax_highlighting) { _lua_keywords = { "and", "break", "do", "else", "elseif", "end", "false", "for", @@ -180,18 +182,22 @@ void TextView::render_text_content(UIRenderer* ui_renderer, const SyntaxTheme& t } float current_x = x+padding + gutter_width; - std::vector tokens = _tokenize_line(_buffer->get_line(i)); - for(const auto& token : tokens) { - Color color = theme.normal; - switch(token.type) { - case TokenType::KEYWORD: color = theme.keyword; break; - case TokenType::STRING: color = theme.string; break; - case TokenType::NUMBER: color = theme.number; break; - case TokenType::COMMENT: color = theme.comment; break; - default: break; - } - ui_renderer->render_text(token.text.c_str(), current_x, current_y+18, color); - current_x += ui_renderer->get_text_renderer()->get_text_width(token.text.c_str(), 1.0f); + if(_syntax_highlighting) { + std::vector tokens = _tokenize_line(_buffer->get_line(i)); + for(const auto& token : tokens) { + Color color = theme.normal; + switch(token.type) { + case TokenType::KEYWORD: color = theme.keyword; break; + case TokenType::STRING: color = theme.string; break; + case TokenType::NUMBER: color = theme.number; break; + case TokenType::COMMENT: color = theme.comment; break; + default: break; + } + ui_renderer->render_text(token.text.c_str(), current_x, current_y+18, color); + current_x += ui_renderer->get_text_renderer()->get_text_width(token.text.c_str(), 1.0f); + } + } else { + ui_renderer->render_text(_buffer->get_line(i).c_str(), current_x, current_y+18, theme.normal); } current_y += line_height; } diff --git a/client/src/ui/text_view.h b/client/src/ui/text_view.h index 09775d3..1c3f7b2 100644 --- a/client/src/ui/text_view.h +++ b/client/src/ui/text_view.h @@ -26,7 +26,7 @@ struct Token { class TextView { public: - TextView(TextBuffer* buffer, bool handle_ret, bool show_line_numbers); + TextView(TextBuffer* buffer, bool handle_ret, bool show_line_numbers, bool syntax_highlighting); ~TextView(void); bool handle_event(SDL_Event* event); @@ -43,5 +43,6 @@ private: int _scroll_offset; bool _handle_ret; bool _show_line_numbers; + bool _syntax_highlighting; std::unordered_set _lua_keywords; };