From f9ab833e50938f93501b05479e806bebd087ec73 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Wed, 7 Dec 2016 12:53:13 +0300 Subject: [PATCH] fix doubled run current file linemarker LineMarkerPass now queries providers twice: for visible (inner) and invisible (outer) elements so we need to find actual psi file in elements array. --- .../python/edu/PyExecuteFileLineMarkerProvider.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/python/educational-python/src/com/jetbrains/python/edu/PyExecuteFileLineMarkerProvider.java b/python/educational-python/src/com/jetbrains/python/edu/PyExecuteFileLineMarkerProvider.java index d7c21651c1f5..8a5292e57cc9 100644 --- a/python/educational-python/src/com/jetbrains/python/edu/PyExecuteFileLineMarkerProvider.java +++ b/python/educational-python/src/com/jetbrains/python/edu/PyExecuteFileLineMarkerProvider.java @@ -12,6 +12,7 @@ import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.markup.GutterIconRenderer; import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; import com.intellij.util.PlatformUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -20,6 +21,7 @@ import javax.swing.*; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Optional; /** * @author traff @@ -36,7 +38,10 @@ public class PyExecuteFileLineMarkerProvider implements LineMarkerProvider { if (elements.isEmpty()) { return; } - PsiElement file = elements.get(0).getContainingFile(); + Optional psiElement = elements.stream().filter((element) -> element instanceof PsiFile).findFirst(); + if (!psiElement.isPresent()) return; + final PsiElement file = psiElement.get(); + final RunContextAction runAction = new PyStudyRunContextAction(DefaultRunExecutor.getRunExecutorInstance()); final PyExecuteFileExtensionPoint[] extensions = ApplicationManager.getApplication().getExtensions(PyExecuteFileExtensionPoint.EP_NAME);