Skip to content

Commit a5d185a

Browse files
committed
Expose ranged semantic tokens through LSP
1 parent 5a18965 commit a5d185a

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

server/src/main/kotlin/org/javacs/kt/KotlinLanguageServer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class KotlinLanguageServer : LanguageServer, LanguageClientAware, Closeable {
8282
serverCapabilities.documentSymbolProvider = Either.forLeft(true)
8383
serverCapabilities.workspaceSymbolProvider = Either.forLeft(true)
8484
serverCapabilities.referencesProvider = Either.forLeft(true)
85-
serverCapabilities.semanticTokensProvider = SemanticTokensWithRegistrationOptions(semanticTokensLegend, true)
85+
serverCapabilities.semanticTokensProvider = SemanticTokensWithRegistrationOptions(semanticTokensLegend, true, true)
8686
serverCapabilities.codeActionProvider = Either.forLeft(true)
8787
serverCapabilities.documentFormattingProvider = Either.forLeft(true)
8888
serverCapabilities.documentRangeFormattingProvider = Either.forLeft(true)

server/src/main/kotlin/org/javacs/kt/KotlinTextDocumentService.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,20 @@ class KotlinTextDocumentService(
240240
}
241241
}
242242

243+
override fun semanticTokensRange(params: SemanticTokensRangeParams) = async.compute {
244+
LOG.info("Ranged semantic tokens in {}", describeURI(params.textDocument.uri))
245+
246+
reportTime {
247+
val uri = parseURI(params.textDocument.uri)
248+
val file = sp.currentVersion(uri)
249+
250+
val tokens = semanticTokens(file, params.range)
251+
LOG.info("Found {} tokens", tokens.size)
252+
253+
SemanticTokens(tokens)
254+
}
255+
}
256+
243257
override fun resolveCodeLens(unresolved: CodeLens): CompletableFuture<CodeLens> {
244258
TODO("not implemented")
245259
}

0 commit comments

Comments
 (0)