mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-842
Make Quick documentation lookup work in pydev console
This commit is contained in:
@@ -6,6 +6,8 @@ import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.xml.util.XmlStringUtil;
|
||||
import com.jetbrains.python.console.PydevConsoleRunner;
|
||||
import com.jetbrains.python.console.PydevDocumentationProvider;
|
||||
import com.jetbrains.python.psi.*;
|
||||
import com.jetbrains.python.psi.impl.PyBuiltinCache;
|
||||
import com.jetbrains.python.psi.impl.PyCallExpressionHelper;
|
||||
@@ -165,6 +167,10 @@ public class PythonDocumentationProvider extends QuickDocumentationProvider {
|
||||
|
||||
// provides ctrl+Q doc
|
||||
public String generateDoc(PsiElement element, final PsiElement originalElement) {
|
||||
if (element != null && PydevConsoleRunner.isInPydevConsole(element) ||
|
||||
originalElement != null && PydevConsoleRunner.isInPydevConsole(originalElement)){
|
||||
return PydevDocumentationProvider.createDoc(element, originalElement);
|
||||
}
|
||||
ChainIterable<String> cat = new ChainIterable<String>(); // our main output sequence
|
||||
final ChainIterable<String> prolog_cat = new ChainIterable<String>(); // sequence for reassignment info, etc
|
||||
final ChainIterable<String> doc_cat = new ChainIterable<String>(); // sequence for doc string
|
||||
|
||||
@@ -224,7 +224,12 @@ public class PydevConsoleRunner extends AbstractConsoleRunnerWithHistory {
|
||||
}
|
||||
|
||||
public static boolean isInPydevConsole(final PsiElement element){
|
||||
return element.getContainingFile().getCopyableUserData(CONSOLE_KEY) != null;
|
||||
return getConsoleCommunication(element) != null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static PydevConsoleCommunication getConsoleCommunication(final PsiElement element) {
|
||||
return element.getContainingFile().getCopyableUserData(CONSOLE_KEY);
|
||||
}
|
||||
|
||||
public static String createExtendPathCommand(Module module) {
|
||||
|
||||
@@ -3,6 +3,10 @@ package com.jetbrains.python.console;
|
||||
import com.intellij.lang.documentation.QuickDocumentationProvider;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.jetbrains.python.console.pydev.PydevConsoleCommunication;
|
||||
import com.jetbrains.python.psi.PyExpression;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author oleg
|
||||
@@ -21,11 +25,29 @@ public class PydevDocumentationProvider extends QuickDocumentationProvider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String generateDoc(PsiElement element, PsiElement originalElement) {
|
||||
public String generateDoc(final PsiElement element, final PsiElement originalElement) {
|
||||
// Process PydevConsoleElement case
|
||||
if (element instanceof PydevConsoleElement){
|
||||
return PydevConsoleElement.generateDoc((PydevConsoleElement)element);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static String createDoc(final PsiElement element, final PsiElement originalElement) {
|
||||
final PyExpression expression = PsiTreeUtil.getParentOfType(originalElement, PyExpression.class);
|
||||
if (expression == null){
|
||||
return null;
|
||||
}
|
||||
final PydevConsoleCommunication communication = PydevConsoleRunner.getConsoleCommunication(originalElement);
|
||||
if (communication == null){
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return communication.getDescription(expression.getText());
|
||||
}
|
||||
catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user