Skip to content

Commit a2a7f08

Browse files
committed
Use new MarkupContent API
1 parent 739670d commit a2a7f08

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

server/src/main/kotlin/org/javacs/kt/hover/Hovers.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package org.javacs.kt.hover
22

33
import org.eclipse.lsp4j.Hover
4-
import org.eclipse.lsp4j.MarkedString
4+
import org.eclipse.lsp4j.MarkupContent
55
import org.eclipse.lsp4j.Range
66
import org.eclipse.lsp4j.jsonrpc.messages.Either
77
import com.intellij.openapi.util.TextRange
88
import com.intellij.psi.PsiElement
99
import com.intellij.psi.PsiDocCommentBase
10-
import org.jetbrains.kotlin.idea.kdoc.findKDoc
1110
import org.jetbrains.kotlin.psi.KtExpression
1211
import org.jetbrains.kotlin.psi.KtCallableDeclaration
1312
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
@@ -32,22 +31,23 @@ import org.javacs.kt.signaturehelp.getDocString
3231

3332
fun hoverAt(file: CompiledFile, cursor: Int): Hover? {
3433
val (ref, target) = file.referenceAtPoint(cursor) ?: return typeHoverAt(file, cursor)
35-
val javaDoc = target.findKDoc()?.getContent() ?: ""
34+
val javaDoc = getDocString(file, cursor)
3635
val location = ref.textRange
3736
val hoverText = DECL_RENDERER.render(target)
38-
val hover = Either.forRight<String, MarkedString>(MarkedString("kotlin", hoverText))
37+
val hover = MarkupContent("markdown", listOf("```kotlin\n$hoverText\n```", javaDoc).filter { it.isNotEmpty() }.joinToString("\n---\n"))
3938
val range = Range(
4039
position(file.content, location.startOffset),
4140
position(file.content, location.endOffset))
42-
return Hover(listOf(hover, Either.forLeft(javaDoc)), range)
41+
return Hover(hover, range)
4342
}
4443

4544
private fun typeHoverAt(file: CompiledFile, cursor: Int): Hover? {
4645
val expression = file.parseAtPoint(cursor)?.findParent<KtExpression>() ?: return null
4746
var javaDoc: String = expression.children.mapNotNull { (it as? PsiDocCommentBase)?.text }.map(::renderJavaDoc).firstOrNull() ?: ""
4847
val scope = file.scopeAtPoint(cursor) ?: return null
4948
val hoverText = renderTypeOf(expression, file.bindingContextOf(expression, scope)) ?: return null
50-
return Hover(listOf(Either.forRight(MarkedString("kotlin", hoverText)), Either.forLeft(javaDoc)))
49+
val hover = MarkupContent("markdown", listOf("```kotlin\n$hoverText\n```", javaDoc).filter { it.isNotEmpty() }.joinToString("\n---\n"))
50+
return Hover(hover)
5151
}
5252

5353
// Source: https://github.com/JetBrains/kotlin/blob/master/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinExpressionTypeProvider.kt

server/src/test/kotlin/org/javacs/kt/GradleDSLScriptTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package org.javacs.kt
33
import org.junit.Test
44
import org.junit.Assert.assertThat
55
import org.hamcrest.Matchers.*
6-
import org.eclipse.lsp4j.MarkedString
6+
import org.eclipse.lsp4j.MarkupContent
77

88
class GradleDSLScriptTest : SingleFileTestFixture("kotlinDSLWorkspace", "build.gradle.kts") {
99
@Test fun `edit repositories`() {
@@ -17,6 +17,6 @@ class GradleDSLScriptTest : SingleFileTestFixture("kotlinDSLWorkspace", "build.g
1717
val hover = languageServer.textDocumentService.hover(hoverParams(file, 4, 8)).get()!!
1818
val contents = hover.contents.left.first().right
1919

20-
assertThat(contents, equalTo(MarkedString("kotlin", "fun PluginDependenciesSpec.kotlin(module: String): PluginDependencySpec")))
20+
assertThat(contents, equalTo(MarkupContent("kotlin", "fun PluginDependenciesSpec.kotlin(module: String): PluginDependencySpec")))
2121
}
2222
}

0 commit comments

Comments
 (0)