Skip to content

Commit 74e8fe8

Browse files
committed
Revert "Revert "[242.x] maintain Scala SDK extension impl for intellij-bsp" in idea242.release" #SCL-22999 fixed
#noport This reverts commit 81a6e8a.
1 parent c8f2951 commit 74e8fe8

File tree

4 files changed

+47
-0
lines changed

4 files changed

+47
-0
lines changed

build.sbt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ lazy val scalaCommunity: sbt.Project =
6060
testingSupport % "test->test;compile->compile",
6161
devKitIntegration % "test->test;compile->compile",
6262
gradleIntegration % "test->test;compile->compile",
63+
intellijBspIntegration % "test->test;compile->compile",
6364
intelliLangIntegration % "test->test;compile->compile",
6465
mavenIntegration % "test->test;compile->compile",
6566
junitIntegration % "test->test;compile->compile",
@@ -696,6 +697,13 @@ lazy val gradleIntegration =
696697
"com.intellij.properties").map(_.toPlugin) // required by Gradle
697698
)
698699

700+
lazy val intellijBspIntegration =
701+
newProject("intellij-bsp", file("scala/integration/intellij-bsp"))
702+
.dependsOn(scalaImpl)
703+
.settings(
704+
intellijPlugins += "org.jetbrains.bsp::nightly".toPlugin
705+
)
706+
699707
lazy val intelliLangIntegration = newProject(
700708
"intelliLang",
701709
file("scala/integration/intellilang")

pluginXml/resources/META-INF/plugin.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
<depends optional="true" config-file="scala-i18n.xml">com.intellij.java-i18n</depends>
4646
<depends optional="true" config-file="scala-properties-integration.xml">com.intellij.properties</depends>
4747
<depends optional="true" config-file="scala-gradle-integration.xml">com.intellij.gradle</depends>
48+
<depends optional="true" config-file="scala-intellij-bsp-integration.xml">org.jetbrains.bsp</depends>
4849
<depends optional="true" config-file="decompile-scala-to-java.xml">org.jetbrains.java.decompiler</depends>
4950
<depends optional="true" config-file="scala-ml-completion-integration.xml">com.intellij.completion.ml.ranking</depends>
5051
<depends optional="true" config-file="scala-features-trainer-integration.xml">training</depends>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="iso-8859-1"?>
2+
<idea-plugin>
3+
<extensions defaultExtensionNs="org.jetbrains.bsp">
4+
<scalaSdkExtension implementation="org.jetbrains.plugins.scala.project.bsp.ScalaSdkExtensionImpl"/>
5+
</extensions>
6+
</idea-plugin>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.jetbrains.plugins.scala.project.bsp
2+
3+
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider
4+
import org.jetbrains.plugins.bsp.scala.sdk.ScalaSdkExtension
5+
import org.jetbrains.plugins.bsp.scala.sdk.ScalaSdk
6+
import org.jetbrains.plugins.scala.project.ScalaLanguageLevel
7+
import org.jetbrains.plugins.scala.project.external.ScalaSdkUtils
8+
9+
import java.net.URI
10+
import java.nio.file.Paths
11+
12+
class ScalaSdkExtensionImpl extends ScalaSdkExtension {
13+
14+
override def addScalaSdk(scalaSdk: ScalaSdk, ideModifiableModelsProvider: IdeModifiableModelsProvider): Unit = {
15+
if (ScalaLanguageLevel.findByVersion(scalaSdk.getScalaVersion).isEmpty) return
16+
17+
val scalaSdkName = scalaSdk.getName
18+
val projectLibrariesModel = ideModifiableModelsProvider.getModifiableProjectLibrariesModel
19+
val existingScalaLibrary = projectLibrariesModel.getLibraries.find(_.getName == scalaSdkName)
20+
val sdkJars = scalaSdk.getSdkJars.toArray().map(uri => Paths.get(URI.create(uri.toString)).toFile)
21+
val scalaLibrary = existingScalaLibrary.getOrElse(projectLibrariesModel.createLibrary(scalaSdkName))
22+
23+
ScalaSdkUtils.ensureScalaLibraryIsConvertedToScalaSdk(
24+
modelsProvider = ideModifiableModelsProvider,
25+
library = scalaLibrary,
26+
maybeVersion = Some(scalaSdk.getScalaVersion),
27+
compilerClasspath = sdkJars.toSeq,
28+
scaladocExtraClasspath = Nil,
29+
compilerBridgeBinaryJar = None
30+
)
31+
}
32+
}

0 commit comments

Comments
 (0)