diff --git a/python/src/com/jetbrains/python/PythonDocumentationProvider.java b/python/src/com/jetbrains/python/PythonDocumentationProvider.java index 2e86aac213bc..36cf17a7eadf 100644 --- a/python/src/com/jetbrains/python/PythonDocumentationProvider.java +++ b/python/src/com/jetbrains/python/PythonDocumentationProvider.java @@ -49,10 +49,10 @@ public class PythonDocumentationProvider extends QuickDocumentationProvider { PyClass cls = func.getContainingClass(); if (cls != null) { String cls_name = cls.getName(); - cat.append("class ").append(cls_name).append("\n "); + cat.append("class ").append(cls_name).append("\n"); // It would be nice to have class import info here, but we don't know the ctrl+hovered reference and context } - return describeDecorators(func, LSame2, ", ", LSame1).add(describeFunction(func, LSame2, LSame1)).toString(); + return $(cat.toString()).add(describeDecorators(func, LSame2, ", ", LSame1)).add(describeFunction(func, LSame2, LSame1)).toString(); } else if (element instanceof PyClass) { PyClass cls = (PyClass)element; diff --git a/python/testData/quickdoc/HoverOverClass.html b/python/testData/quickdoc/HoverOverClass.html new file mode 100644 index 000000000000..8404accf51be --- /dev/null +++ b/python/testData/quickdoc/HoverOverClass.html @@ -0,0 +1 @@ +class A(object) \ No newline at end of file diff --git a/python/testData/quickdoc/HoverOverClass.py b/python/testData/quickdoc/HoverOverClass.py new file mode 100644 index 000000000000..ad743e3c876a --- /dev/null +++ b/python/testData/quickdoc/HoverOverClass.py @@ -0,0 +1,9 @@ +class A(object): + "Doc of A" + pass + +class B(A): + "Doc of B" + pass + +A diff --git a/python/testData/quickdoc/HoverOverFunction.html b/python/testData/quickdoc/HoverOverFunction.html new file mode 100644 index 000000000000..7986fbeac892 --- /dev/null +++ b/python/testData/quickdoc/HoverOverFunction.html @@ -0,0 +1,2 @@ +def foo(arg) +Inferred return type: int \ No newline at end of file diff --git a/python/testData/quickdoc/HoverOverFunction.py b/python/testData/quickdoc/HoverOverFunction.py new file mode 100644 index 000000000000..86a3fca63e09 --- /dev/null +++ b/python/testData/quickdoc/HoverOverFunction.py @@ -0,0 +1,4 @@ +def foo(arg): + return 1 + +foo diff --git a/python/testData/quickdoc/HoverOverMethod.html b/python/testData/quickdoc/HoverOverMethod.html new file mode 100644 index 000000000000..723b55072df2 --- /dev/null +++ b/python/testData/quickdoc/HoverOverMethod.html @@ -0,0 +1,3 @@ +class A +def f(self) +Inferred return type: int \ No newline at end of file diff --git a/python/testData/quickdoc/HoverOverMethod.py b/python/testData/quickdoc/HoverOverMethod.py new file mode 100644 index 000000000000..5c0f6c775032 --- /dev/null +++ b/python/testData/quickdoc/HoverOverMethod.py @@ -0,0 +1,7 @@ +class A(object): + "doc of A" + + def f(self): + return 1 + +A().f diff --git a/python/testSrc/com/jetbrains/python/PyQuickDocTest.java b/python/testSrc/com/jetbrains/python/PyQuickDocTest.java index 994925735350..f56eff9d9e7d 100644 --- a/python/testSrc/com/jetbrains/python/PyQuickDocTest.java +++ b/python/testSrc/com/jetbrains/python/PyQuickDocTest.java @@ -67,6 +67,14 @@ public class PyQuickDocTest extends LightMarkedTestCase { checkByHTML(myProvider.generateDoc(doc_owner, original_elt)); } + private void checkHover() throws Exception { + Map marks = loadTest(); + final PsiElement original_elt = marks.get(""); + PsiElement ref_elt = original_elt.getParent(); // ident -> expr + final PyDocStringOwner doc_owner = (PyDocStringOwner)((PyReferenceExpression)ref_elt).getReference().resolve(); + checkByHTML(myProvider.getQuickNavigateInfo(doc_owner)); + } + public void testDirectFunc() throws Exception { checkRefDocPair(); } @@ -159,4 +167,17 @@ public class PyQuickDocTest extends LightMarkedTestCase { public void testPropOldDeleter() throws Exception { checkHTMLOnly(); } + + public void testHoverOverClass() throws Exception { + checkHover(); + } + + + public void testHoverOverFunction() throws Exception { + checkHover(); + } + + public void testHoverOverMethod() throws Exception { + checkHover(); + } }