diff --git a/bin/assets/colorschemes/colorschemes.conf b/bin/assets/colorschemes/colorschemes.conf index a2609282d..195e6f429 100644 --- a/bin/assets/colorschemes/colorschemes.conf +++ b/bin/assets/colorschemes/colorschemes.conf @@ -7,7 +7,7 @@ line_highlight = #2d303d line_number = #525259 line_number2 = #83838f gutter_background = #282a36 -whitespace = #54575b +whitespace = #394484 line_break_column = #54575b99 matching_bracket = #FFFFFF33 matching_selection = #3e596e diff --git a/bin/assets/formatter/formatter.json b/bin/assets/plugins/formatters.json similarity index 100% rename from bin/assets/formatter/formatter.json rename to bin/assets/plugins/formatters.json diff --git a/bin/assets/linters/linters.json b/bin/assets/plugins/linters.json similarity index 100% rename from bin/assets/linters/linters.json rename to bin/assets/plugins/linters.json diff --git a/include/eepp/ui/uicodeeditor.hpp b/include/eepp/ui/uicodeeditor.hpp index 99765caaf..ff3c02f6d 100644 --- a/include/eepp/ui/uicodeeditor.hpp +++ b/include/eepp/ui/uicodeeditor.hpp @@ -24,7 +24,7 @@ class UILoader; class UIPopUpMenu; class UIMenuItem; -class UICodeEditorModule { +class UICodeEditorPlugin { public: virtual std::string getTitle() = 0; virtual std::string getDescription() = 0; @@ -387,9 +387,9 @@ class EE_API UICodeEditor : public UIWidget, public TextDocument::Client { void setHighlightTextRange( const TextRange& highlightSelection ); - void registerModule( UICodeEditorModule* module ); + void registerPlugin( UICodeEditorPlugin* plugin ); - void unregisterModule( UICodeEditorModule* module ); + void unregisterPlugin( UICodeEditorPlugin* plugin ); virtual Int64 getColFromXOffset( Int64 line, const Float& x ) const; @@ -539,7 +539,7 @@ class EE_API UICodeEditor : public UIWidget, public TextDocument::Client { TextRange mHighlightTextRange; Color mPreviewColor; TextRange mPreviewColorRange; - std::vector mModules; + std::vector mPlugins; UILoader* mLoader{ nullptr }; Float mGlyphWidth{ 0 }; size_t mMenuIconSize{ 16 }; diff --git a/projects/linux/ee.files b/projects/linux/ee.files index da68e7d8a..9e81aba2d 100644 --- a/projects/linux/ee.files +++ b/projects/linux/ee.files @@ -2,13 +2,13 @@ ../../TODO.md ../../bin/assets/colorschemes/colorschemes.conf ../../bin/assets/ee.ini -../../bin/assets/formatter/formatter.json +../../bin/assets/plugins/formatters.json +../../bin/assets/plugins/linters.json ../../bin/assets/layouts/imported.css ../../bin/assets/layouts/test.css ../../bin/assets/layouts/test.xml ../../bin/assets/layouts/test2.xml ../../bin/assets/layouts/test_widgets.xml -../../bin/assets/linters/linters.json ../../bin/assets/ui/breeze.css ../../bin/assets/ui/uitheme.css ../../docs/articles/cssspecification.md @@ -1111,14 +1111,14 @@ ../../src/tools/ecode/globalsearchcontroller.hpp ../../src/tools/ecode/ignorematcher.cpp ../../src/tools/ecode/ignorematcher.hpp -../../src/tools/ecode/modules/autocomplete/autocompletemodule.cpp -../../src/tools/ecode/modules/autocomplete/autocompletemodule.hpp -../../src/tools/ecode/modules/formatter/formattermodule.cpp -../../src/tools/ecode/modules/formatter/formattermodule.hpp -../../src/tools/ecode/modules/linter/lintermodule.cpp -../../src/tools/ecode/modules/linter/lintermodule.hpp +../../src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp +../../src/tools/ecode/plugins/autocomplete/autocompleteplugin.hpp +../../src/tools/ecode/plugins/formatter/formatterplugin.cpp +../../src/tools/ecode/plugins/formatter/formatterplugin.hpp ../../src/tools/ecode/notificationcenter.cpp ../../src/tools/ecode/notificationcenter.hpp +../../src/tools/ecode/plugins/linter/linterplugin.cpp +../../src/tools/ecode/plugins/linter/linterplugin.hpp ../../src/tools/ecode/projectdirectorytree.cpp ../../src/tools/ecode/projectdirectorytree.hpp ../../src/tools/ecode/projectsearch.cpp diff --git a/projects/osx/ecode/build.app.sh b/projects/osx/ecode/build.app.sh index 8e06b212a..2c4331aa0 100755 --- a/projects/osx/ecode/build.app.sh +++ b/projects/osx/ecode/build.app.sh @@ -16,8 +16,7 @@ install_name_tool -change libeepp.dylib @executable_path/libeepp.dylib ecode.app mkdir -p ecode.app/Contents/MacOS/assets/colorschemes cp -r ../../../bin/assets/colorschemes/ ecode.app/Contents/MacOS/assets/colorschemes/ cp -r ../../../bin/assets/fonts ecode.app/Contents/MacOS/assets/ -cp -r ../../../bin/assets/formatter ecode.app/Contents/MacOS/assets/ +cp -r ../../../bin/assets/plugins ecode.app/Contents/MacOS/assets/ cp -r ../../../bin/assets/icon ecode.app/Contents/MacOS/assets/ -cp -r ../../../bin/assets/linters ecode.app/Contents/MacOS/assets/ mkdir ecode.app/Contents/MacOS/assets/ui cp ../../../bin/assets/ui/breeze.css ecode.app/Contents/MacOS/assets/ui/ diff --git a/projects/osx/ee.files b/projects/osx/ee.files index 7589e9653..9e81aba2d 100644 --- a/projects/osx/ee.files +++ b/projects/osx/ee.files @@ -2,13 +2,13 @@ ../../TODO.md ../../bin/assets/colorschemes/colorschemes.conf ../../bin/assets/ee.ini -../../bin/assets/formatter/formatter.json +../../bin/assets/plugins/formatters.json +../../bin/assets/plugins/linters.json ../../bin/assets/layouts/imported.css ../../bin/assets/layouts/test.css ../../bin/assets/layouts/test.xml ../../bin/assets/layouts/test2.xml ../../bin/assets/layouts/test_widgets.xml -../../bin/assets/linters/linters.json ../../bin/assets/ui/breeze.css ../../bin/assets/ui/uitheme.css ../../docs/articles/cssspecification.md @@ -985,6 +985,7 @@ ../../src/eepp/window/inputtextbuffer.cpp ../../src/eepp/window/joystick.cpp ../../src/eepp/window/joystickmanager.cpp +../../src/eepp/window/keycodes.cpp ../../src/eepp/window/platformhelper.hpp ../../src/eepp/window/window.cpp ../../src/examples/empty_window/empty_window.cpp @@ -1098,50 +1099,36 @@ ../../src/thirdparty/efsw/src/test/efsw-test.cpp ../../src/tools/ecode/appconfig.cpp ../../src/tools/ecode/appconfig.hpp -../../src/tools/ecode/autocompletemodule.cpp -../../src/tools/ecode/autocompletemodule.hpp -../../src/tools/ecode/codeeditor.cpp -../../src/tools/ecode/codeeditor.hpp -../../src/tools/ecode/docsearchcontroller.cpp -../../src/tools/ecode/docsearchcontroller.hpp ../../src/tools/ecode/ecode.cpp ../../src/tools/ecode/ecode.hpp +../../src/tools/ecode/docsearchcontroller.cpp +../../src/tools/ecode/docsearchcontroller.hpp ../../src/tools/ecode/filelocator.cpp ../../src/tools/ecode/filelocator.hpp ../../src/tools/ecode/filesystemlistener.cpp ../../src/tools/ecode/filesystemlistener.hpp -../../src/tools/ecode/formattermodule.cpp -../../src/tools/ecode/formattermodule.hpp ../../src/tools/ecode/globalsearchcontroller.cpp ../../src/tools/ecode/globalsearchcontroller.hpp ../../src/tools/ecode/ignorematcher.cpp ../../src/tools/ecode/ignorematcher.hpp -../../src/tools/ecode/lintermodule.cpp -../../src/tools/ecode/lintermodule.hpp -../../src/tools/ecode/modules/autocomplete/autocompletemodule.cpp -../../src/tools/ecode/modules/autocomplete/autocompletemodule.hpp -../../src/tools/ecode/modules/formatter/formattermodule.cpp -../../src/tools/ecode/modules/formatter/formattermodule.hpp -../../src/tools/ecode/modules/linter/lintermodule.cpp -../../src/tools/ecode/modules/linter/lintermodule.hpp +../../src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp +../../src/tools/ecode/plugins/autocomplete/autocompleteplugin.hpp +../../src/tools/ecode/plugins/formatter/formatterplugin.cpp +../../src/tools/ecode/plugins/formatter/formatterplugin.hpp ../../src/tools/ecode/notificationcenter.cpp ../../src/tools/ecode/notificationcenter.hpp +../../src/tools/ecode/plugins/linter/linterplugin.cpp +../../src/tools/ecode/plugins/linter/linterplugin.hpp ../../src/tools/ecode/projectdirectorytree.cpp ../../src/tools/ecode/projectdirectorytree.hpp ../../src/tools/ecode/projectsearch.cpp ../../src/tools/ecode/projectsearch.hpp -../../src/tools/ecode/thirdparty/json.hpp -../../src/tools/ecode/thirdparty/subprocess.h ../../src/tools/ecode/uicodeeditorsplitter.cpp ../../src/tools/ecode/uicodeeditorsplitter.hpp ../../src/tools/ecode/uitreeviewglobalsearch.cpp ../../src/tools/ecode/uitreeviewglobalsearch.hpp ../../src/tools/ecode/widgetcommandexecuter.hpp ../../src/tools/mapeditor/mapeditor.cpp -../../src/tools/mapeditor/mapeditor.cpp -../../src/tools/textureatlaseditor/textureatlaseditor.cpp ../../src/tools/textureatlaseditor/textureatlaseditor.cpp ../../src/tools/texturepacker/texturepacker.cpp -../../src/tools/texturepacker/texturepacker.cpp -../../src/tools/uieditor/uieditor.cpp ../../src/tools/uieditor/uieditor.cpp diff --git a/projects/windows/ee.files b/projects/windows/ee.files index 82706c780..9e81aba2d 100644 --- a/projects/windows/ee.files +++ b/projects/windows/ee.files @@ -2,13 +2,13 @@ ../../TODO.md ../../bin/assets/colorschemes/colorschemes.conf ../../bin/assets/ee.ini -../../bin/assets/formatter/formatter.json +../../bin/assets/plugins/formatters.json +../../bin/assets/plugins/linters.json ../../bin/assets/layouts/imported.css ../../bin/assets/layouts/test.css ../../bin/assets/layouts/test.xml ../../bin/assets/layouts/test2.xml ../../bin/assets/layouts/test_widgets.xml -../../bin/assets/linters/linters.json ../../bin/assets/ui/breeze.css ../../bin/assets/ui/uitheme.css ../../docs/articles/cssspecification.md @@ -985,6 +985,7 @@ ../../src/eepp/window/inputtextbuffer.cpp ../../src/eepp/window/joystick.cpp ../../src/eepp/window/joystickmanager.cpp +../../src/eepp/window/keycodes.cpp ../../src/eepp/window/platformhelper.hpp ../../src/eepp/window/window.cpp ../../src/examples/empty_window/empty_window.cpp @@ -1098,26 +1099,26 @@ ../../src/thirdparty/efsw/src/test/efsw-test.cpp ../../src/tools/ecode/appconfig.cpp ../../src/tools/ecode/appconfig.hpp -../../src/tools/ecode/autocompletemodule.cpp -../../src/tools/ecode/autocompletemodule.hpp -../../src/tools/ecode/codeeditor.cpp -../../src/tools/ecode/codeeditor.hpp +../../src/tools/ecode/ecode.cpp +../../src/tools/ecode/ecode.hpp ../../src/tools/ecode/docsearchcontroller.cpp ../../src/tools/ecode/docsearchcontroller.hpp ../../src/tools/ecode/filelocator.cpp ../../src/tools/ecode/filelocator.hpp ../../src/tools/ecode/filesystemlistener.cpp ../../src/tools/ecode/filesystemlistener.hpp -../../src/tools/ecode/formattermodule.cpp -../../src/tools/ecode/formattermodule.hpp ../../src/tools/ecode/globalsearchcontroller.cpp ../../src/tools/ecode/globalsearchcontroller.hpp ../../src/tools/ecode/ignorematcher.cpp ../../src/tools/ecode/ignorematcher.hpp -../../src/tools/ecode/lintermodule.cpp -../../src/tools/ecode/lintermodule.hpp +../../src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp +../../src/tools/ecode/plugins/autocomplete/autocompleteplugin.hpp +../../src/tools/ecode/plugins/formatter/formatterplugin.cpp +../../src/tools/ecode/plugins/formatter/formatterplugin.hpp ../../src/tools/ecode/notificationcenter.cpp ../../src/tools/ecode/notificationcenter.hpp +../../src/tools/ecode/plugins/linter/linterplugin.cpp +../../src/tools/ecode/plugins/linter/linterplugin.hpp ../../src/tools/ecode/projectdirectorytree.cpp ../../src/tools/ecode/projectdirectorytree.hpp ../../src/tools/ecode/projectsearch.cpp diff --git a/src/eepp/ui/doc/syntaxcolorscheme.cpp b/src/eepp/ui/doc/syntaxcolorscheme.cpp index a0c806769..ae0806fa2 100644 --- a/src/eepp/ui/doc/syntaxcolorscheme.cpp +++ b/src/eepp/ui/doc/syntaxcolorscheme.cpp @@ -60,7 +60,7 @@ SyntaxColorScheme SyntaxColorScheme::getDefault() { { "line_number2", Color( "#83838f" ) }, // eepp colors { "gutter_background", Color( "#282a36" ) }, - { "whitespace", Color( "#54575b" ) }, + { "whitespace", Color( "#394484" ) }, { "line_break_column", Color( "#54575b99" ) }, { "matching_bracket", Color( "#FFFFFF33" ) }, { "matching_selection", Color( "#3e596e" ) }, @@ -207,7 +207,7 @@ SyntaxColorScheme::getEditorSyntaxStyle( const std::string& type ) const { return it->second; if ( type == "gutter_background" || "minimap_background" ) return getEditorSyntaxStyle( "background" ); - else if ( type == "guide" || type == "line_break_column" || type == "matching_bracket" || + else if ( type == "whitespace" || type == "line_break_column" || type == "matching_bracket" || type == "matching_selection" || type == "selection_region" ) return getEditorSyntaxStyle( "selection" ); else if ( type == "suggestion" ) diff --git a/src/eepp/ui/doc/syntaxdefinitionmanager.cpp b/src/eepp/ui/doc/syntaxdefinitionmanager.cpp index b810cea67..f9422dc45 100644 --- a/src/eepp/ui/doc/syntaxdefinitionmanager.cpp +++ b/src/eepp/ui/doc/syntaxdefinitionmanager.cpp @@ -236,6 +236,8 @@ SyntaxDefinitionManager::SyntaxDefinitionManager() { { "normal", "keyword2", "function", "operator", "keyword" } }, { { "([%w_][%w_]+)%.([%w_][%w%d_]*)%s*(=)%s*%b()%s*(=>)" }, { "normal", "keyword2", "function", "operator", "operator" } }, + { { "([%w_][%w_]+)%.([%w_][%w%d_]*)%s*(=)%s*(async)%s*%b()%s*(=>)" }, + { "normal", "keyword2", "function", "operator", "function", "operator" } }, { { "[%a_][%w_]*%s*%f[(]" }, "function" }, { { "[%a_][%w_]*" }, "symbol" }, }, @@ -302,7 +304,7 @@ SyntaxDefinitionManager::SyntaxDefinitionManager() { { "for", "keyword" }, { "from", "keyword" }, { "function", "keyword" }, { "get", "keyword" }, { "if", "keyword" }, { "implements", "keyword2" }, { "import", "keyword" }, { "in", "keyword" }, { "Infinity", "keyword2" }, - { "instanceof", "keyword" }, { "interface", "keyword2" }, { "let", "keyword" }, + { "instanceof", "keyword" }, { "interface", "keyword" }, { "let", "keyword" }, { "module", "keyword2" }, { "new", "keyword" }, { "null", "literal" }, { "number", "keyword2" }, { "of", "keyword2" }, { "package", "keyword2" }, { "private", "keyword2" }, { "protected", "keyword2" }, { "public", "keyword2" }, diff --git a/src/eepp/ui/uicodeeditor.cpp b/src/eepp/ui/uicodeeditor.cpp index 6d7ab6050..5a80f9e10 100644 --- a/src/eepp/ui/uicodeeditor.cpp +++ b/src/eepp/ui/uicodeeditor.cpp @@ -164,8 +164,8 @@ UICodeEditor::~UICodeEditor() { } else { mDoc->unregisterClient( this ); } - for ( auto& module : mModules ) - module->onUnregister( this ); + for ( auto& plugin : mPlugins ) + plugin->onUnregister( this ); } Uint32 UICodeEditor::getType() const { @@ -218,8 +218,8 @@ void UICodeEditor::draw() { Primitives primitives; TextPosition cursor( mDoc->getSelection().start() ); - for ( auto& module : mModules ) - module->preDraw( this, startScroll, lineHeight, cursor ); + for ( auto& plugin : mPlugins ) + plugin->preDraw( this, startScroll, lineHeight, cursor ); if ( !mLocked && mHighlightCurrentLine ) { primitives.setColor( Color( mCurrentLineBackgroundColor ).blendAlpha( mAlpha ) ); @@ -265,8 +265,8 @@ void UICodeEditor::draw() { } for ( unsigned long i = lineRange.first; i <= lineRange.second; i++ ) { - for ( auto& module : mModules ) - module->drawBeforeLineText( + for ( auto& plugin : mPlugins ) + plugin->drawBeforeLineText( this, i, { startScroll.x, static_cast( startScroll.y + lineHeight * (double)i ) }, charSize, lineHeight ); @@ -275,8 +275,8 @@ void UICodeEditor::draw() { i, { startScroll.x, static_cast( startScroll.y + lineHeight * (double)i ) }, charSize, lineHeight ); - for ( auto& module : mModules ) - module->drawAfterLineText( + for ( auto& plugin : mPlugins ) + plugin->drawAfterLineText( this, i, { startScroll.x, static_cast( startScroll.y + lineHeight * (double)i ) }, charSize, lineHeight ); @@ -296,8 +296,8 @@ void UICodeEditor::draw() { if ( mMinimapEnabled ) drawMinimap( screenStart, lineRange ); - for ( auto& module : mModules ) - module->postDraw( this, startScroll, lineHeight, cursor ); + for ( auto& plugin : mPlugins ) + plugin->postDraw( this, startScroll, lineHeight, cursor ); } void UICodeEditor::scheduledUpdate( const Time& ) { @@ -339,8 +339,8 @@ void UICodeEditor::scheduledUpdate( const Time& ) { updateLongestLineWidth(); } - for ( auto& module : mModules ) - module->update( this ); + for ( auto& plugin : mPlugins ) + plugin->update( this ); } void UICodeEditor::updateLongestLineWidth() { @@ -707,7 +707,7 @@ void UICodeEditor::updateColorScheme() { mLineNumberBackgroundColor = mColorScheme.getEditorColor( "gutter_background" ); mCurrentLineBackgroundColor = mColorScheme.getEditorColor( "line_highlight" ); mCaretColor = mColorScheme.getEditorColor( "caret" ); - mWhitespaceColor = mColorScheme.getEditorColor( "guide" ); + mWhitespaceColor = mColorScheme.getEditorColor( "whitespace" ); mLineBreakColumnColor = mColorScheme.getEditorColor( "line_break_column" ); mMatchingBracketColor = mColorScheme.getEditorColor( "matching_bracket" ); mSelectionMatchColor = mColorScheme.getEditorColor( "matching_selection" ); @@ -770,8 +770,8 @@ Uint32 UICodeEditor::onFocus() { resetCursor(); mDoc->setActiveClient( this ); } - for ( auto& module : mModules ) - module->onFocus( this ); + for ( auto& plugin : mPlugins ) + plugin->onFocus( this ); return UIWidget::onFocus(); } @@ -782,8 +782,8 @@ Uint32 UICodeEditor::onFocusLoss() { getUISceneNode()->setCursor( Cursor::Arrow ); if ( mDoc->getActiveClient() == this ) mDoc->setActiveClient( nullptr ); - for ( auto& module : mModules ) - module->onFocusLoss( this ); + for ( auto& plugin : mPlugins ) + plugin->onFocusLoss( this ); return UIWidget::onFocusLoss(); } @@ -800,8 +800,8 @@ Uint32 UICodeEditor::onTextInput( const TextInputEvent& event ) { checkAutoCloseXMLTag( event.getText() ); - for ( auto& module : mModules ) - if ( module->onTextInput( this, event ) ) + for ( auto& plugin : mPlugins ) + if ( plugin->onTextInput( this, event ) ) return 1; return 0; @@ -811,8 +811,8 @@ Uint32 UICodeEditor::onKeyDown( const KeyEvent& event ) { if ( NULL == mFont || mUISceneNode->getUIEventDispatcher()->justGainedFocus() ) return 0; - for ( auto& module : mModules ) - if ( module->onKeyDown( this, event ) ) + for ( auto& plugin : mPlugins ) + if ( plugin->onKeyDown( this, event ) ) return 1; std::string cmd = mKeyBindings.getCommandFromKeyBind( { event.getKeyCode(), event.getMod() } ); @@ -827,8 +827,8 @@ Uint32 UICodeEditor::onKeyDown( const KeyEvent& event ) { } Uint32 UICodeEditor::onKeyUp( const KeyEvent& event ) { - for ( auto& module : mModules ) - if ( module->onKeyUp( this, event ) ) + for ( auto& plugin : mPlugins ) + if ( plugin->onKeyUp( this, event ) ) return 1; if ( mHandShown && !getUISceneNode()->getWindow()->getInput()->isControlPressed() ) resetLinkOver(); @@ -908,8 +908,8 @@ bool UICodeEditor::onCreateContextMenu( const Vector2i& position, const Uint32& createDefaultContextMenuOptions( menu ); - for ( auto& module : mModules ) - if ( module->onCreateContextMenu( this, position, flags ) ) + for ( auto& plugin : mPlugins ) + if ( plugin->onCreateContextMenu( this, position, flags ) ) return false; if ( menu->getCount() == 0 ) { @@ -961,8 +961,8 @@ Int64 UICodeEditor::calculateMinimapClickedLine( const Vector2i& position ) { } Uint32 UICodeEditor::onMouseDown( const Vector2i& position, const Uint32& flags ) { - for ( auto& module : mModules ) - if ( module->onMouseDown( this, position, flags ) ) + for ( auto& plugin : mPlugins ) + if ( plugin->onMouseDown( this, position, flags ) ) return UIWidget::onMouseDown( position, flags ); if ( mMinimapEnabled ) { @@ -1045,8 +1045,8 @@ void UICodeEditor::updateMipmapHover( const Vector2f& position ) { } Uint32 UICodeEditor::onMouseMove( const Vector2i& position, const Uint32& flags ) { - for ( auto& module : mModules ) - if ( module->onMouseMove( this, position, flags ) ) + for ( auto& plugin : mPlugins ) + if ( plugin->onMouseMove( this, position, flags ) ) return UIWidget::onMouseMove( position, flags ); bool minimapHover = false; @@ -1083,8 +1083,8 @@ Uint32 UICodeEditor::onMouseMove( const Vector2i& position, const Uint32& flags } Uint32 UICodeEditor::onMouseUp( const Vector2i& position, const Uint32& flags ) { - for ( auto& module : mModules ) - if ( module->onMouseUp( this, position, flags ) ) + for ( auto& plugin : mPlugins ) + if ( plugin->onMouseUp( this, position, flags ) ) return UIWidget::onMouseUp( position, flags ); if ( NULL == mFont ) @@ -1134,8 +1134,8 @@ Uint32 UICodeEditor::onMouseUp( const Vector2i& position, const Uint32& flags ) } Uint32 UICodeEditor::onMouseClick( const Vector2i& position, const Uint32& flags ) { - for ( auto& module : mModules ) - if ( module->onMouseClick( this, position, flags ) ) + for ( auto& plugin : mPlugins ) + if ( plugin->onMouseClick( this, position, flags ) ) return UIWidget::onMouseClick( position, flags ); if ( mMinimapEnabled ) { @@ -1170,8 +1170,8 @@ Uint32 UICodeEditor::onMouseClick( const Vector2i& position, const Uint32& flags } Uint32 UICodeEditor::onMouseDoubleClick( const Vector2i& position, const Uint32& flags ) { - for ( auto& module : mModules ) - if ( module->onMouseDoubleClick( this, position, flags ) ) + for ( auto& plugin : mPlugins ) + if ( plugin->onMouseDoubleClick( this, position, flags ) ) return UIWidget::onMouseDoubleClick( position, flags ); if ( mLocked || NULL == mFont ) @@ -1192,8 +1192,8 @@ Uint32 UICodeEditor::onMouseDoubleClick( const Vector2i& position, const Uint32& } Uint32 UICodeEditor::onMouseOver( const Vector2i& position, const Uint32& flags ) { - for ( auto& module : mModules ) - if ( module->onMouseOver( this, position, flags ) ) + for ( auto& plugin : mPlugins ) + if ( plugin->onMouseOver( this, position, flags ) ) return UIWidget::onMouseOver( position, flags ); if ( getEventDispatcher()->getMouseOverNode() == this ) getUISceneNode()->setCursor( !mLocked ? Cursor::IBeam : Cursor::Arrow ); @@ -1201,8 +1201,8 @@ Uint32 UICodeEditor::onMouseOver( const Vector2i& position, const Uint32& flags } Uint32 UICodeEditor::onMouseLeave( const Vector2i& position, const Uint32& flags ) { - for ( auto& module : mModules ) - if ( module->onMouseLeave( this, position, flags ) ) + for ( auto& plugin : mPlugins ) + if ( plugin->onMouseLeave( this, position, flags ) ) return UIWidget::onMouseLeave( position, flags ); getUISceneNode()->setCursor( Cursor::Arrow ); return UIWidget::onMouseLeave( position, flags ); @@ -2163,19 +2163,19 @@ void UICodeEditor::setHighlightTextRange( const TextRange& highlightSelection ) } } -void UICodeEditor::registerModule( UICodeEditorModule* module ) { - auto it = std::find( mModules.begin(), mModules.end(), module ); - if ( it == mModules.end() ) { - mModules.push_back( module ); - module->onRegister( this ); +void UICodeEditor::registerPlugin( UICodeEditorPlugin* plugin ) { + auto it = std::find( mPlugins.begin(), mPlugins.end(), plugin ); + if ( it == mPlugins.end() ) { + mPlugins.push_back( plugin ); + plugin->onRegister( this ); } } -void UICodeEditor::unregisterModule( UICodeEditorModule* module ) { - auto it = std::find( mModules.begin(), mModules.end(), module ); - if ( it != mModules.end() ) { - mModules.erase( it ); - module->onUnregister( this ); +void UICodeEditor::unregisterPlugin( UICodeEditorPlugin* plugin ) { + auto it = std::find( mPlugins.begin(), mPlugins.end(), plugin ); + if ( it != mPlugins.end() ) { + mPlugins.erase( it ); + plugin->onUnregister( this ); } } diff --git a/src/tools/ecode/appconfig.cpp b/src/tools/ecode/appconfig.cpp index 1070f582f..2a7b052ce 100644 --- a/src/tools/ecode/appconfig.cpp +++ b/src/tools/ecode/appconfig.cpp @@ -50,7 +50,7 @@ void AppConfig::load( const std::string& confPath, std::string& keybindingsPath, iniState.getValueI( "window", "height", displayDPI > 105 ? 1080 : 720 ) ); window.maximized = iniState.getValueB( "window", "maximized", false ); window.pixelDensity = iniState.getValueF( "window", "pixeldensity" ); - window.winIcon = ini.getValue( "window", "winicon", resPath + "assets/icon/ee.png" ); + window.winIcon = ini.getValue( "window", "winicon", resPath + "icon/ee.png" ); window.panelPartition = iniState.getValue( "window", "panel_partition", "15%" ); window.displayIndex = iniState.getValueI( "window", "display_index", 0 ); window.position.x = iniState.getValueI( "window", "x", -1 ); @@ -65,8 +65,8 @@ void AppConfig::load( const std::string& confPath, std::string& keybindingsPath, ui.fontSize = ini.getValue( "ui", "font_size", "11dp" ); ui.showSidePanel = ini.getValueB( "ui", "show_side_panel", true ); ui.panelPosition = panelPositionFromString( ini.getValue( "ui", "panel_position", "left" ) ); - ui.serifFont = ini.getValue( "ui", "serif_font", "assets/fonts/NotoSans-Regular.ttf" ); - ui.monospaceFont = ini.getValue( "ui", "monospace_font", "assets/fonts/DejaVuSansMono.ttf" ); + ui.serifFont = ini.getValue( "ui", "serif_font", "fonts/NotoSans-Regular.ttf" ); + ui.monospaceFont = ini.getValue( "ui", "monospace_font", "fonts/DejaVuSansMono.ttf" ); ui.colorScheme = ini.getValue( "ui", "ui_color_scheme", "dark" ) == "light" ? ColorSchemePreference::Light : ColorSchemePreference::Dark; diff --git a/src/tools/ecode/ecode.cpp b/src/tools/ecode/ecode.cpp index 658326332..c01710b25 100644 --- a/src/tools/ecode/ecode.cpp +++ b/src/tools/ecode/ecode.cpp @@ -1,7 +1,7 @@ #include "ecode.hpp" -#include "modules/autocomplete/autocompletemodule.hpp" -#include "modules/formatter/formattermodule.hpp" -#include "modules/linter/lintermodule.hpp" +#include "plugins/autocomplete/autocompleteplugin.hpp" +#include "plugins/formatter/formatterplugin.hpp" +#include "plugins/linter/linterplugin.hpp" #include #include @@ -307,6 +307,10 @@ void App::loadConfig() { if ( !FileSystem::fileExists( mConfigPath ) ) FileSystem::makeDir( mConfigPath ); FileSystem::dirAddSlashAtEnd( mConfigPath ); + mPluginsPath = mConfigPath + "plugins"; + if ( !FileSystem::fileExists( mPluginsPath ) ) + FileSystem::makeDir( mPluginsPath ); + FileSystem::dirAddSlashAtEnd( mPluginsPath ); #ifndef EE_DEBUG Log::create( mConfigPath + "ecode.log", LogLevel::Info, false, true ); #else @@ -438,9 +442,9 @@ App::~App() { delete mFileSystemListener; saveConfig(); eeSAFE_DELETE( mEditorSplitter ); - eeSAFE_DELETE( mAutoCompleteModule ); - eeSAFE_DELETE( mLinterModule ); - eeSAFE_DELETE( mFormatterModule ); + eeSAFE_DELETE( mAutoCompletePlugin ); + eeSAFE_DELETE( mLinterPlugin ); + eeSAFE_DELETE( mFormatterPlugin ); eeSAFE_DELETE( mConsole ); } @@ -723,7 +727,7 @@ UIMenu* App::createViewMenu() { "stylistic errors, and suspicious constructs." ); mViewMenu->addCheckBox( "Enable Code Formatter" ) ->setActive( mConfig.editor.formatter ) - ->setTooltipText( "Enables the code formatter/prettifier module." ); + ->setTooltipText( "Enables the code formatter/prettifier plugin." ); mViewMenu->addCheckBox( "Hide tabbar on single tab" ) ->setActive( mConfig.editor.hideTabBarOnSingleTab ) ->setTooltipText( "Hides the tabbar if there's only one element in the tab widget." ); @@ -2035,67 +2039,67 @@ void App::onCodeEditorCreated( UICodeEditor* editor, TextDocument& doc ) { editor->showMinimap( config.minimap ); - if ( config.autoComplete && !mAutoCompleteModule ) + if ( config.autoComplete && !mAutoCompletePlugin ) setAutoComplete( config.autoComplete ); - if ( config.linter && !mLinterModule ) + if ( config.linter && !mLinterPlugin ) setLinter( config.linter ); - if ( config.formatter && !mFormatterModule ) + if ( config.formatter && !mFormatterPlugin ) setFormatter( config.formatter ); - if ( config.autoComplete && mAutoCompleteModule ) - editor->registerModule( mAutoCompleteModule ); + if ( config.autoComplete && mAutoCompletePlugin ) + editor->registerPlugin( mAutoCompletePlugin ); - if ( config.linter && mLinterModule ) - editor->registerModule( mLinterModule ); + if ( config.linter && mLinterPlugin ) + editor->registerPlugin( mLinterPlugin ); - if ( config.formatter && mFormatterModule ) - editor->registerModule( mFormatterModule ); + if ( config.formatter && mFormatterPlugin ) + editor->registerPlugin( mFormatterPlugin ); } bool App::setAutoComplete( bool enable ) { mConfig.editor.autoComplete = enable; - if ( enable && !mAutoCompleteModule ) { - mAutoCompleteModule = eeNew( AutoCompleteModule, ( mThreadPool ) ); + if ( enable && !mAutoCompletePlugin ) { + mAutoCompletePlugin = eeNew( AutoCompletePlugin, ( mThreadPool ) ); mEditorSplitter->forEachEditor( - [&]( UICodeEditor* editor ) { editor->registerModule( mAutoCompleteModule ); } ); + [&]( UICodeEditor* editor ) { editor->registerPlugin( mAutoCompletePlugin ); } ); return true; } - if ( !enable && mAutoCompleteModule ) - eeSAFE_DELETE( mAutoCompleteModule ); + if ( !enable && mAutoCompletePlugin ) + eeSAFE_DELETE( mAutoCompletePlugin ); return false; } bool App::setLinter( bool enable ) { mConfig.editor.linter = enable; - if ( enable && !mLinterModule ) { - std::string path( mResPath + "assets/linters/linters.json" ); - if ( FileSystem::fileExists( mConfigPath + "linters.json" ) ) - path = mConfigPath + "linters.json"; - mLinterModule = eeNew( LinterModule, ( path, mThreadPool ) ); + if ( enable && !mLinterPlugin ) { + std::string path( mResPath + "plugins/linters.json" ); + if ( FileSystem::fileExists( mPluginsPath + "linters.json" ) ) + path = mPluginsPath + "linters.json"; + mLinterPlugin = eeNew( LinterPlugin, ( path, mThreadPool ) ); mEditorSplitter->forEachEditor( - [&]( UICodeEditor* editor ) { editor->registerModule( mLinterModule ); } ); + [&]( UICodeEditor* editor ) { editor->registerPlugin( mLinterPlugin ); } ); return true; } - if ( !enable && mLinterModule ) - eeSAFE_DELETE( mLinterModule ); + if ( !enable && mLinterPlugin ) + eeSAFE_DELETE( mLinterPlugin ); return false; } bool App::setFormatter( bool enable ) { mConfig.editor.formatter = enable; - if ( enable && !mFormatterModule ) { - std::string path( mResPath + "assets/formatter/formatter.json" ); - if ( FileSystem::fileExists( mConfigPath + "formatter.json" ) ) - path = mConfigPath + "formatter.json"; - mFormatterModule = eeNew( FormatterModule, ( path, mThreadPool ) ); + if ( enable && !mFormatterPlugin ) { + std::string path( mResPath + "plugins/formatters.json" ); + if ( FileSystem::fileExists( mPluginsPath + "formatters.json" ) ) + path = mPluginsPath + "formatter.json"; + mFormatterPlugin = eeNew( FormatterPlugin, ( path, mThreadPool ) ); mEditorSplitter->forEachEditor( - [&]( UICodeEditor* editor ) { editor->registerModule( mFormatterModule ); } ); + [&]( UICodeEditor* editor ) { editor->registerPlugin( mFormatterPlugin ); } ); return true; } - if ( !enable && mFormatterModule ) - eeSAFE_DELETE( mFormatterModule ); + if ( !enable && mFormatterPlugin ) + eeSAFE_DELETE( mFormatterPlugin ); return false; } @@ -2640,7 +2644,7 @@ void App::initProjectTreeView( const std::string& path ) { } } } - } else if ( !mIsMacOSApp ) { + } else if ( !mIsBundledApp ) { loadFolder( "." ); } @@ -2712,9 +2716,11 @@ void App::init( std::string file, const Float& pidelDensity, const std::string& if ( String::contains( mResPath, "ecode.app" ) ) { mResPath = FileSystem::getCurrentWorkingDirectory(); FileSystem::dirAddSlashAtEnd( mResPath ); - mIsMacOSApp = true; + mIsBundledApp = true; } #endif + mResPath += "assets"; + FileSystem::dirAddSlashAtEnd( mResPath ); mConfig.window.pixelDensity = pidelDensity > 0 ? pidelDensity @@ -2775,21 +2781,19 @@ void App::init( std::string file, const Float& pidelDensity, const std::string& } mUISceneNode->setColorSchemePreference( mUIColorScheme ); - mFont = loadFont( "sans-serif", mConfig.ui.serifFont, "assets/fonts/NotoSans-Regular.ttf" ); - mFontMono = - loadFont( "monospace", mConfig.ui.monospaceFont, "assets/fonts/DejaVuSansMono.ttf" ); + mFont = loadFont( "sans-serif", mConfig.ui.serifFont, "fonts/NotoSans-Regular.ttf" ); + mFontMono = loadFont( "monospace", mConfig.ui.monospaceFont, "fonts/DejaVuSansMono.ttf" ); if ( mFontMono ) { mFontMono->setBoldAdvanceSameAsRegular( true ); mFontMono->setForceIsMonospace( true ); } - loadFont( "NotoEmoji-Regular", "assets/fonts/NotoEmoji-Regular.ttf" ); + loadFont( "NotoEmoji-Regular", "fonts/NotoEmoji-Regular.ttf" ); #if EE_PLATFORM != EE_PLATFORM_EMSCRIPTEN - loadFont( "NotoColorEmoji", "assets/fonts/NotoColorEmoji.ttf" ); + loadFont( "NotoColorEmoji", "fonts/NotoColorEmoji.ttf" ); #endif - FontTrueType* iconFont = - FontTrueType::New( "icon", mResPath + "assets/fonts/remixicon.ttf" ); + FontTrueType* iconFont = FontTrueType::New( "icon", mResPath + "fonts/remixicon.ttf" ); if ( !mFont || !mFontMono || !iconFont ) { printf( "Font not found!" ); @@ -2799,7 +2803,7 @@ void App::init( std::string file, const Float& pidelDensity, const std::string& SceneManager::instance()->add( mUISceneNode ); UITheme* theme = - UITheme::load( "uitheme", "uitheme", "", mFont, mResPath + "assets/ui/breeze.css" ); + UITheme::load( "uitheme", "uitheme", "", mFont, mResPath + "ui/breeze.css" ); theme->setDefaultFontSize( mConfig.ui.fontSize.asDp( 0, Sizef(), mDisplayDPI ) ); mUISceneNode->setStyleSheet( theme->getStyleSheet() ); mUISceneNode @@ -3091,7 +3095,7 @@ void App::init( std::string file, const Float& pidelDensity, const std::string& mEditorSplitter = UICodeEditorSplitter::New( this, mUISceneNode, - SyntaxColorScheme::loadFromFile( mResPath + "assets/colorschemes/colorschemes.conf" ), + SyntaxColorScheme::loadFromFile( mResPath + "colorschemes/colorschemes.conf" ), mInitColorScheme ); mEditorSplitter->setHideTabBarOnSingleTab( mConfig.editor.hideTabBarOnSingleTab ); diff --git a/src/tools/ecode/ecode.hpp b/src/tools/ecode/ecode.hpp index 30886c526..562105adc 100644 --- a/src/tools/ecode/ecode.hpp +++ b/src/tools/ecode/ecode.hpp @@ -14,9 +14,9 @@ #include #include -class AutoCompleteModule; -class LinterModule; -class FormatterModule; +class AutoCompletePlugin; +class LinterPlugin; +class FormatterPlugin; class App : public UICodeEditorSplitter::Client { public: @@ -107,19 +107,20 @@ class App : public UICodeEditorSplitter::Client { std::unordered_map mGlobalSearchKeybindings; std::unordered_map mDocumentSearchKeybindings; std::string mConfigPath; + std::string mPluginsPath; std::string mKeybindingsPath; Float mDisplayDPI{ 96 }; std::string mResPath; - AutoCompleteModule* mAutoCompleteModule{ nullptr }; - LinterModule* mLinterModule{ nullptr }; - FormatterModule* mFormatterModule{ nullptr }; + AutoCompletePlugin* mAutoCompletePlugin{ nullptr }; + LinterPlugin* mLinterPlugin{ nullptr }; + FormatterPlugin* mFormatterPlugin{ nullptr }; std::shared_ptr mThreadPool; std::shared_ptr mDirTree; UITreeView* mProjectTreeView{ nullptr }; std::shared_ptr mFileSystemModel; size_t mMenuIconSize; bool mDirTreeReady{ false }; - bool mIsMacOSApp{ false }; + bool mIsBundledApp{ false }; ProjectDocumentConfig mProjectDocConfig; std::unordered_set mTmpDocs; std::string mCurrentProject; diff --git a/src/tools/ecode/modules/autocomplete/autocompletemodule.cpp b/src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp similarity index 85% rename from src/tools/ecode/modules/autocomplete/autocompletemodule.cpp rename to src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp index 63186fd01..ebcc11bad 100644 --- a/src/tools/ecode/modules/autocomplete/autocompletemodule.cpp +++ b/src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp @@ -1,4 +1,4 @@ -#include "autocompletemodule.hpp" +#include "autocompleteplugin.hpp" #include #include #include @@ -13,22 +13,22 @@ using namespace EE::System; #define AUTO_COMPLETE_THREADED 0 #endif -AutoCompleteModule::AutoCompleteModule() : +AutoCompletePlugin::AutoCompletePlugin() : #if AUTO_COMPLETE_THREADED - AutoCompleteModule( ThreadPool::createShared( eemin( 2, Sys::getCPUCount() ) ) ) + AutoCompletePlugin( ThreadPool::createShared( eemin( 2, Sys::getCPUCount() ) ) ) #else - AutoCompleteModule( nullptr ) + AutoCompletePlugin( nullptr ) #endif { } -AutoCompleteModule::AutoCompleteModule( std::shared_ptr pool ) : +AutoCompletePlugin::AutoCompletePlugin( std::shared_ptr pool ) : mSymbolPattern( "[%añàáâãäåèéêëìíîïòóôõöùúûüýÿÑÀÁÂÃÄÅÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝ][%w_" "ñàáâãäåèéêëìíîïòóôõöùúûüýÿÑÀÁÂÃÄÅÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝ]*" ), mBoxPadding( PixelDensity::dpToPx( Rectf( 4, 4, 4, 4 ) ) ), mPool( pool ) {} -AutoCompleteModule::~AutoCompleteModule() { +AutoCompletePlugin::~AutoCompletePlugin() { mClosing = true; Lock l( mDocMutex ); Lock l2( mLangSymbolsMutex ); @@ -36,11 +36,11 @@ AutoCompleteModule::~AutoCompleteModule() { for ( const auto& editor : mEditors ) { for ( auto listener : editor.second ) editor.first->removeEventListener( listener ); - editor.first->unregisterModule( this ); + editor.first->unregisterPlugin( this ); } } -void AutoCompleteModule::onRegister( UICodeEditor* editor ) { +void AutoCompletePlugin::onRegister( UICodeEditor* editor ) { Lock l( mDocMutex ); std::vector listeners; listeners.push_back( editor->addEventListener( Event::OnDocumentLoaded, @@ -97,7 +97,7 @@ void AutoCompleteModule::onRegister( UICodeEditor* editor ) { mDirty = true; } -void AutoCompleteModule::onUnregister( UICodeEditor* editor ) { +void AutoCompletePlugin::onUnregister( UICodeEditor* editor ) { if ( mClosing ) return; if ( mSuggestionsEditor == editor ) @@ -117,7 +117,7 @@ void AutoCompleteModule::onUnregister( UICodeEditor* editor ) { mDirty = true; } -bool AutoCompleteModule::onKeyDown( UICodeEditor* editor, const KeyEvent& event ) { +bool AutoCompletePlugin::onKeyDown( UICodeEditor* editor, const KeyEvent& event ) { if ( !mSuggestions.empty() ) { int max = eemin( mSuggestionsMaxVisible, mSuggestions.size() ); if ( event.getKeyCode() == KEY_DOWN ) { @@ -162,7 +162,8 @@ bool AutoCompleteModule::onKeyDown( UICodeEditor* editor, const KeyEvent& event pickSuggestion( editor ); return true; } - } else if ( event.getKeyCode() == KEY_SPACE && ( event.getMod() & KeyMod::getDefaultModifier() ) ) { + } else if ( event.getKeyCode() == KEY_SPACE && + ( event.getMod() & KeyMod::getDefaultModifier() ) ) { std::string partialSymbol( getPartialSymbol( &editor->getDocument() ) ); if ( partialSymbol.size() >= 3 ) { updateSuggestions( partialSymbol, editor ); @@ -172,11 +173,11 @@ bool AutoCompleteModule::onKeyDown( UICodeEditor* editor, const KeyEvent& event return false; } -bool AutoCompleteModule::onKeyUp( UICodeEditor*, const KeyEvent& ) { +bool AutoCompletePlugin::onKeyUp( UICodeEditor*, const KeyEvent& ) { return false; } -bool AutoCompleteModule::onTextInput( UICodeEditor* editor, const TextInputEvent& ) { +bool AutoCompletePlugin::onTextInput( UICodeEditor* editor, const TextInputEvent& ) { std::string partialSymbol( getPartialSymbol( &editor->getDocument() ) ); if ( partialSymbol.size() >= 3 ) { updateSuggestions( partialSymbol, editor ); @@ -186,7 +187,7 @@ bool AutoCompleteModule::onTextInput( UICodeEditor* editor, const TextInputEvent return false; } -void AutoCompleteModule::updateDocCache( TextDocument* doc ) { +void AutoCompletePlugin::updateDocCache( TextDocument* doc ) { Lock l( mDocMutex ); Clock clock; auto docCache = mDocCache.find( doc ); @@ -209,7 +210,7 @@ void AutoCompleteModule::updateDocCache( TextDocument* doc ) { clock.getElapsedTime().asMilliseconds() ); } -void AutoCompleteModule::updateLangCache( const std::string& langName ) { +void AutoCompletePlugin::updateLangCache( const std::string& langName ) { Clock clock; Lock l( mLangSymbolsMutex ); Lock l2( mDocMutex ); @@ -223,7 +224,7 @@ void AutoCompleteModule::updateLangCache( const std::string& langName ) { clock.getElapsedTime().asMilliseconds() ); } -void AutoCompleteModule::pickSuggestion( UICodeEditor* editor ) { +void AutoCompletePlugin::pickSuggestion( UICodeEditor* editor ) { mReplacing = true; editor->getDocument().execute( "delete-to-previous-word" ); editor->getDocument().textInput( mSuggestions[mSuggestionIndex] ); @@ -231,13 +232,13 @@ void AutoCompleteModule::pickSuggestion( UICodeEditor* editor ) { resetSuggestions( editor ); } -std::string AutoCompleteModule::getPartialSymbol( TextDocument* doc ) { +std::string AutoCompletePlugin::getPartialSymbol( TextDocument* doc ) { TextPosition end = doc->getSelection().end(); TextPosition start = doc->startOfWord( end ); return doc->getText( { start, end } ).toUtf8(); } -void AutoCompleteModule::update( UICodeEditor* ) { +void AutoCompletePlugin::update( UICodeEditor* ) { if ( mClock.getElapsedTime() >= mUpdateFreq || mDirty ) { mClock.restart(); mDirty = false; @@ -254,10 +255,10 @@ void AutoCompleteModule::update( UICodeEditor* ) { } } -void AutoCompleteModule::preDraw( UICodeEditor*, const Vector2f&, const Float&, +void AutoCompletePlugin::preDraw( UICodeEditor*, const Vector2f&, const Float&, const TextPosition& ) {} -void AutoCompleteModule::postDraw( UICodeEditor* editor, const Vector2f& startScroll, +void AutoCompletePlugin::postDraw( UICodeEditor* editor, const Vector2f& startScroll, const Float& lineHeight, const TextPosition& cursor ) { std::vector suggestions; { @@ -302,7 +303,7 @@ void AutoCompleteModule::postDraw( UICodeEditor* editor, const Vector2f& startSc } } -bool AutoCompleteModule::onMouseDown( UICodeEditor* editor, const Vector2i& position, +bool AutoCompletePlugin::onMouseDown( UICodeEditor* editor, const Vector2i& position, const Uint32& flags ) { if ( mSuggestions.empty() || !mSuggestionsEditor || mSuggestionsEditor != editor || !( flags & EE_BUTTON_LMASK ) ) @@ -314,7 +315,7 @@ bool AutoCompleteModule::onMouseDown( UICodeEditor* editor, const Vector2i& posi return false; } -bool AutoCompleteModule::onMouseClick( UICodeEditor* editor, const Vector2i& position, +bool AutoCompletePlugin::onMouseClick( UICodeEditor* editor, const Vector2i& position, const Uint32& flags ) { if ( mSuggestions.empty() || !mSuggestionsEditor || mSuggestionsEditor != editor || !( flags & EE_BUTTON_LMASK ) ) @@ -330,7 +331,7 @@ bool AutoCompleteModule::onMouseClick( UICodeEditor* editor, const Vector2i& pos return false; } -bool AutoCompleteModule::onMouseDoubleClick( UICodeEditor* editor, const Vector2i& position, +bool AutoCompletePlugin::onMouseDoubleClick( UICodeEditor* editor, const Vector2i& position, const Uint32& flags ) { if ( mSuggestions.empty() || !mSuggestionsEditor || mSuggestionsEditor != editor || !( flags & EE_BUTTON_LMASK ) ) @@ -344,7 +345,7 @@ bool AutoCompleteModule::onMouseDoubleClick( UICodeEditor* editor, const Vector2 return false; } -bool AutoCompleteModule::onMouseMove( UICodeEditor* editor, const Vector2i& position, +bool AutoCompletePlugin::onMouseMove( UICodeEditor* editor, const Vector2i& position, const Uint32& ) { if ( mSuggestions.empty() || !mSuggestionsEditor || mSuggestionsEditor != editor ) return false; @@ -357,47 +358,47 @@ bool AutoCompleteModule::onMouseMove( UICodeEditor* editor, const Vector2i& posi return false; } -const Rectf& AutoCompleteModule::getBoxPadding() const { +const Rectf& AutoCompletePlugin::getBoxPadding() const { return mBoxPadding; } -void AutoCompleteModule::setBoxPadding( const Rectf& boxPadding ) { +void AutoCompletePlugin::setBoxPadding( const Rectf& boxPadding ) { mBoxPadding = boxPadding; } -const Uint32& AutoCompleteModule::getSuggestionsMaxVisible() const { +const Uint32& AutoCompletePlugin::getSuggestionsMaxVisible() const { return mSuggestionsMaxVisible; } -void AutoCompleteModule::setSuggestionsMaxVisible( const Uint32& suggestionsMaxVisible ) { +void AutoCompletePlugin::setSuggestionsMaxVisible( const Uint32& suggestionsMaxVisible ) { mSuggestionsMaxVisible = suggestionsMaxVisible; } -const Time& AutoCompleteModule::getUpdateFreq() const { +const Time& AutoCompletePlugin::getUpdateFreq() const { return mUpdateFreq; } -void AutoCompleteModule::setUpdateFreq( const Time& updateFreq ) { +void AutoCompletePlugin::setUpdateFreq( const Time& updateFreq ) { mUpdateFreq = updateFreq; } -const std::string& AutoCompleteModule::getSymbolPattern() const { +const std::string& AutoCompletePlugin::getSymbolPattern() const { return mSymbolPattern; } -void AutoCompleteModule::setSymbolPattern( const std::string& symbolPattern ) { +void AutoCompletePlugin::setSymbolPattern( const std::string& symbolPattern ) { mSymbolPattern = symbolPattern; } -bool AutoCompleteModule::isDirty() const { +bool AutoCompletePlugin::isDirty() const { return mDirty; } -void AutoCompleteModule::setDirty( bool dirty ) { +void AutoCompletePlugin::setDirty( bool dirty ) { mDirty = dirty; } -void AutoCompleteModule::resetSuggestions( UICodeEditor* editor ) { +void AutoCompletePlugin::resetSuggestions( UICodeEditor* editor ) { Lock l( mSuggestionsMutex ); mSuggestionIndex = 0; mSuggestionsEditor = nullptr; @@ -406,9 +407,9 @@ void AutoCompleteModule::resetSuggestions( UICodeEditor* editor ) { editor->getUISceneNode()->setCursor( !editor->isLocked() ? Cursor::IBeam : Cursor::Arrow ); } -AutoCompleteModule::SymbolsList AutoCompleteModule::getDocumentSymbols( TextDocument* doc ) { +AutoCompletePlugin::SymbolsList AutoCompletePlugin::getDocumentSymbols( TextDocument* doc ) { LuaPattern pattern( mSymbolPattern ); - AutoCompleteModule::SymbolsList symbols; + AutoCompletePlugin::SymbolsList symbols; Int64 lc = doc->linesCount(); if ( lc == 0 || lc > 50000 || mClosing ) return symbols; @@ -429,7 +430,7 @@ AutoCompleteModule::SymbolsList AutoCompleteModule::getDocumentSymbols( TextDocu return symbols; } -static std::vector fuzzyMatchSymbols( const AutoCompleteModule::SymbolsList& symbols, +static std::vector fuzzyMatchSymbols( const AutoCompletePlugin::SymbolsList& symbols, const std::string& match, const size_t& max ) { std::multimap> matchesMap; std::vector matches; @@ -446,7 +447,7 @@ static std::vector fuzzyMatchSymbols( const AutoCompleteModule::Sym return matches; } -void AutoCompleteModule::runUpdateSuggestions( const std::string& symbol, +void AutoCompletePlugin::runUpdateSuggestions( const std::string& symbol, const SymbolsList& symbols, UICodeEditor* editor ) { { Lock l( mLangSymbolsMutex ); @@ -457,7 +458,7 @@ void AutoCompleteModule::runUpdateSuggestions( const std::string& symbol, editor->runOnMainThread( [editor] { editor->invalidateDraw(); } ); } -void AutoCompleteModule::updateSuggestions( const std::string& symbol, UICodeEditor* editor ) { +void AutoCompletePlugin::updateSuggestions( const std::string& symbol, UICodeEditor* editor ) { const std::string& lang = editor->getDocument().getSyntaxDefinition().getLanguageName(); Lock l( mLangSymbolsMutex ); auto langSuggestions = mLangCache.find( lang ); diff --git a/src/tools/ecode/modules/autocomplete/autocompletemodule.hpp b/src/tools/ecode/plugins/autocomplete/autocompleteplugin.hpp similarity index 92% rename from src/tools/ecode/modules/autocomplete/autocompletemodule.hpp rename to src/tools/ecode/plugins/autocomplete/autocompleteplugin.hpp index f79a20c48..180d00b96 100644 --- a/src/tools/ecode/modules/autocomplete/autocompletemodule.hpp +++ b/src/tools/ecode/plugins/autocomplete/autocompleteplugin.hpp @@ -1,5 +1,5 @@ -#ifndef AUTOCOMPLETEMODULE_HPP -#define AUTOCOMPLETEMODULE_HPP +#ifndef AUTOCOMPLETEPLUGIN_HPP +#define AUTOCOMPLETEPLUGIN_HPP #include #include @@ -12,15 +12,15 @@ using namespace EE; using namespace EE::System; using namespace EE::UI; -class AutoCompleteModule : public UICodeEditorModule { +class AutoCompletePlugin : public UICodeEditorPlugin { public: typedef std::unordered_set SymbolsList; - AutoCompleteModule(); + AutoCompletePlugin(); - AutoCompleteModule( std::shared_ptr pool ); + AutoCompletePlugin( std::shared_ptr pool ); - virtual ~AutoCompleteModule(); + virtual ~AutoCompletePlugin(); std::string getTitle() { return "Auto Complete"; } @@ -112,4 +112,4 @@ class AutoCompleteModule : public UICodeEditorModule { void pickSuggestion( UICodeEditor* editor ); }; -#endif // AUTOCOMPLETEMODULE_HPP +#endif // AUTOCOMPLETEPLUGIN_HPP diff --git a/src/tools/ecode/modules/formatter/formattermodule.cpp b/src/tools/ecode/plugins/formatter/formatterplugin.cpp similarity index 88% rename from src/tools/ecode/modules/formatter/formattermodule.cpp rename to src/tools/ecode/plugins/formatter/formatterplugin.cpp index d5b829a52..ef85019f1 100644 --- a/src/tools/ecode/modules/formatter/formattermodule.cpp +++ b/src/tools/ecode/plugins/formatter/formatterplugin.cpp @@ -1,4 +1,4 @@ -#include "formattermodule.hpp" +#include "formatterplugin.hpp" #include "../../thirdparty/json.hpp" #include "../../thirdparty/subprocess.h" #include @@ -14,7 +14,7 @@ using json = nlohmann::json; #define FORMATTER_THREADED 0 #endif -FormatterModule::FormatterModule( const std::string& formattersPath, +FormatterPlugin::FormatterPlugin( const std::string& formattersPath, std::shared_ptr pool ) : mPool( pool ) { #if FORMATTER_THREADED @@ -24,13 +24,13 @@ FormatterModule::FormatterModule( const std::string& formattersPath, #endif } -FormatterModule::~FormatterModule() { +FormatterPlugin::~FormatterPlugin() { mClosing = true; for ( auto editor : mEditors ) - editor->unregisterModule( this ); + editor->unregisterPlugin( this ); } -void FormatterModule::onRegister( UICodeEditor* editor ) { +void FormatterPlugin::onRegister( UICodeEditor* editor ) { mEditors.insert( editor ); auto& doc = editor->getDocument(); @@ -46,21 +46,21 @@ void FormatterModule::onRegister( UICodeEditor* editor ) { } ); } -void FormatterModule::onUnregister( UICodeEditor* editor ) { +void FormatterPlugin::onUnregister( UICodeEditor* editor ) { if ( mClosing ) return; mEditors.erase( editor ); } -bool FormatterModule::getAutoFormatOnSave() const { +bool FormatterPlugin::getAutoFormatOnSave() const { return mAutoFormatOnSave; } -void FormatterModule::setAutoFormatOnSave( bool autoFormatOnSave ) { +void FormatterPlugin::setAutoFormatOnSave( bool autoFormatOnSave ) { mAutoFormatOnSave = autoFormatOnSave; } -void FormatterModule::load( const std::string& formatterPath ) { +void FormatterPlugin::load( const std::string& formatterPath ) { if ( !FileSystem::fileExists( formatterPath ) ) return; try { @@ -95,7 +95,7 @@ void FormatterModule::load( const std::string& formatterPath ) { } } -void FormatterModule::formatDoc( UICodeEditor* editor ) { +void FormatterPlugin::formatDoc( UICodeEditor* editor ) { if ( !mReady ) return; @@ -142,11 +142,11 @@ void FormatterModule::formatDoc( UICodeEditor* editor ) { path = doc->getFilePath(); } - Log::info( "FormatterModule::formatDoc for %s took %.2fms", path.c_str(), + Log::info( "FormatterPlugin::formatDoc for %s took %.2fms", path.c_str(), clock.getElapsedTime().asMilliseconds() ); } -void FormatterModule::runFormatter( UICodeEditor* editor, const Formatter& formatter, +void FormatterPlugin::runFormatter( UICodeEditor* editor, const Formatter& formatter, const std::string& path ) { std::string cmd( formatter.command ); @@ -191,7 +191,7 @@ void FormatterModule::runFormatter( UICodeEditor* editor, const Formatter& forma } } -FormatterModule::Formatter FormatterModule::supportsFormatter( std::shared_ptr doc ) { +FormatterPlugin::Formatter FormatterPlugin::supportsFormatter( std::shared_ptr doc ) { std::string fileName( FileSystem::fileNameFromPath( doc->getFilePath() ) ); const auto& def = doc->getSyntaxDefinition(); diff --git a/src/tools/ecode/modules/formatter/formattermodule.hpp b/src/tools/ecode/plugins/formatter/formatterplugin.hpp similarity index 77% rename from src/tools/ecode/modules/formatter/formattermodule.hpp rename to src/tools/ecode/plugins/formatter/formatterplugin.hpp index 26199cec2..9999e7f9d 100644 --- a/src/tools/ecode/modules/formatter/formattermodule.hpp +++ b/src/tools/ecode/plugins/formatter/formatterplugin.hpp @@ -1,5 +1,5 @@ -#ifndef FORMATTERMODULE_HPP -#define FORMATTERMODULE_HPP +#ifndef FORMATTERPLUGIN_HPP +#define FORMATTERPLUGIN_HPP #include #include @@ -10,15 +10,15 @@ using namespace EE; using namespace EE::System; using namespace EE::UI; -class FormatterModule : public UICodeEditorModule { +class FormatterPlugin : public UICodeEditorPlugin { public: - FormatterModule( const std::string& formatterPath, std::shared_ptr pool ); + FormatterPlugin( const std::string& formatterPath, std::shared_ptr pool ); - virtual ~FormatterModule(); + virtual ~FormatterPlugin(); std::string getTitle() { return "Auto Formatter"; } - std::string getDescription() { return "Enables the code formatter/prettifier module."; } + std::string getDescription() { return "Enables the code formatter/prettifier plugin."; } void onRegister( UICodeEditor* ); @@ -51,7 +51,7 @@ class FormatterModule : public UICodeEditorModule { void runFormatter( UICodeEditor* editor, const Formatter& formatter, const std::string& path ); - FormatterModule::Formatter supportsFormatter( std::shared_ptr doc ); + FormatterPlugin::Formatter supportsFormatter( std::shared_ptr doc ); }; -#endif // FORMATTERMODULE_HPP +#endif // FORMATTERPLUGIN_HPP diff --git a/src/tools/ecode/modules/linter/lintermodule.cpp b/src/tools/ecode/plugins/linter/linterplugin.cpp similarity index 92% rename from src/tools/ecode/modules/linter/lintermodule.cpp rename to src/tools/ecode/plugins/linter/linterplugin.cpp index 07ad928b7..3e5c8268d 100644 --- a/src/tools/ecode/modules/linter/lintermodule.cpp +++ b/src/tools/ecode/plugins/linter/linterplugin.cpp @@ -1,4 +1,4 @@ -#include "lintermodule.hpp" +#include "linterplugin.hpp" #include "../../thirdparty/json.hpp" #include "../../thirdparty/subprocess.h" #include @@ -17,7 +17,7 @@ using json = nlohmann::json; #define LINTER_THREADED 0 #endif -LinterModule::LinterModule( const std::string& lintersPath, std::shared_ptr pool ) : +LinterPlugin::LinterPlugin( const std::string& lintersPath, std::shared_ptr pool ) : mPool( pool ) { #if LINTER_THREADED mPool->run( [&, lintersPath] { load( lintersPath ); }, [] {} ); @@ -26,16 +26,16 @@ LinterModule::LinterModule( const std::string& lintersPath, std::shared_ptrremoveEventListener( listener ); - editor.first->unregisterModule( this ); + editor.first->unregisterPlugin( this ); } } -void LinterModule::load( const std::string& lintersPath ) { +void LinterPlugin::load( const std::string& lintersPath ) { if ( !FileSystem::fileExists( lintersPath ) ) return; try { @@ -109,7 +109,7 @@ void LinterModule::load( const std::string& lintersPath ) { } } -void LinterModule::onRegister( UICodeEditor* editor ) { +void LinterPlugin::onRegister( UICodeEditor* editor ) { Lock l( mDocMutex ); std::vector listeners; @@ -152,7 +152,7 @@ void LinterModule::onRegister( UICodeEditor* editor ) { mEditorDocs[editor] = editor->getDocumentRef().get(); } -void LinterModule::onUnregister( UICodeEditor* editor ) { +void LinterPlugin::onUnregister( UICodeEditor* editor ) { if ( mClosing ) return; Lock l( mDocMutex ); @@ -171,7 +171,7 @@ void LinterModule::onUnregister( UICodeEditor* editor ) { mMatches.erase( doc ); } -void LinterModule::update( UICodeEditor* editor ) { +void LinterPlugin::update( UICodeEditor* editor ) { std::shared_ptr doc = editor->getDocumentRef(); auto it = mDirtyDoc.find( doc.get() ); if ( it != mDirtyDoc.end() && it->second->getElapsedTime() >= mDelayTime ) { @@ -182,15 +182,15 @@ void LinterModule::update( UICodeEditor* editor ) { } } -const Time& LinterModule::getDelayTime() const { +const Time& LinterPlugin::getDelayTime() const { return mDelayTime; } -void LinterModule::setDelayTime( const Time& delayTime ) { +void LinterPlugin::setDelayTime( const Time& delayTime ) { mDelayTime = delayTime; } -void LinterModule::lintDoc( std::shared_ptr doc ) { +void LinterPlugin::lintDoc( std::shared_ptr doc ) { if ( !mReady ) return; auto linter = supportsLinter( doc ); @@ -224,7 +224,7 @@ void LinterModule::lintDoc( std::shared_ptr doc ) { } } -void LinterModule::runLinter( std::shared_ptr doc, const Linter& linter, +void LinterPlugin::runLinter( std::shared_ptr doc, const Linter& linter, const std::string& path ) { Clock clock; std::string cmd( linter.command ); @@ -350,14 +350,14 @@ void LinterModule::runLinter( std::shared_ptr doc, const Linter& l invalidateEditors( doc.get() ); - Log::info( "LinterModule::runLinter for %s took %.2fms. Found: %d matches. Errors: %d, " + Log::info( "LinterPlugin::runLinter for %s took %.2fms. Found: %d matches. Errors: %d, " "Warnings: %d, Notices: %d.", path.c_str(), clock.getElapsedTime().asMilliseconds(), totalMatches, totalErrors, totalWarns, totalNotice ); } } -std::string LinterModule::getMatchString( const LinterType& type ) { +std::string LinterPlugin::getMatchString( const LinterType& type ) { switch ( type ) { case LinterType::Warning: return "warning"; @@ -369,7 +369,7 @@ std::string LinterModule::getMatchString( const LinterType& type ) { return "error"; } -void LinterModule::drawAfterLineText( UICodeEditor* editor, const Int64& index, Vector2f position, +void LinterPlugin::drawAfterLineText( UICodeEditor* editor, const Int64& index, Vector2f position, const Float& /*fontSize*/, const Float& lineHeight ) { Lock l( mMatchesMutex ); auto matchIt = mMatches.find( editor->getDocumentRef().get() ); @@ -431,7 +431,7 @@ void LinterModule::drawAfterLineText( UICodeEditor* editor, const Int64& index, } } -bool LinterModule::onMouseMove( UICodeEditor* editor, const Vector2i& pos, const Uint32& ) { +bool LinterPlugin::onMouseMove( UICodeEditor* editor, const Vector2i& pos, const Uint32& ) { Lock l( mMatchesMutex ); auto it = mMatches.find( editor->getDocumentRef().get() ); if ( it != mMatches.end() ) { @@ -457,7 +457,7 @@ bool LinterModule::onMouseMove( UICodeEditor* editor, const Vector2i& pos, const return false; } -bool LinterModule::onMouseLeave( UICodeEditor* editor, const Vector2i&, const Uint32& ) { +bool LinterPlugin::onMouseLeave( UICodeEditor* editor, const Vector2i&, const Uint32& ) { if ( editor->getTooltip() && editor->getTooltip()->isVisible() ) { editor->setTooltipText( "" ); editor->getTooltip()->hide(); @@ -465,7 +465,7 @@ bool LinterModule::onMouseLeave( UICodeEditor* editor, const Vector2i&, const Ui return false; } -Linter LinterModule::supportsLinter( std::shared_ptr doc ) { +Linter LinterPlugin::supportsLinter( std::shared_ptr doc ) { std::string fileName( FileSystem::fileNameFromPath( doc->getFilePath() ) ); const auto& def = doc->getSyntaxDefinition(); @@ -483,14 +483,14 @@ Linter LinterModule::supportsLinter( std::shared_ptr doc ) { return {}; } -void LinterModule::setDocDirty( TextDocument* doc ) { +void LinterPlugin::setDocDirty( TextDocument* doc ) { mDirtyDoc[doc] = std::make_unique(); } -void LinterModule::setDocDirty( UICodeEditor* editor ) { +void LinterPlugin::setDocDirty( UICodeEditor* editor ) { mDirtyDoc[editor->getDocumentRef().get()] = std::make_unique(); } -void LinterModule::invalidateEditors( TextDocument* doc ) { +void LinterPlugin::invalidateEditors( TextDocument* doc ) { Lock l( mDocMutex ); for ( auto& it : mEditorDocs ) { if ( it.second == doc ) diff --git a/src/tools/ecode/modules/linter/lintermodule.hpp b/src/tools/ecode/plugins/linter/linterplugin.hpp similarity index 91% rename from src/tools/ecode/modules/linter/lintermodule.hpp rename to src/tools/ecode/plugins/linter/linterplugin.hpp index 998575f26..5a891b4d8 100644 --- a/src/tools/ecode/modules/linter/lintermodule.hpp +++ b/src/tools/ecode/plugins/linter/linterplugin.hpp @@ -1,5 +1,5 @@ -#ifndef EE_TOOLS_LINTER_HPP -#define EE_TOOLS_LINTER_HPP +#ifndef LINTERPLUGIN_HPP +#define LINTERPLUGIN_HPP #include #include @@ -38,11 +38,11 @@ struct LinterMatch { LinterType type{ LinterType::Error }; }; -class LinterModule : public UICodeEditorModule { +class LinterPlugin : public UICodeEditorPlugin { public: - LinterModule( const std::string& lintersPath, std::shared_ptr pool ); + LinterPlugin( const std::string& lintersPath, std::shared_ptr pool ); - virtual ~LinterModule(); + virtual ~LinterPlugin(); std::string getTitle() { return "Linter"; } @@ -101,4 +101,4 @@ class LinterModule : public UICodeEditorModule { std::string getMatchString( const LinterType& type ); }; -#endif // EE_TOOLS_LINTER_HPP +#endif // LINTERPLUGIN_HPP