added resolve in module for PyCharm EDU

This commit is contained in:
Ekaterina Tuzova
2015-09-08 14:25:57 +03:00
parent 696f86c25d
commit 6e2d427be8
2 changed files with 31 additions and 0 deletions
@@ -24,6 +24,7 @@
<extensions defaultExtensionNs="Pythonid">
<inspectionExtension implementation="com.jetbrains.edu.learning.highlighting.PyStudyInspectionExtension"/>
<pyReferenceResolveProvider implementation="com.jetbrains.edu.learning.PyStudyReferenceResolveProvider"/>
<importResolver implementation="com.jetbrains.edu.learning.PyStudyImportResolver"/>
</extensions>
<extensions defaultExtensionNs="Edu">
<StudyExecutor implementationClass="com.jetbrains.edu.learning.PyStudyExecutor" language="Python"/>
@@ -0,0 +1,30 @@
package com.jetbrains.edu.learning;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.util.QualifiedName;
import com.jetbrains.python.psi.impl.PyImportResolver;
import com.jetbrains.python.psi.resolve.QualifiedNameResolveContext;
import org.jetbrains.annotations.Nullable;
public class PyStudyImportResolver implements PyImportResolver {
@Nullable
public PsiElement resolveImportReference(QualifiedName name, QualifiedNameResolveContext context, boolean withRoots) {
if (StudyTaskManager.getInstance(context.getProject()).getCourse() == null) {
return null;
}
final String nameString = name.toString();
PsiFile containingFile = context.getFootholdFile();
if (containingFile == null) return null;
final PsiDirectory directory = containingFile.getContainingDirectory();
if (directory == null) return null;
final PsiFile file = directory.findFile(nameString + ".py");
if (file != null) {
return file;
}
return null;
}
}