diff --git a/build.gradle.kts b/build.gradle.kts index 3e32b8ef..a45585b0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,7 +11,10 @@ plugins { idea } -val javaVersion = providers.gradleProperty("javaVersion").get().toInt() +val javaVersion = property("javaVersion").toString().toInt() +val lsp4ijVersion: String by project +val lsp4ijNightly = property("lsp4ijNightly").toString().toBoolean() +val lsp4ijPluginString = "com.redhat.devtools.lsp4ij:$lsp4ijVersion${if (lsp4ijNightly) "@nightly" else ""}" group = "com.falsepattern" version = providers.gradleProperty("pluginVersion").get() @@ -74,10 +77,12 @@ dependencies { pluginVerifier() zipSigner() + plugin(lsp4ijPluginString) } implementation(project(":zig")) implementation(project(":zon")) + implementation(project(":lsp")) } intellijPlatform { diff --git a/gradle.properties b/gradle.properties index b61e679d..b4d04056 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,6 +9,10 @@ pluginUntilBuild = ideaCommunityVersion = 2024.2.4 javaVersion=21 +lsp4jVersion=0.21.1 +lsp4ijVersion=0.7.0 +lsp4ijNightly=false + kotlin.stdlib.default.dependency = false kotlin.code.style=official org.gradle.configuration-cache = true diff --git a/modules/lsp/build.gradle.kts b/modules/lsp/build.gradle.kts new file mode 100644 index 00000000..9ef3e2d5 --- /dev/null +++ b/modules/lsp/build.gradle.kts @@ -0,0 +1,14 @@ +import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType + +val lsp4ijVersion: String by project +val lsp4jVersion: String by project +val lsp4ijNightly = property("lsp4ijNightly").toString().toBoolean() +val lsp4ijDepString = "${if (lsp4ijNightly) "nightly." else ""}com.jetbrains.plugins:com.redhat.devtools.lsp4ij:$lsp4ijVersion" + +dependencies { + intellijPlatform { + create(IntelliJPlatformType.IntellijIdeaCommunity, providers.gradleProperty("ideaCommunityVersion")) + } + intellijPlatformPluginDependency(lsp4ijDepString) + compileOnly("org.eclipse.lsp4j:org.eclipse.lsp4j:$lsp4jVersion") +} diff --git a/modules/lsp/src/main/kotlin/com/falsepattern/zigbrains/lsp/ZigLanguageServerFactory.kt b/modules/lsp/src/main/kotlin/com/falsepattern/zigbrains/lsp/ZigLanguageServerFactory.kt new file mode 100644 index 00000000..dc6fc140 --- /dev/null +++ b/modules/lsp/src/main/kotlin/com/falsepattern/zigbrains/lsp/ZigLanguageServerFactory.kt @@ -0,0 +1,4 @@ +package com.falsepattern.zigbrains.lsp + +class ZigLanguageServerFactory { +} \ No newline at end of file diff --git a/modules/lsp/src/main/kotlin/com/falsepattern/zigbrains/lsp/ZigStreamConnectionProvider.kt b/modules/lsp/src/main/kotlin/com/falsepattern/zigbrains/lsp/ZigStreamConnectionProvider.kt new file mode 100644 index 00000000..913c5e12 --- /dev/null +++ b/modules/lsp/src/main/kotlin/com/falsepattern/zigbrains/lsp/ZigStreamConnectionProvider.kt @@ -0,0 +1,20 @@ +package com.falsepattern.zigbrains.lsp + +import com.intellij.openapi.diagnostic.Logger +import com.intellij.openapi.project.Project +import com.redhat.devtools.lsp4ij.server.OSProcessStreamConnectionProvider + +class ZigStreamConnectionProvider(private val project: Project): OSProcessStreamConnectionProvider() { + init { + + } + + companion object { + private val LOG = Logger.getInstance(ZigStreamConnectionProvider::class.java) + + suspend fun getCommand(project: Project, full: Boolean) { + + } + } +} + diff --git a/settings.gradle.kts b/settings.gradle.kts index 4a2998fb..9c0037d1 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -3,7 +3,7 @@ plugins { } rootProject.name = "ZigBrains" -include("zig") -project(":zig").projectDir = file("modules/zig") -include("zon") -project(":zon").projectDir = file("modules/zon") \ No newline at end of file +for (module in arrayOf("zig", "zon", "lsp")) { + include(module) + project(":$module").projectDir = file("modules/$module") +}