From eecd78b94b55c451a20dc9b07e41bf885e07eebb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20F=C3=B6rster?= Date: Sun, 3 Mar 2019 15:34:59 +0100 Subject: [PATCH] Make MetadataProvider suspendable --- .../texlab/metadata/BibtexEntryTypeMetadataProvider.kt | 2 +- .../texlab/metadata/LatexComponentMetadataProvider.kt | 9 +++++++-- src/main/kotlin/texlab/metadata/MetadataProvider.kt | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/texlab/metadata/BibtexEntryTypeMetadataProvider.kt b/src/main/kotlin/texlab/metadata/BibtexEntryTypeMetadataProvider.kt index f8dc1a21..93c9c8bb 100644 --- a/src/main/kotlin/texlab/metadata/BibtexEntryTypeMetadataProvider.kt +++ b/src/main/kotlin/texlab/metadata/BibtexEntryTypeMetadataProvider.kt @@ -4,7 +4,7 @@ import org.eclipse.lsp4j.MarkupContent import org.eclipse.lsp4j.MarkupKind object BibtexEntryTypeMetadataProvider : MetadataProvider { - override fun getMetadata(name: String): Metadata? { + override suspend fun getMetadata(name: String): Metadata? { val markdown = DOCUMENTATION_BY_NAME[name] ?: return null val documentation = MarkupContent().apply { kind = MarkupKind.MARKDOWN diff --git a/src/main/kotlin/texlab/metadata/LatexComponentMetadataProvider.kt b/src/main/kotlin/texlab/metadata/LatexComponentMetadataProvider.kt index e2c67968..3fb2be1b 100644 --- a/src/main/kotlin/texlab/metadata/LatexComponentMetadataProvider.kt +++ b/src/main/kotlin/texlab/metadata/LatexComponentMetadataProvider.kt @@ -4,15 +4,20 @@ import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue import com.overzealous.remark.Remark +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext import org.eclipse.lsp4j.MarkupContent import org.eclipse.lsp4j.MarkupKind import java.io.IOException import java.net.URL object LatexComponentMetadataProvider : MetadataProvider { - override fun getMetadata(name: String): Metadata? { + override suspend fun getMetadata(name: String): Metadata? { return try { - val json = URL("https://ctan.org/json/2.0/pkg/$name").readText() + val json = withContext(Dispatchers.IO) { + URL("https://ctan.org/json/2.0/pkg/$name").readText() + } + val mapper = jacksonObjectMapper() .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) val result = mapper.readValue(json) diff --git a/src/main/kotlin/texlab/metadata/MetadataProvider.kt b/src/main/kotlin/texlab/metadata/MetadataProvider.kt index d339dc89..8b0899de 100644 --- a/src/main/kotlin/texlab/metadata/MetadataProvider.kt +++ b/src/main/kotlin/texlab/metadata/MetadataProvider.kt @@ -1,5 +1,5 @@ package texlab.metadata interface MetadataProvider { - fun getMetadata(name: String): Metadata? + suspend fun getMetadata(name: String): Metadata? }