From 4f8f8948bd139d4571b58a2256fd36ed92a64c42 Mon Sep 17 00:00:00 2001 From: "Ilya.Kazakevich" Date: Thu, 25 Sep 2014 01:59:03 +0400 Subject: [PATCH] PY-13993 "settings.py" can't be found if website name differs from project folder name (TODO: Add tests) --- .../com/intellij/psi/util/PsiUtilBase.java | 17 ++++++++ .../python/PythonFunctionParameters.java | 41 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 python/psi-api/src/com/jetbrains/python/PythonFunctionParameters.java diff --git a/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java b/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java index b63ee1d6ab2d..69ae50ae1f68 100644 --- a/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java +++ b/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java @@ -26,6 +26,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Caret; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileEditor.FileEditor; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.TextEditor; @@ -278,6 +279,22 @@ public class PsiUtilBase extends PsiUtilCore implements PsiEditorUtil { return virtualFile != null && virtualFile.is(VFileProperty.SYMLINK); } + /** + * Get PSI file from virtual file + * @param virtualFile virtual file + * @param project project where conversion takes place + * @return psi file or null if failed to load + */ + @Nullable + public static PsiFile asPsiFile(@NotNull final VirtualFile virtualFile, + @NotNull final Project project) { + final Document document = FileDocumentManager.getInstance().getDocument(virtualFile); + if (document == null) { + return null; + } + return PsiDocumentManager.getInstance(project).getPsiFile(document); + } + @Nullable public static VirtualFile asVirtualFile(@Nullable PsiElement element) { if (element instanceof PsiFileSystemItem) { diff --git a/python/psi-api/src/com/jetbrains/python/PythonFunctionParameters.java b/python/psi-api/src/com/jetbrains/python/PythonFunctionParameters.java new file mode 100644 index 000000000000..0da92758053d --- /dev/null +++ b/python/psi-api/src/com/jetbrains/python/PythonFunctionParameters.java @@ -0,0 +1,41 @@ +package com.jetbrains.python; + +import org.jetbrains.annotations.Nullable; + +/** + * Python function arguments + * + * @author Ilya.Kazakevich + */ +public enum PythonFunctionParameters implements FunctionParameter { + /** + * environment.setdevault(key, failobj) # key + */ + ENV_SET_DEFAULT_KEY("key", 0), + + /** + * environment.setdevault(key, failobj) # failobj + */ + ENV_SET_DEFAULT_FAILOBJ("failobj",1); + + + @Nullable + private final String myName; + private final int myPosition; + + PythonFunctionParameters(@Nullable String name, final int position) { + myName = name; + myPosition = position; + } + + @Override + public int getPosition() { + return myPosition; + } + + @Nullable + @Override + public String getName() { + return myName; + } +}