Renamed modules to plugins.

Moved plugins configuration files to plugins folder.
UICodeEditor: Fixed whitespaces color.
This commit is contained in:
Martín Lucas Golini
2022-05-31 16:46:01 -03:00
parent 76fee55a19
commit 344ce7ddb0
20 changed files with 249 additions and 254 deletions

View File

@@ -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

View File

@@ -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<UICodeEditorModule*> mModules;
std::vector<UICodeEditorPlugin*> mPlugins;
UILoader* mLoader{ nullptr };
Float mGlyphWidth{ 0 };
size_t mMenuIconSize{ 16 };

View File

@@ -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

View File

@@ -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/

View File

@@ -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

View File

@@ -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

View File

@@ -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" )

View File

@@ -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" },

View File

@@ -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<float>( startScroll.y + lineHeight * (double)i ) },
charSize, lineHeight );
@@ -275,8 +275,8 @@ void UICodeEditor::draw() {
i, { startScroll.x, static_cast<float>( 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<float>( 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 );
}
}

View File

@@ -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;

View File

@@ -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 <algorithm>
#include <args/args.hxx>
@@ -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 );

View File

@@ -14,9 +14,9 @@
#include <eepp/ee.hpp>
#include <efsw/efsw.hpp>
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<std::string, std::string> mGlobalSearchKeybindings;
std::unordered_map<std::string, std::string> 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<ThreadPool> mThreadPool;
std::shared_ptr<ProjectDirectoryTree> mDirTree;
UITreeView* mProjectTreeView{ nullptr };
std::shared_ptr<FileSystemModel> mFileSystemModel;
size_t mMenuIconSize;
bool mDirTreeReady{ false };
bool mIsMacOSApp{ false };
bool mIsBundledApp{ false };
ProjectDocumentConfig mProjectDocConfig;
std::unordered_set<Doc::TextDocument*> mTmpDocs;
std::string mCurrentProject;

View File

