diff --git a/lsp/src/main/kotlin/org/gradle/declarative/lsp/DeclarativeTextDocumentService.kt b/lsp/src/main/kotlin/org/gradle/declarative/lsp/DeclarativeTextDocumentService.kt index 70a029b..bd3d976 100644 --- a/lsp/src/main/kotlin/org/gradle/declarative/lsp/DeclarativeTextDocumentService.kt +++ b/lsp/src/main/kotlin/org/gradle/declarative/lsp/DeclarativeTextDocumentService.kt @@ -300,7 +300,8 @@ class DeclarativeTextDocumentService : TextDocumentService { val fileName = uri.path.substringAfterLast('/') val fileSchema = schemaAnalysisEvaluator.evaluate(fileName, text) val settingsSchema = schemaAnalysisEvaluator.evaluate( - declarativeResources.settingsFile.name, declarativeResources.settingsFile.readText() + declarativeResources.settingsFile.name, + declarativeResources.settingsFile.takeIf { it.canRead() }?.readText().orEmpty() ) val document = AnalysisDocumentUtils.documentWithModelDefaults(settingsSchema, fileSchema) diff --git a/tapi-model/src/main/java/org/gradle/declarative/lsp/build/action/GetDeclarativeResourcesModel.java b/tapi-model/src/main/java/org/gradle/declarative/lsp/build/action/GetDeclarativeResourcesModel.java index 9b6f965..f9dd0aa 100644 --- a/tapi-model/src/main/java/org/gradle/declarative/lsp/build/action/GetDeclarativeResourcesModel.java +++ b/tapi-model/src/main/java/org/gradle/declarative/lsp/build/action/GetDeclarativeResourcesModel.java @@ -26,7 +26,9 @@ import org.gradle.tooling.model.gradle.GradleBuild; import java.io.File; +import java.util.Arrays; import java.util.List; +import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.StreamSupport; @@ -103,7 +105,14 @@ public File getRootDir() { @Override public File getSettingsFile() { // TODO: this is an assumption about the location of the settings file – get it from Gradle instead. - return new File(getRootDir(), "settings.gradle.dcl"); + List candidateFileNames = Arrays.asList("settings.gradle.dcl", "settings.gradle.kts"); + Function asFileInRootDirectory = it -> new File(getRootDir(), it); + + return candidateFileNames.stream() + .map(asFileInRootDirectory) + .filter(File::exists) + .findFirst() + .orElse(asFileInRootDirectory.apply(candidateFileNames.get(0))); } @Override