diff --git a/README.md b/README.md
index d25467f..25c4df4 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
Plugins for Jetbrains IDEs. It's provides a way to use run configurations as buttons on toolbar. Or assign shortcuts to execute specific run configuration.
-Plugin is compatible with all major IDEs based on IntelliJ Platform starting from version 2016.x:
+Plugin is compatible with all major IDEs based on IntelliJ Platform starting from version 2018.1:
* IntelliJ IDEA
* Android Studio
* PhpStorm
diff --git a/resources/META-INF/plugin.xml b/resources/META-INF/plugin.xml
index 784acb0..167775d 100644
--- a/resources/META-INF/plugin.xml
+++ b/resources/META-INF/plugin.xml
@@ -14,7 +14,8 @@ Also it allows to create button in toolbar to run specific configuration.
1.3
- Properly support execution targets (It includes support of CMake profiles.).
- Now plugin register action not only per-Executor (Run/Debug/Coverage/...) but per-Executor-per-ExecutionTarget
+ Now plugin register action not only per-Executor (Run/Debug/Coverage/...) but per-Executor-per-ExecutionTarget.
+ Dropped support of old IDE. Now only 2018.1+ are supported.
1.2
@@ -28,7 +29,7 @@ Also it allows to create button in toolbar to run specific configuration.
]]>
-
+
com.intellij.modules.platform
diff --git a/src/org/turbanov/actions/Bootstrap.java b/src/org/turbanov/actions/Bootstrap.java
index b66ec27..191f6d8 100644
--- a/src/org/turbanov/actions/Bootstrap.java
+++ b/src/org/turbanov/actions/Bootstrap.java
@@ -8,6 +8,7 @@
import java.util.Map;
import java.util.function.Function;
+import com.intellij.execution.DefaultExecutionTarget;
import com.intellij.execution.ExecutionTarget;
import com.intellij.execution.ExecutionTargetManager;
import com.intellij.execution.Executor;
@@ -54,8 +55,13 @@ private void registerAction(@NotNull RunnerAndConfigurationSettings runConfig,
AnAction action = actionManager.getAction(actionId);
if (action == null) {
Icon icon = makeIcon(runConfig, executor);
- String text = executor.getActionName() + " '" + runConfig.getName() + "'" +
- (target == null ? "" : " " + target.getDisplayName());
+ String targetAdd;
+ if (target == null || DefaultExecutionTarget.INSTANCE.equals(target)) {
+ targetAdd = "";
+ } else {
+ targetAdd = " " + target.getDisplayName();
+ }
+ String text = executor.getActionName() + " '" + runConfig.getName() + "'" + targetAdd;
String executionTargetId = target == null ? null : target.getId();
action = new RunConfigurationAsAction(runConfig.getName(), executor.getId(), icon, text, executionTargetId);
actionManager.registerAction(actionId, action, PLUGIN_ID);
@@ -113,7 +119,10 @@ private void registerForAllExecutors(@NotNull RunnerAndConfigurationSettings set
@NotNull
private List getTargets(@NotNull RunnerAndConfigurationSettings runConfig) {
- List targets = ExecutionTargetManager.getTargetsToChooseFor(myProject, runConfig);
+ List targets = ExecutionTargetManager.getInstance(myProject).getTargetsFor(runConfig);
+ if (targets.size() == 1 && DefaultExecutionTarget.INSTANCE.equals(targets.get(0))) {
+ return targets;
+ }
targets = new ArrayList<>(targets);
targets.add(null);
return targets;
diff --git a/src/org/turbanov/actions/RunConfigurationAsAction.java b/src/org/turbanov/actions/RunConfigurationAsAction.java
index bd0bac5..73a2e41 100644
--- a/src/org/turbanov/actions/RunConfigurationAsAction.java
+++ b/src/org/turbanov/actions/RunConfigurationAsAction.java
@@ -12,9 +12,9 @@
import com.intellij.execution.ExecutionTargetManager;
import com.intellij.execution.Executor;
import com.intellij.execution.ExecutorRegistry;
-import com.intellij.execution.ProgramRunnerUtil;
import com.intellij.execution.RunManagerEx;
import com.intellij.execution.RunnerAndConfigurationSettings;
+import com.intellij.execution.runners.ExecutionUtil;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.diagnostic.Logger;
@@ -59,27 +59,26 @@ public void actionPerformed(@NotNull AnActionEvent e) {
return;
}
- selectRequiredExecutionTarget(project, runConfig);
+ ExecutionTarget target = getExecutionTarget(project, runConfig);
- ProgramRunnerUtil.executeConfiguration(project, runConfig, executor);
+ ExecutionUtil.runConfiguration(runConfig, executor, target);
}
- private void selectRequiredExecutionTarget(@NotNull Project project, @NotNull RunnerAndConfigurationSettings runConfig) {
- if (executionTargetId == null) {
- return; //use selected as is
- }
+ @NotNull
+ private ExecutionTarget getExecutionTarget(@NotNull Project project, @NotNull RunnerAndConfigurationSettings runConfig) {
ExecutionTargetManager targetManager = ExecutionTargetManager.getInstance(project);
- ExecutionTarget executionTarget = targetManager.getActiveTarget();
- if (executionTargetId.equals(executionTarget.getId())) {
- return; //already selected ours
+ ExecutionTarget active = targetManager.getActiveTarget();
+ if (executionTargetId == null || executionTargetId.equals(active.getId())) {
+ return active; //use selected as is
}
+
List targets = targetManager.getTargetsFor(runConfig);
for (ExecutionTarget target : targets) {
if (target.getId().equals(executionTargetId)) {
- targetManager.setActiveTarget(target);
- return;
+ return target;
}
}
+ return active; //fallback to active
}
public void register() {