@@ -1,4 +1,4 @@
#include "autocompletemodule.hpp"
#include "autocompleteplugin.hpp"
#include <eepp/graphics/primitives.hpp>
#include <eepp/graphics/text.hpp>
#include <eepp/system/lock.hpp>
@@ -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<int>( 2, Sys::getCPUCount() ) ) )
AutoCompletePlugin( ThreadPool::createShared( eemin<int>( 2, Sys::getCPUCount() ) ) )
#else
AutoCompleteModule( nullptr )
AutoCompletePlugin( nullptr )
#endif
{
}
AutoCompleteModule::AutoCompleteModule( std::shared_ptr<ThreadPool> pool ) :
AutoCompletePlugin::AutoCompletePlugin( std::shared_ptr<ThreadPool> 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<Uint32> 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<int>( 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<std::string> 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<std::string> fuzzyMatchSymbols( const AutoCompleteModule::SymbolsList& symbols,
static std::vector<std::string> fuzzyMatchSymbols( const AutoCompletePlugin::SymbolsList& symbols,
const std::string& match, const size_t& max ) {
std::multimap<int, std::string, std::greater<int>> matchesMap;
std::vector<std::string> matches;
@@ -446,7 +447,7 @@ static std::vector<std::string> 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 );

View File

@@ -1,5 +1,5 @@
#ifndef AUTOCOMPLETEMODULE_HPP
#define AUTOCOMPLETEMODULE_HPP
#ifndef AUTOCOMPLETEPLUGIN_HPP
#define AUTOCOMPLETEPLUGIN_HPP
#include <eepp/config.hpp>
#include <eepp/system/clock.hpp>
@@ -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<std::string> SymbolsList;
AutoCompleteModule();
AutoCompletePlugin();
AutoCompleteModule( std::shared_ptr<ThreadPool> pool );
AutoCompletePlugin( std::shared_ptr<ThreadPool> 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

View File

@@ -1,4 +1,4 @@
#include "formattermodule.hpp"
#include "formatterplugin.hpp"
#include "../../thirdparty/json.hpp"
#include "../../thirdparty/subprocess.h"
#include <eepp/system/filesystem.hpp>
@@ -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<ThreadPool> 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<TextDocument> doc ) {
FormatterPlugin::Formatter FormatterPlugin::supportsFormatter( std::shared_ptr<TextDocument> doc ) {
std::string fileName( FileSystem::fileNameFromPath( doc->getFilePath() ) );
const auto& def = doc->getSyntaxDefinition();

View File

@@ -1,5 +1,5 @@
#ifndef FORMATTERMODULE_HPP
#define FORMATTERMODULE_HPP
#ifndef FORMATTERPLUGIN_HPP
#define FORMATTERPLUGIN_HPP
#include <eepp/config.hpp>
#include <eepp/system/mutex.hpp>
@@ -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<ThreadPool> pool );
FormatterPlugin( const std::string& formatterPath, std::shared_ptr<ThreadPool> 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<TextDocument> doc );
FormatterPlugin::Formatter supportsFormatter( std::shared_ptr<TextDocument> doc );
};
#endif // FORMATTERMODULE_HPP
#endif // FORMATTERPLUGIN_HPP

View File

@@ -1,4 +1,4 @@
#include "lintermodule.hpp"
#include "linterplugin.hpp"
#include "../../thirdparty/json.hpp"
#include "../../thirdparty/subprocess.h"
#include <algorithm>
@@ -17,7 +17,7 @@ using json = nlohmann::json;
#define LINTER_THREADED 0
#endif
LinterModule::LinterModule( const std::string& lintersPath, std::shared_ptr<ThreadPool> pool ) :
LinterPlugin::LinterPlugin( const std::string& lintersPath, std::shared_ptr<ThreadPool> pool ) :
mPool( pool ) {
#if LINTER_THREADED
mPool->run( [&, lintersPath] { load( lintersPath ); }, [] {} );
@@ -26,16 +26,16 @@ LinterModule::LinterModule( const std::string& lintersPath, std::shared_ptr<Thre
#endif
}
LinterModule::~LinterModule() {
LinterPlugin::~LinterPlugin() {
mClosing = true;
for ( const auto& editor : mEditors ) {
for ( auto listener : editor.second )
editor.first->removeEventListener( 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<Uint32> 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<TextDocument> 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<TextDocument> doc ) {
void LinterPlugin::lintDoc( std::shared_ptr<TextDocument> doc ) {
if ( !mReady )
return;
auto linter = supportsLinter( doc );
@@ -224,7 +224,7 @@ void LinterModule::lintDoc( std::shared_ptr<TextDocument> doc ) {
}
}
void LinterModule::runLinter( std::shared_ptr<TextDocument> doc, const Linter& linter,
void LinterPlugin::runLinter( std::shared_ptr<TextDocument> 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<TextDocument> 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<TextDocument> doc ) {
Linter LinterPlugin::supportsLinter( std::shared_ptr<TextDocument> doc ) {
std::string fileName( FileSystem::fileNameFromPath( doc->getFilePath() ) );
const auto& def = doc->getSyntaxDefinition();
@@ -483,14 +483,14 @@ Linter LinterModule::supportsLinter( std::shared_ptr<TextDocument> doc ) {
return {};
}
void LinterModule::setDocDirty( TextDocument* doc ) {
void LinterPlugin::setDocDirty( TextDocument* doc ) {
mDirtyDoc[doc] = std::make_unique<Clock>();
}
void LinterModule::setDocDirty( UICodeEditor* editor ) {
void LinterPlugin::setDocDirty( UICodeEditor* editor ) {
mDirtyDoc[editor->getDocumentRef().get()] = std::make_unique<Clock>();
}
void LinterModule::invalidateEditors( TextDocument* doc ) {
void LinterPlugin::invalidateEditors( TextDocument* doc ) {
Lock l( mDocMutex );
for ( auto& it : mEditorDocs ) {
if ( it.second == doc )

View File

@@ -1,5 +1,5 @@
#ifndef EE_TOOLS_LINTER_HPP
#define EE_TOOLS_LINTER_HPP
#ifndef LINTERPLUGIN_HPP
#define LINTERPLUGIN_HPP
#include <eepp/config.hpp>
#include <eepp/system/mutex.hpp>
@@ -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<ThreadPool> pool );
LinterPlugin( const std::string& lintersPath, std::shared_ptr<ThreadPool> 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