Improve showing the documentation

This commit is contained in:
Rik van der Kleij 2019-10-09 21:36:21 +02:00
parent 0ad6468379
commit 2300421f08
2 changed files with 9 additions and 18 deletions

View File

@ -37,8 +37,7 @@ class HaskellDocumentationProvider extends AbstractDocumentationProvider {
val originalPsiFile = e.getContainingFile.getOriginalFile val originalPsiFile = e.getContainingFile.getOriginalFile
val isSourceFile = HaskellProjectUtil.isSourceFile(originalPsiFile) val isSourceFile = HaskellProjectUtil.isSourceFile(originalPsiFile)
val typeSignature = if (isSourceFile) { val typeSignature = if (isSourceFile) {
val typeInfo = TypeInfoComponent.findTypeInfoForElement(oe).toOption.map(_.typeSignature) TypeInfoComponent.findTypeInfoForElement(oe).toOption.map(_.typeSignature).map(StringUtil.escapeString)
typeInfo.map(StringUtil.escapeString)
} else { } else {
None None
} }
@ -72,17 +71,13 @@ class HaskellDocumentationProvider extends AbstractDocumentationProvider {
HaskellPsiUtil.findQualifiedName(oe) match { HaskellPsiUtil.findQualifiedName(oe) match {
case Some(qone) => case Some(qone) =>
val presentationText = HaskellPsiUtil.findNamedElement(e).flatMap { ne => val presentationText = HaskellPsiUtil.findNamedElement(e).flatMap { ne =>
if (HaskellPsiUtil.findExpression(ne).isDefined || HaskellPsiUtil.findTypeSignatureDeclaration(ne).isDefined) { Some(DoubleNbsp + "<code>" +
None HaskellPsiImplUtil.getItemPresentableText(ne).
} else { replace(" ", HtmlElement.Nbsp).
Some(DoubleNbsp + "<code>" + replace("<", HtmlElement.Lt).
HaskellPsiImplUtil.getItemPresentableText(ne, shortened = false). replace(">", HtmlElement.Gt).
replace(" ", HtmlElement.Nbsp). replace("\n", HtmlElement.Break) +
replace("<", HtmlElement.Lt). "</code>")
replace(">", HtmlElement.Gt).
replace("\n", HtmlElement.Break) +
"</code>")
}
} }
ProgressManager.checkCanceled() ProgressManager.checkCanceled()

View File

@ -231,11 +231,7 @@ object HaskellPsiImplUtil {
HaskellPsiUtil.findNamedElement(element) match { HaskellPsiUtil.findNamedElement(element) match {
case Some(namedElement) => case Some(namedElement) =>
HaskellPsiUtil.findHighestDeclarationElement(element) match { HaskellPsiUtil.findHighestDeclarationElement(element) match {
case Some(de) if de.getIdentifierElements.exists(_ == namedElement) => HaskellPsiUtil.findDeclarationElement(namedElement).map(de => getDeclarationInfo(de, shortened)). case Some(de) => getDeclarationText(de)
orElse(HaskellPsiUtil.findExpression(namedElement).map(e => StringUtil.removeCommentsAndWhiteSpaces(e.getText))).
getOrElse(s"${namedElement.getName} `in` ${getDeclarationInfo(de, shortened)}")
case Some(de) => s"${namedElement.getName} `in` ${getDeclarationInfo(de, shortened)}"
case _ if shortened && HaskellPsiUtil.findExpression(namedElement).isDefined => getContainingLineText(namedElement).getOrElse(namedElement.getName).trim
case _ => HaskellPsiUtil.findExpression(namedElement).map(_.getText).getOrElse(namedElement.getName) case _ => HaskellPsiUtil.findExpression(namedElement).map(_.getText).getOrElse(namedElement.getName)
} }
case _ => element.getText case _ => element.getText