diff --git a/src/plugins/lua/bindings/project.cpp b/src/plugins/lua/bindings/project.cpp index 22cc904ea50..e140ca92790 100644 --- a/src/plugins/lua/bindings/project.cpp +++ b/src/plugins/lua/bindings/project.cpp @@ -113,6 +113,26 @@ void setupProjectModule() } }; + result["stopRunConfigurationsByName"] = + [](const QString &displayName, const std::optional &force) -> int { + const auto runControls = ProjectExplorerPlugin::instance()->allRunControls(); + + int stoppedCount = 0; + for (const auto rc : runControls) { + if (rc && rc->displayName() == displayName) { + stoppedCount++; + + if (force.has_value() && force.value()) { + rc->forceStop(); + } else { + rc->initiateStop(); + } + } + } + + return stoppedCount; + }; + result["RunMode"] = lua.create_table_with( "Normal", Constants::NORMAL_RUN_MODE, "Debug", Constants::DEBUG_RUN_MODE); diff --git a/src/plugins/lua/meta/project.lua b/src/plugins/lua/meta/project.lua index 7a90c67c154..37f5881c447 100644 --- a/src/plugins/lua/meta/project.lua +++ b/src/plugins/lua/meta/project.lua @@ -50,4 +50,10 @@ function project.canRunStartupProject(runMode) end ---@param displayName? string Override the run configuration display name with the provided name. function project.runStartupProject(runnable, displayName) end +---Stops any configuration with display names equal to the provided name. +---@param displayName string The name for projects to stop. +---@param force? boolean Whether to close project forcefully (false assumeed if not provided). +---@return int Number of stopped configurations. +function project.stopRunConfigurationsByName(displayName, force) end + return project