Skip to content

Commit 2e7f53f

Browse files
committed
Make diagnostics configurable and disableable
1 parent 63dc8af commit 2e7f53f

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.google.gson.JsonDeserializer
66
import com.google.gson.JsonElement
77
import com.google.gson.JsonParseException
88
import org.eclipse.lsp4j.InitializeParams
9+
import org.eclipse.lsp4j.DiagnosticSeverity
910
import java.lang.reflect.Type
1011
import java.nio.file.InvalidPathException
1112
import java.nio.file.Path
@@ -21,6 +22,10 @@ public data class CompletionConfiguration(
2122
)
2223

2324
public data class DiagnosticsConfiguration(
25+
/** Whether diagnostics are enabled. */
26+
var enabled: Boolean = true,
27+
/** The minimum severity of enabled diagnostics. */
28+
var level: DiagnosticSeverity = DiagnosticSeverity.Hint,
2429
/** The time interval between subsequent lints in ms. */
2530
var debounceTime: Long = 250L
2631
)

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,9 @@ class KotlinTextDocumentService(
305305
}
306306

307307
private fun reportDiagnostics(compiled: Collection<URI>, kotlinDiagnostics: Diagnostics) {
308-
val langServerDiagnostics = kotlinDiagnostics.flatMap(::convertDiagnostic)
308+
val langServerDiagnostics = kotlinDiagnostics
309+
.flatMap(::convertDiagnostic)
310+
.filter { config.diagnostics.enabled && it.second.severity <= config.diagnostics.level }
309311
val byFile = langServerDiagnostics.groupBy({ it.first }, { it.second })
310312

311313
for ((uri, diagnostics) in byFile) {

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,17 @@ class KotlinWorkspaceService(
116116
for (diagnosticsKey in listOf("linting", "diagnostics")) {
117117
get(diagnosticsKey)?.asJsonObject?.apply {
118118
val diagnostics = config.diagnostics
119+
get("enabled")?.asBoolean?.let {
120+
diagnostics.enabled = it
121+
}
122+
get("level")?.asString?.let {
123+
diagnostics.level = when (it.lowercase()) {
124+
"error" -> DiagnosticSeverity.Error
125+
"warning" -> DiagnosticSeverity.Warning
126+
"information" -> DiagnosticSeverity.Information
127+
else -> DiagnosticSeverity.Hint
128+
}
129+
}
119130
get("debounceTime")?.asLong?.let {
120131
diagnostics.debounceTime = it
121132
docService.updateDebouncer()

0 commit comments

Comments
 (0)