mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
EDU-523 Lost automatic code inspection warnings
EP was registered in wrong plugin.xml
This commit is contained in:
+5
@@ -1,6 +1,7 @@
|
||||
package com.jetbrains.edu.coursecreator;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.jetbrains.edu.coursecreator.actions.PyCCRunTestsAction;
|
||||
import com.jetbrains.python.edu.PyExecuteFileExtensionPoint;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -12,4 +13,8 @@ public class PyCCRunTests implements PyExecuteFileExtensionPoint {
|
||||
return new PyCCRunTestsAction();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean accept(Project project) {
|
||||
return CCProjectService.getInstance(project).getCourse() != null;
|
||||
}
|
||||
}
|
||||
@@ -13,11 +13,22 @@
|
||||
]]>
|
||||
</change-notes>
|
||||
|
||||
<!-- please see http://confluence.jetbrains.net/display/IDEADEV/Plugin+Compatibility+with+IntelliJ+Platform+Products
|
||||
on how to target different products -->
|
||||
|
||||
<depends>com.intellij.modules.lang</depends>
|
||||
|
||||
<extensionPoints>
|
||||
<extensionPoint qualifiedName="Edu.executeFile" interface="com.jetbrains.python.edu.PyExecuteFileExtensionPoint"/>
|
||||
</extensionPoints>
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<codeInsight.lineMarkerProvider language="Python" implementationClass="com.jetbrains.python.edu.PyExecuteFileLineMarkerProvider"/>
|
||||
</extensions>
|
||||
|
||||
<extensions defaultExtensionNs="Edu">
|
||||
<executeFile implementation="com.jetbrains.python.edu.PyEduAddParametersAction" order="last"/>
|
||||
<executeFile implementation="com.jetbrains.python.edu.PyDebugCurrentFile"/>
|
||||
|
||||
</extensions>
|
||||
|
||||
<project-components>
|
||||
|
||||
</project-components>
|
||||
|
||||
@@ -19,19 +19,10 @@
|
||||
</component>
|
||||
</application-components>
|
||||
|
||||
<extensionPoints>
|
||||
<extensionPoint qualifiedName="Edu.executeFile" interface="com.jetbrains.python.edu.PyExecuteFileExtensionPoint"/>
|
||||
</extensionPoints>
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<programRunner implementation="com.jetbrains.python.edu.debugger.PyEduDebugRunner"/>
|
||||
<executor implementation="com.jetbrains.python.edu.debugger.PyEduDebugExecutor" order="first,after run"/>
|
||||
<consoleInputFilterProvider implementation="com.jetbrains.python.edu.debugger.PyEduConsoleInputFilterProvider"/>
|
||||
</extensions>
|
||||
<extensions defaultExtensionNs="Edu">
|
||||
<executeFile implementation="com.jetbrains.python.edu.PyEduAddParametersAction" order="last"/>
|
||||
<executeFile implementation="com.jetbrains.python.edu.PyDebugCurrentFile"/>
|
||||
|
||||
</extensions>
|
||||
|
||||
</idea-plugin>
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.jetbrains.python.edu;
|
||||
|
||||
import com.intellij.execution.actions.RunContextAction;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.util.PlatformUtils;
|
||||
import com.jetbrains.python.edu.debugger.PyEduDebugExecutor;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -10,7 +12,15 @@ public class PyDebugCurrentFile implements PyExecuteFileExtensionPoint {
|
||||
@Nullable
|
||||
@Override
|
||||
public AnAction getRunAction() {
|
||||
if (!PlatformUtils.isPyCharmEducational()) {
|
||||
return null;
|
||||
}
|
||||
return new RunContextAction(PyEduDebugExecutor.getInstance());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean accept(Project project) {
|
||||
return PlatformUtils.isPyCharmEducational();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+10
-2
@@ -3,15 +3,23 @@ package com.jetbrains.python.edu;
|
||||
import com.intellij.execution.actions.EditRunConfigurationsAction;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.util.PlatformUtils;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class PyEduAddParametersAction implements PyExecuteFileExtensionPoint {
|
||||
@NotNull
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public AnAction getRunAction() {
|
||||
return new AddParametersAction();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean accept(Project project) {
|
||||
return PlatformUtils.isPyCharmEducational();
|
||||
}
|
||||
|
||||
private static class AddParametersAction extends EditRunConfigurationsAction {
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
|
||||
+2
@@ -17,6 +17,7 @@ package com.jetbrains.python.edu;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public interface PyExecuteFileExtensionPoint {
|
||||
@@ -26,4 +27,5 @@ public interface PyExecuteFileExtensionPoint {
|
||||
@Nullable
|
||||
AnAction getRunAction();
|
||||
|
||||
boolean accept(Project project);
|
||||
}
|
||||
|
||||
+33
-13
@@ -13,9 +13,12 @@ import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.editor.markup.GutterIconRenderer;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.PlatformUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@@ -36,12 +39,34 @@ public class PyExecuteFileLineMarkerProvider implements LineMarkerProvider {
|
||||
}
|
||||
PsiElement file = elements.get(0).getContainingFile();
|
||||
final RunContextAction runAction = new RunContextAction(DefaultRunExecutor.getRunExecutorInstance());
|
||||
final PyExecuteFileExtensionPoint[] extensions =
|
||||
ApplicationManager.getApplication().getExtensions(PyExecuteFileExtensionPoint.EP_NAME);
|
||||
|
||||
final List<AnAction> actions = new ArrayList<AnAction>();
|
||||
final DefaultActionGroup group = new DefaultActionGroup();
|
||||
if (PlatformUtils.isPyCharmEducational()) {
|
||||
group.add(runAction);
|
||||
}
|
||||
for (PyExecuteFileExtensionPoint extension : extensions) {
|
||||
AnAction action = extension.getRunAction();
|
||||
if (action != null && extension.accept(file.getProject())) {
|
||||
actions.add(action);
|
||||
group.add(action);
|
||||
}
|
||||
}
|
||||
|
||||
if (actions.isEmpty() && !PlatformUtils.isPyCharmEducational()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Icon icon = PlatformUtils.isPyCharmEducational() ? AllIcons.Actions.Execute : actions.get(0).getTemplatePresentation().getIcon();
|
||||
final LineMarkerInfo<PsiElement> markerInfo = new LineMarkerInfo<PsiElement>(
|
||||
file, file.getTextRange(), AllIcons.Actions.Execute, Pass.UPDATE_OVERRIDEN_MARKERS,
|
||||
file, file.getTextRange(), icon, Pass.UPDATE_OVERRIDEN_MARKERS,
|
||||
new Function<PsiElement, String>() {
|
||||
@Override
|
||||
public String fun(PsiElement e) {
|
||||
return "Execute '" + e.getContainingFile().getName() + "'";
|
||||
String text = "Execute '" + e.getContainingFile().getName() + "'";
|
||||
return PlatformUtils.isPyCharmEducational() ? text : actions.get(0).getTemplatePresentation().getText();
|
||||
}
|
||||
}, null,
|
||||
GutterIconRenderer.Alignment.RIGHT) {
|
||||
@@ -51,22 +76,17 @@ public class PyExecuteFileLineMarkerProvider implements LineMarkerProvider {
|
||||
return new LineMarkerGutterIconRenderer<PsiElement>(this) {
|
||||
@Override
|
||||
public AnAction getClickAction() {
|
||||
return runAction;
|
||||
return PlatformUtils.isPyCharmEducational() ? runAction : actions.get(0);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ActionGroup getPopupMenuActions() {
|
||||
final DefaultActionGroup group = new DefaultActionGroup();
|
||||
group.add(runAction);
|
||||
final PyExecuteFileExtensionPoint[] extensions =
|
||||
ApplicationManager.getApplication().getExtensions(PyExecuteFileExtensionPoint.EP_NAME);
|
||||
for (PyExecuteFileExtensionPoint extension : extensions) {
|
||||
final AnAction action = extension.getRunAction();
|
||||
if (action == null) {
|
||||
continue;
|
||||
}
|
||||
group.add(action);
|
||||
if (!PlatformUtils.isPyCharmEducational() && actions.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
if (actions.size() == 1) {
|
||||
return null;
|
||||
}
|
||||
return group;
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<directoryProjectGenerator implementation="com.jetbrains.edu.learning.PyStudyDirectoryProjectGenerator"/>
|
||||
<codeInsight.lineMarkerProvider language="Python" implementationClass="com.jetbrains.python.edu.PyExecuteFileLineMarkerProvider"/>
|
||||
</extensions>
|
||||
<extensions defaultExtensionNs="Pythonid">
|
||||
<inspectionExtension implementation="com.jetbrains.edu.learning.highlighting.PyStudyInspectionExtension"/>
|
||||
|
||||
Reference in New Issue
Block a user