From 3797aa877b2c5f43a8ef4a8ad73cda310b5e0c5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Sat, 28 Jun 2025 20:55:09 -0300 Subject: [PATCH] Minor refactor in SyntaxTokenizer. Open .xbm and .xpm files as C (SpartanJ/ecode#532). --- bin/assets/plugins/aiassistant.json | 21 +++++++------------ include/eepp/ui/doc/syntaxtokenizer.hpp | 8 ++++--- src/eepp/ui/doc/languages/c.cpp | 2 +- src/eepp/ui/doc/syntaxtokenizer.cpp | 13 ++++++------ .../autocomplete/autocompleteplugin.cpp | 6 +++--- src/tools/ecode/plugins/git/gitplugin.cpp | 4 ++-- .../ecode/plugins/lsp/lspclientplugin.cpp | 2 +- 7 files changed, 26 insertions(+), 30 deletions(-) diff --git a/bin/assets/plugins/aiassistant.json b/bin/assets/plugins/aiassistant.json index 6448d0ee6..bfad2149a 100644 --- a/bin/assets/plugins/aiassistant.json +++ b/bin/assets/plugins/aiassistant.json @@ -105,11 +105,6 @@ "display_name": "Gemini 1.5 Flash", "max_tokens": 1000000 }, - { - "name": "gemini-2.0-pro-exp", - "display_name": "Gemini 2.0 Pro", - "max_tokens": 2000000 - }, { "name": "gemini-2.0-flash", "display_name": "Gemini 2.0 Flash", @@ -127,18 +122,13 @@ "cheapest": true }, { - "name": "gemini-2.5-pro-exp-03-25", - "display_name": "Gemini 2.5 Pro Experimental (03-25)", + "name": "gemini-2.5-pro", + "display_name": "Gemini 2.5 Pro", "max_tokens": 1000000 }, { - "name": "gemini-2.5-pro-preview-05-06", - "display_name": "Gemini 2.5 Pro Preview (05-06)", - "max_tokens": 1000000 - }, - { - "name": "gemini-2.5-flash-preview-04-17", - "display_name": "Gemini 2.5 Flash Preview", + "name": "gemini-2.5-flash", + "display_name": "Gemini 2.5 Flash", "max_tokens": 1000000 } ] @@ -243,6 +233,9 @@ { "name": "o3" }, + { + "name": "o3-pro" + }, { "name": "o1-pro" }, diff --git a/include/eepp/ui/doc/syntaxtokenizer.hpp b/include/eepp/ui/doc/syntaxtokenizer.hpp index c7b79e4c3..d61de6aee 100644 --- a/include/eepp/ui/doc/syntaxtokenizer.hpp +++ b/include/eepp/ui/doc/syntaxtokenizer.hpp @@ -3,10 +3,12 @@ #include #include -#include #include #include +namespace EE { namespace Graphics { +class Text; +}} // namespace EE::Graphics using namespace EE::Graphics; namespace EE { namespace UI { namespace Doc { @@ -89,8 +91,8 @@ class EE_API SyntaxTokenizer { const SyntaxState& state, const size_t& startIndex = 0, bool skipSubSyntaxSeparator = false ); - static Text& tokenizeText( const SyntaxDefinition& syntax, const SyntaxColorScheme& colorScheme, - Text& text, const size_t& startIndex = 0, + static Text* tokenizeText( const SyntaxDefinition& syntax, const SyntaxColorScheme& colorScheme, + Text* text, const size_t& startIndex = 0, const size_t& endIndex = 0xFFFFFFFF, bool skipSubSyntaxSeparator = false, const std::string& trimChars = "" ); diff --git a/src/eepp/ui/doc/languages/c.cpp b/src/eepp/ui/doc/languages/c.cpp index 52ac697ca..ff34821bd 100644 --- a/src/eepp/ui/doc/languages/c.cpp +++ b/src/eepp/ui/doc/languages/c.cpp @@ -8,7 +8,7 @@ void addC() { auto& sd = SyntaxDefinitionManager::instance()->add( { "C", - { "%.c$", "%.C$", "%.h$", "%.icc$" }, + { "%.c$", "%.C$", "%.h$", "%.icc$", "%.xbm$", "%.xpm$" }, { { { "//.-\n" }, "comment" }, { { "/%*", "%*/" }, "comment" }, diff --git a/src/eepp/ui/doc/syntaxtokenizer.cpp b/src/eepp/ui/doc/syntaxtokenizer.cpp index a3d72da0e..69b892e09 100644 --- a/src/eepp/ui/doc/syntaxtokenizer.cpp +++ b/src/eepp/ui/doc/syntaxtokenizer.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -834,12 +835,12 @@ SyntaxTokenizer::tokenizeComplete( const SyntaxDefinition& syntax, const std::st skipSubSyntaxSeparator ); } -Text& SyntaxTokenizer::tokenizeText( const SyntaxDefinition& syntax, - const SyntaxColorScheme& colorScheme, Text& text, +Text* SyntaxTokenizer::tokenizeText( const SyntaxDefinition& syntax, + const SyntaxColorScheme& colorScheme, Text* text, const size_t& startIndex, const size_t& endIndex, bool skipSubSyntaxSeparator, const std::string& trimChars ) { - auto tokens = SyntaxTokenizer::tokenizeComplete( syntax, text.getString(), SyntaxState{}, + auto tokens = SyntaxTokenizer::tokenizeComplete( syntax, text->getString(), SyntaxState{}, startIndex, skipSubSyntaxSeparator ) .first; @@ -870,15 +871,15 @@ Text& SyntaxTokenizer::tokenizeText( const SyntaxDefinition& syntax, txt += token.text; ++c; } - text.setString( txt ); + text->setString( txt ); } size_t start = startIndex; for ( const auto& token : tokens ) { if ( start < endIndex ) { if ( token.len > 0 ) - text.setFillColor( colorScheme.getSyntaxStyle( token.type ).color, start, - std::min( start + token.len, endIndex ) ); + text->setFillColor( colorScheme.getSyntaxStyle( token.type ).color, start, + std::min( start + token.len, endIndex ) ); start += token.len; } else { break; diff --git a/src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp b/src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp index 50a93ed5d..e2c545601 100644 --- a/src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp +++ b/src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp @@ -1104,7 +1104,7 @@ void AutoCompletePlugin::drawSignatureHelp( UICodeEditor* editor, const Vector2f text.setFillColor( normalStyle.color ); text.setStyle( normalStyle.style ); text.setString( str ); - SyntaxTokenizer::tokenizeText( doc.getSyntaxDefinition(), editor->getColorScheme(), text ); + SyntaxTokenizer::tokenizeText( doc.getSyntaxDefinition(), editor->getColorScheme(), &text ); text.draw( boxRect.getPosition().x + mBoxPadding.Left, boxRect.getPosition().y + mBoxPadding.Top ); } @@ -1204,7 +1204,7 @@ void AutoCompletePlugin::postDraw( UICodeEditor* editor, const Vector2f& startSc if ( mHighlightSuggestions && suggestion.kind != LSPCompletionItemKind::Text ) { SyntaxTokenizer::tokenizeText( doc.getSyntaxDefinition(), editor->getColorScheme(), - text ); + &text ); } text.draw( cursorPos.x + iconSpace.getWidth() + mBoxPadding.Left, @@ -1246,7 +1246,7 @@ void AutoCompletePlugin::postDraw( UICodeEditor* editor, const Vector2f& startSc forceHTML ? SyntaxDefinitionManager::instance()->getByLSPName( "html" ) : SyntaxDefinitionManager::instance()->getByLSPName( "markdown" ); SyntaxTokenizer::tokenizeText( syntaxDef, editor->getColorScheme(), - mSuggestionDoc, 0, 0xFFFFFFFF, true, "\n\t " ); + &mSuggestionDoc, 0, 0xFFFFFFFF, true, "\n\t " ); } } diff --git a/src/tools/ecode/plugins/git/gitplugin.cpp b/src/tools/ecode/plugins/git/gitplugin.cpp index a1d78d1f6..dcaee7d0d 100644 --- a/src/tools/ecode/plugins/git/gitplugin.cpp +++ b/src/tools/ecode/plugins/git/gitplugin.cpp @@ -406,7 +406,7 @@ void GitPlugin::updateStatusBarSync() { } SyntaxTokenizer::tokenizeText( mStatusCustomTokenizer->def, mStatusCustomTokenizer->scheme, - *mStatusButton->getTextBox()->getTextCache() ); + mStatusButton->getTextBox()->getTextCache() ); mStatusButton->invalidateDraw(); } @@ -599,7 +599,7 @@ void GitPlugin::displayTooltip( UICodeEditor* editor, const Git::Blame& blame, } SyntaxTokenizer::tokenizeText( *mTooltipCustomSyntaxDef, editor->getColorScheme(), - *tooltip->getTextCache() ); + tooltip->getTextCache() ); tooltip->notifyTextChangedFromTextCache(); diff --git a/src/tools/ecode/plugins/lsp/lspclientplugin.cpp b/src/tools/ecode/plugins/lsp/lspclientplugin.cpp index 5fd8a4139..df69bd3dd 100644 --- a/src/tools/ecode/plugins/lsp/lspclientplugin.cpp +++ b/src/tools/ecode/plugins/lsp/lspclientplugin.cpp @@ -1819,7 +1819,7 @@ void LSPClientPlugin::displayTooltip( UICodeEditor* editor, const LSPHover& resp ? SyntaxDefinitionManager::instance()->getByLSPName( "markdown" ) : editor->getSyntaxDefinition(); - SyntaxTokenizer::tokenizeText( syntaxDef, editor->getColorScheme(), *tooltip->getTextCache(), 0, + SyntaxTokenizer::tokenizeText( syntaxDef, editor->getColorScheme(), tooltip->getTextCache(), 0, 0xFFFFFFFF, true, "\n\t " ); tooltip->notifyTextChangedFromTextCache();