Skip to content

Commit 878c973

Browse files
Only accept config under "effekt" key (#1050)
Unifies the server side with effekt-lang/effekt-vscode#91. I think we should wait with merging this at least until a new release of the VSCode extension has been made. We could also have a longer transition period, since there is urgency to stop accepting configuration not nested under an `"effekt"` key.
1 parent 66a3076 commit 878c973

File tree

2 files changed

+9
-12
lines changed

2 files changed

+9
-12
lines changed

effekt/jvm/src/main/scala/effekt/Server.scala

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -501,18 +501,15 @@ class Server(config: EffektConfig, compileOnChange: Boolean=false) extends Langu
501501
//
502502

503503
def didChangeConfiguration(params: DidChangeConfigurationParams): Unit = {
504-
// The configuration can be sent as a flat JSON object `{ "showIR": "core", ... }` or
505-
// nested under an "effekt" key `{ "effekt": { "showIR": "core", ... } }`
506-
// The former is sent by the VSCode extension for `initializationOptions`,
507-
// the latter by newer extension versions for `workspace/didChangeConfiguration`.
504+
// The configuration arrives as a JSON object nested under the "effekt" key
505+
// `{ "effekt": { "showIR": "core", ... } }`
508506
val newSettings = params.getSettings.asInstanceOf[JsonElement]
509507
// When the settings come via `initializationOptions`, they can be null as per the LSP spec.
510508
if (newSettings.isJsonNull) {
511509
this.settings = null;
512510
return;
513511
}
514512
val newSettingsObj = newSettings.getAsJsonObject
515-
this.settings = newSettingsObj;
516513
val effektSection = newSettingsObj.get("effekt")
517514
if (effektSection != null) {
518515
this.settings = effektSection

effekt/jvm/src/test/scala/effekt/LSPTests.scala

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ class LSPTests extends FunSuite {
419419
server.getTextDocumentService().didOpen(didOpenParams)
420420

421421
val configParams = new DidChangeConfigurationParams()
422-
val settings: JsonElement = JsonParser.parseString("""{"showExplanations": true}""")
422+
val settings: JsonElement = JsonParser.parseString("""{"effekt": {"showExplanations": true}}""")
423423
configParams.setSettings(settings)
424424
server.getWorkspaceService().didChangeConfiguration(configParams)
425425

@@ -1179,7 +1179,7 @@ class LSPTests extends FunSuite {
11791179
raw"""def main() = <>""".textDocument
11801180
val textDoc = new TextDocumentItem("file://path/to/test.effekt", "effekt", 0, source.getText)
11811181
val initializeParams = new InitializeParams()
1182-
val initializationOptions = """{"showIR": "source"}"""
1182+
val initializationOptions = """{"effekt": {"showIR": "source"}}"""
11831183
initializeParams.setInitializationOptions(JsonParser.parseString(initializationOptions))
11841184
server.initialize(initializeParams).get()
11851185

@@ -1270,7 +1270,7 @@ class LSPTests extends FunSuite {
12701270
|"""
12711271
val textDoc = new TextDocumentItem("file://path/to/test.effekt", "effekt", 0, source.stripMargin)
12721272
val initializeParams = new InitializeParams()
1273-
val initializationOptions = """{"showIR": "source"}"""
1273+
val initializationOptions = """{"effekt": {"showIR": "source"}}"""
12741274
initializeParams.setInitializationOptions(JsonParser.parseString(initializationOptions))
12751275
server.initialize(initializeParams).get()
12761276

@@ -1326,7 +1326,7 @@ class LSPTests extends FunSuite {
13261326
|def bar(x: String): Int = <{ <> }> // a hole within a hole
13271327
|""".textDocument
13281328
val initializeParams = new InitializeParams()
1329-
val initializationOptions = """{"showHoles": true}"""
1329+
val initializationOptions = """{"effekt": {"showHoles": true}}"""
13301330
initializeParams.setInitializationOptions(JsonParser.parseString(initializationOptions))
13311331
server.initialize(initializeParams).get()
13321332

@@ -1394,7 +1394,7 @@ class LSPTests extends FunSuite {
13941394
|""".stripMargin)
13951395

13961396
val initializeParams = new InitializeParams()
1397-
val initializationOptions = """{"showHoles": true}"""
1397+
val initializationOptions = """{"effekt": {"showHoles": true}}"""
13981398
initializeParams.setInitializationOptions(JsonParser.parseString(initializationOptions))
13991399
server.initialize(initializeParams).get()
14001400

@@ -1419,7 +1419,7 @@ class LSPTests extends FunSuite {
14191419
|""".textDocument
14201420

14211421
val initializeParams = new InitializeParams()
1422-
val initializationOptions = """{"showHoles": true}"""
1422+
val initializationOptions = """{"effekt": {"showHoles": true}}"""
14231423
initializeParams.setInitializationOptions(JsonParser.parseString(initializationOptions))
14241424
server.initialize(initializeParams).get()
14251425

@@ -1485,7 +1485,7 @@ class LSPTests extends FunSuite {
14851485
|""".textDocument
14861486

14871487
val initializeParams = new InitializeParams()
1488-
val initializationOptions = """{"showHoles": true}"""
1488+
val initializationOptions = """{"effekt": {"showHoles": true}}"""
14891489
initializeParams.setInitializationOptions(JsonParser.parseString(initializationOptions))
14901490
server.initialize(initializeParams).get()
14911491

0 commit comments

Comments
 (0)