From 4fb79c2771066e0c367b178833761c48d81dfbbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marti=CC=81n=20Lucas=20Golini?= Date: Sat, 5 Nov 2022 15:20:09 -0300 Subject: [PATCH] macOS fixes. --- .github/workflows/eepp-macos-build-check.yml | 2 +- premake5.lua | 6 +-- projects/macos/ee.files | 41 +++++++++++++++++-- src/eepp/system/process.cpp | 3 ++ .../ecode/plugins/lsp/lspclientplugin.cpp | 23 +++++++++-- .../ecode/plugins/lsp/lspclientplugin.hpp | 1 + 6 files changed, 64 insertions(+), 12 deletions(-) diff --git a/.github/workflows/eepp-macos-build-check.yml b/.github/workflows/eepp-macos-build-check.yml index 48730a54c..1d4af7d15 100644 --- a/.github/workflows/eepp-macos-build-check.yml +++ b/.github/workflows/eepp-macos-build-check.yml @@ -22,4 +22,4 @@ jobs: - name: Build run: | ./premake5 --with-mojoAL gmake2 - make -C make/macosx/ -j`nproc` all + make -C make/macosx/ -j$(nproc) all diff --git a/premake5.lua b/premake5.lua index 0564ce753..3730cc210 100644 --- a/premake5.lua +++ b/premake5.lua @@ -779,12 +779,12 @@ workspace "eepp" project "efsw-static" kind "StaticLib" language "C++" + cppdialect "C++17" + defines { "EFSW_USE_CXX11" } targetdir("libs/" .. os.target() .. "/thirdparty/") incdirs { "src/thirdparty/efsw/include", "src/thirdparty/efsw/src" } files { "src/thirdparty/efsw/src/efsw/*.cpp" } build_base_cpp_configuration( "efsw" ) - defines { "EFSW_USE_CXX11" } - cppdialect "C++17" filter "system:windows" files { "src/thirdparty/efsw/src/efsw/platform/win/*.cpp" } excludes { @@ -826,11 +826,11 @@ workspace "eepp" project "eterm-static" kind "StaticLib" language "C++" + cppdialect "C++17" targetdir("libs/" .. os.target() .. "/") incdirs { "include", "src/modules/eterm/include/","src/modules/eterm/src/" } files { "src/modules/eterm/src/**.cpp" } build_base_cpp_configuration( "eterm" ) - cppdialect "C++17" filter "action:not vs*" buildoptions { "-Wall" } diff --git a/projects/macos/ee.files b/projects/macos/ee.files index efc929bd0..c88fac371 100644 --- a/projects/macos/ee.files +++ b/projects/macos/ee.files @@ -1,6 +1,7 @@ ../../README.md ../../TODO.md ../../bin/assets/colorschemes/colorschemes.conf +../../bin/assets/colorschemes/terminalcolorschemes.conf ../../bin/assets/ee.ini ../../bin/assets/plugins/formatters.json ../../bin/assets/plugins/linters.json @@ -9,6 +10,7 @@ ../../bin/assets/layouts/test.xml ../../bin/assets/layouts/test2.xml ../../bin/assets/layouts/test_widgets.xml +../../bin/assets/plugins/lspclient.json ../../bin/assets/ui/breeze.css ../../bin/assets/ui/uitheme.css ../../docs/articles/cssspecification.md @@ -50,7 +52,6 @@ ../../include/eepp/graphics/batchrenderer.hpp ../../include/eepp/graphics/blendmode.hpp ../../include/eepp/graphics/circledrawable.hpp -../../include/eepp/graphics/console.hpp ../../include/eepp/graphics/convexshapedrawable.hpp ../../include/eepp/graphics/drawablegroup.hpp ../../include/eepp/graphics/drawable.hpp @@ -257,6 +258,7 @@ ../../include/eepp/system/pack.hpp ../../include/eepp/system/packmanager.hpp ../../include/eepp/system/pak.hpp +../../include/eepp/system/process.hpp ../../include/eepp/system/rc4.hpp ../../include/eepp/system/resourceloader.hpp ../../include/eepp/system/resourcemanager.hpp @@ -327,6 +329,7 @@ ../../include/eepp/ui/css/stylesheetspecification.hpp ../../include/eepp/ui/css/stylesheetstyle.hpp ../../include/eepp/ui/css/stylesheetvariable.hpp +../../include/eepp/ui/css/timingfunction.hpp ../../include/eepp/ui/css/transitiondefinition.hpp ../../include/eepp/ui/doc/syntaxcolorscheme.hpp ../../include/eepp/ui/doc/syntaxdefinition.hpp @@ -340,6 +343,7 @@ ../../include/eepp/ui/doc/undostack.hpp ../../include/eepp/ui/keyboardshortcut.hpp ../../include/eepp/ui/marginmove/scale.hpp +../../include/eepp/ui/models/csspropertiesmodel.hpp ../../include/eepp/ui/models/filesystemmodel.hpp ../../include/eepp/ui/models/itemlistmodel.hpp ../../include/eepp/ui/models/model.hpp @@ -352,12 +356,17 @@ ../../include/eepp/ui/tools/textureatlaseditor.hpp ../../include/eepp/ui/tools/uicodeeditorsplitter.hpp ../../include/eepp/ui/tools/uicolorpicker.hpp +../../include/eepp/ui/tools/uidocfindreplace.hpp +../../include/eepp/ui/tools/uiwidgetinspector.hpp ../../include/eepp/ui/uiabstractview.hpp ../../include/eepp/ui/uibackgrounddrawable.hpp ../../include/eepp/ui/uiborderdrawable.hpp ../../include/eepp/ui/uicheckbox.hpp +../../include/eepp/ui/uiclip.hpp ../../include/eepp/ui/uicodeeditor.hpp ../../include/eepp/ui/uicombobox.hpp +../../include/eepp/ui/uiconsole.hpp +../../include/eepp/ui/uidatabind.hpp ../../include/eepp/ui/uidropdownlist.hpp ../../include/eepp/ui/uieventdispatcher.hpp ../../include/eepp/ui/uifiledialog.hpp @@ -429,6 +438,7 @@ ../../include/eepp/ui/uiwidgettable.hpp ../../include/eepp/ui/uiwidgettablerow.hpp ../../include/eepp/ui/uiwindow.hpp +../../include/eepp/ui/widgetcommandexecuter.hpp ../../include/eepp/version.hpp ../../include/eepp/window/base.hpp ../../include/eepp/window/clipboard.hpp @@ -441,7 +451,6 @@ ../../include/eepp/window/inputfinger.hpp ../../include/eepp/window/inputhelper.hpp ../../include/eepp/window/input.hpp -../../include/eepp/window/inputtextbuffer.hpp ../../include/eepp/window/joycodes.hpp ../../include/eepp/window/joystick.hpp ../../include/eepp/window/joystickmanager.hpp @@ -525,7 +534,6 @@ ../../src/eepp/graphics/batchrenderer.cpp ../../src/eepp/graphics/blendmode.cpp ../../src/eepp/graphics/circledrawable.cpp -../../src/eepp/graphics/console.cpp ../../src/eepp/graphics/convexshapedrawable.cpp ../../src/eepp/graphics/drawable.cpp ../../src/eepp/graphics/drawablegroup.cpp @@ -775,6 +783,7 @@ ../../src/eepp/system/platform/win/threadimpl.hpp ../../src/eepp/system/platform/win/threadlocalimpl.cpp ../../src/eepp/system/platform/win/threadlocalimpl.hpp +../../src/eepp/system/process.cpp ../../src/eepp/system/rc4.cpp ../../src/eepp/system/resourceloader.cpp ../../src/eepp/system/sys.cpp @@ -811,6 +820,7 @@ ../../src/eepp/ui/css/stylesheetspecification.cpp ../../src/eepp/ui/css/stylesheetstyle.cpp ../../src/eepp/ui/css/stylesheetvariable.cpp +../../src/eepp/ui/css/timingfunction.cpp ../../src/eepp/ui/css/transitiondefinition.cpp ../../src/eepp/ui/doc/syntaxcolorscheme.cpp ../../src/eepp/ui/doc/syntaxdefinition.cpp @@ -834,12 +844,16 @@ ../../src/eepp/ui/tools/textureatlastextureregioneditor.hpp ../../src/eepp/ui/tools/uicodeeditorsplitter.cpp ../../src/eepp/ui/tools/uicolorpicker.cpp +../../src/eepp/ui/tools/uidocfindreplace.cpp +../../src/eepp/ui/tools/uiwidgetinspector.cpp ../../src/eepp/ui/uiabstractview.cpp ../../src/eepp/ui/uibackgrounddrawable.cpp ../../src/eepp/ui/uiborderdrawable.cpp ../../src/eepp/ui/uicheckbox.cpp +../../src/eepp/ui/uiclip.cpp ../../src/eepp/ui/uicodeeditor.cpp ../../src/eepp/ui/uicombobox.cpp +../../src/eepp/ui/uiconsole.cpp ../../src/eepp/ui/uidropdownlist.cpp ../../src/eepp/ui/uieventdispatcher.cpp ../../src/eepp/ui/uifiledialog.cpp @@ -906,6 +920,7 @@ ../../src/eepp/ui/uiwidgettable.cpp ../../src/eepp/ui/uiwidgettablerow.cpp ../../src/eepp/ui/uiwindow.cpp +../../src/eepp/ui/widgetcommandexecuter.hpp ../../src/eepp/window/backend/allegro5/cbackendal.hpp ../../src/eepp/window/backend/allegro5/cclipboardal.cpp ../../src/eepp/window/backend/allegro5/cclipboardal.hpp @@ -984,7 +999,6 @@ ../../src/eepp/window/input.cpp ../../src/eepp/window/inputfinger.cpp ../../src/eepp/window/inputhelper.cpp -../../src/eepp/window/inputtextbuffer.cpp ../../src/eepp/window/joystick.cpp ../../src/eepp/window/joystickmanager.cpp ../../src/eepp/window/keycodes.cpp @@ -1010,9 +1024,11 @@ ../../src/modules/eterm/include/eterm/terminal/ipseudoterminal.hpp ../../src/modules/eterm/include/eterm/terminal/iterminaldisplay.hpp ../../src/modules/eterm/include/eterm/terminal/pseudoterminal.hpp +../../src/modules/eterm/include/eterm/terminal/terminalcolorscheme.hpp ../../src/modules/eterm/include/eterm/terminal/terminaldisplay.hpp ../../src/modules/eterm/include/eterm/terminal/terminalemulator.hpp ../../src/modules/eterm/include/eterm/terminal/terminaltypes.hpp +../../src/modules/eterm/include/eterm/ui/uiterminal.hpp ../../src/modules/eterm/src/eterm/system/autohandle.cpp ../../src/modules/eterm/src/eterm/system/pipe.cpp ../../src/modules/eterm/src/eterm/system/process.cpp @@ -1021,11 +1037,13 @@ ../../src/modules/eterm/src/eterm/terminal/iterminaldisplay.cpp ../../src/modules/eterm/src/eterm/terminal/nonspacing.hpp ../../src/modules/eterm/src/eterm/terminal/pseudoterminal.cpp +../../src/modules/eterm/src/eterm/terminal/terminalcolorscheme.cpp ../../src/modules/eterm/src/eterm/terminal/terminaldisplay.cpp ../../src/modules/eterm/src/eterm/terminal/terminalemulator.cpp ../../src/modules/eterm/src/eterm/terminal/types.hpp ../../src/modules/eterm/src/eterm/terminal/wide.hpp ../../src/modules/eterm/src/eterm/terminal/windowserrors.hpp +../../src/modules/eterm/src/eterm/ui/uiterminal.cpp ../../src/test/eetest.cpp ../../src/tests/test_all/test.cpp ../../src/tests/test_all/test.hpp @@ -1149,11 +1167,25 @@ ../../src/tools/ecode/notificationcenter.hpp ../../src/tools/ecode/plugins/linter/linterplugin.cpp ../../src/tools/ecode/plugins/linter/linterplugin.hpp +../../src/tools/ecode/plugins/lsp/lspclientplugin.cpp +../../src/tools/ecode/plugins/lsp/lspclientplugin.hpp +../../src/tools/ecode/plugins/lsp/lspclientprotocol.hpp +../../src/tools/ecode/plugins/lsp/lspclientserver.cpp +../../src/tools/ecode/plugins/lsp/lspclientserver.hpp +../../src/tools/ecode/plugins/lsp/lspclientservermanager.cpp +../../src/tools/ecode/plugins/lsp/lspclientservermanager.hpp +../../src/tools/ecode/plugins/lsp/lspdefinition.hpp +../../src/tools/ecode/plugins/lsp/lspdocumentclient.cpp +../../src/tools/ecode/plugins/lsp/lspdocumentclient.hpp +../../src/tools/ecode/plugins/pluginmanager.cpp +../../src/tools/ecode/plugins/pluginmanager.hpp ../../src/tools/ecode/projectdirectorytree.cpp ../../src/tools/ecode/projectdirectorytree.hpp ../../src/tools/ecode/projectsearch.cpp ../../src/tools/ecode/projectsearch.hpp ../../src/tools/ecode/scopedop.hpp +../../src/tools/ecode/terminalmanager.cpp +../../src/tools/ecode/terminalmanager.hpp ../../src/tools/ecode/uicodeeditorsplitter.cpp ../../src/tools/ecode/uicodeeditorsplitter.hpp ../../src/tools/ecode/uitreeviewglobalsearch.cpp @@ -1166,3 +1198,4 @@ ../../src/tools/textureatlaseditor/textureatlaseditor.cpp ../../src/tools/texturepacker/texturepacker.cpp ../../src/tools/uieditor/uieditor.cpp +../../src/tools/uieditor/uieditor.hpp diff --git a/src/eepp/system/process.cpp b/src/eepp/system/process.cpp index 7847c64e2..764258638 100644 --- a/src/eepp/system/process.cpp +++ b/src/eepp/system/process.cpp @@ -5,6 +5,9 @@ #include #include #include +#if EE_PLATFORM == EE_PLATFORM_MACOSX +#define SUBPROCESS_USE_POSIX_SPAWN +#endif #include #include diff --git a/src/tools/ecode/plugins/lsp/lspclientplugin.cpp b/src/tools/ecode/plugins/lsp/lspclientplugin.cpp index 63610438e..6ee22e14d 100644 --- a/src/tools/ecode/plugins/lsp/lspclientplugin.cpp +++ b/src/tools/ecode/plugins/lsp/lspclientplugin.cpp @@ -25,7 +25,7 @@ LSPClientPlugin::LSPClientPlugin( const PluginManager* pluginManager ) : LSPClientPlugin::~LSPClientPlugin() { mClosing = true; Lock l( mDocMutex ); - for ( auto editor : mEditors ) { + for ( const auto &editor : mEditors ) { for ( auto& kb : mKeyBindings ) { editor.first->getKeyBindings().removeCommandKeybind( kb.first ); if ( editor.first->hasDocument() ) @@ -33,6 +33,14 @@ LSPClientPlugin::~LSPClientPlugin() { } editor.first->unregisterPlugin( this ); } + if ( nullptr == mManager->getSplitter() ) + return; + for ( const auto& editor : mEditorsTags ) { + if ( mManager->getSplitter()->editorExists( editor.first ) ) { + for ( const auto& tag : editor.second ) + editor.first->removeActionsByTag( tag ); + } + } } void LSPClientPlugin::update( UICodeEditor* ) { @@ -249,6 +257,7 @@ void LSPClientPlugin::onRegister( UICodeEditor* editor ) { } ) ); mEditors.insert( { editor, listeners } ); + mEditorsTags.insert( { editor, {} } ); mEditorDocs[editor] = editor->getDocumentRef().get(); if ( mReady && editor->hasDocument() && editor->getDocument().hasFilepath() ) @@ -272,6 +281,7 @@ void LSPClientPlugin::onUnregister( UICodeEditor* editor ) { for ( auto listener : cbs ) editor->removeEventListener( listener ); mEditors.erase( editor ); + mEditorsTags.erase( editor ); mEditorDocs.erase( editor ); for ( auto editor : mEditorDocs ) if ( editor.second == doc ) @@ -329,12 +339,17 @@ TextPosition currentMouseTextPosition( UICodeEditor* editor ) { } bool LSPClientPlugin::onMouseMove( UICodeEditor* editor, const Vector2i& position, const Uint32& ) { - Uint32 tag = String::hash( editor->getDocument().getFilePath() ); + String::HashType tag = String::hash( editor->getDocument().getFilePath() ); editor->removeActionsByTag( tag ); + mEditorsTags[editor].insert( tag ); editor->runOnMainThread( - [&, editor, position]() { + [&, editor, position, tag]() { + mEditorsTags[editor].erase( tag ); mThreadPool->run( [&, editor, position]() { - mClientManager.getOneLSPClientServer( editor )->documentHover( + auto server = mClientManager.getOneLSPClientServer( editor ); + if ( server == nullptr ) + return; + server->documentHover( editor->getDocument().getURI(), currentMouseTextPosition( editor ), [&, editor, position]( const LSPHover& resp ) { if ( resp.range.isValid() && !resp.contents.empty() ) { diff --git a/src/tools/ecode/plugins/lsp/lspclientplugin.hpp b/src/tools/ecode/plugins/lsp/lspclientplugin.hpp index e48e99275..5db8ca8e0 100644 --- a/src/tools/ecode/plugins/lsp/lspclientplugin.hpp +++ b/src/tools/ecode/plugins/lsp/lspclientplugin.hpp @@ -70,6 +70,7 @@ class LSPClientPlugin : public UICodeEditorPlugin { Clock mClock; Mutex mDocMutex; std::unordered_map> mEditors; + std::unordered_map> mEditorsTags; std::set mDocs; std::unordered_map mEditorDocs; LSPClientServerManager mClientManager;