mirror of https://github.com/sbt/sbt.git
add BuildServerCapabilities
This commit is contained in:
parent
3ae42ae9c6
commit
068fe2ad0a
|
|
@ -27,7 +27,8 @@ import sjsonnew.support.scalajson.unsafe.Converter
|
||||||
object BuildServerProtocol {
|
object BuildServerProtocol {
|
||||||
import sbt.internal.bsp.codec.JsonProtocol._
|
import sbt.internal.bsp.codec.JsonProtocol._
|
||||||
private val bspVersion = "2.0.0-M5"
|
private val bspVersion = "2.0.0-M5"
|
||||||
private val capabilities = BuildClientCapabilities(languageIds = Vector("scala"))
|
private val languageIds = Vector("scala")
|
||||||
|
private val capabilities = BuildServerCapabilities(CompileProvider(languageIds))
|
||||||
|
|
||||||
lazy val globalSettings: Seq[Def.Setting[_]] = Seq(
|
lazy val globalSettings: Seq[Def.Setting[_]] = Seq(
|
||||||
bspWorkspace := Def.taskDyn {
|
bspWorkspace := Def.taskDyn {
|
||||||
|
|
|
||||||
37
protocol/src/main/contraband-scala/sbt/internal/bsp/BuildServerCapabilities.scala
generated
Normal file
37
protocol/src/main/contraband-scala/sbt/internal/bsp/BuildServerCapabilities.scala
generated
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
/**
|
||||||
|
* This code is generated using [[http://www.scala-sbt.org/contraband/ sbt-contraband]].
|
||||||
|
*/
|
||||||
|
|
||||||
|
// DO NOT EDIT MANUALLY
|
||||||
|
package sbt.internal.bsp
|
||||||
|
/** @param compileProvider The languages the server supports compilation via method buildTarget/compile. */
|
||||||
|
final class BuildServerCapabilities private (
|
||||||
|
val compileProvider: Option[sbt.internal.bsp.CompileProvider]) extends Serializable {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
override def equals(o: Any): Boolean = o match {
|
||||||
|
case x: BuildServerCapabilities => (this.compileProvider == x.compileProvider)
|
||||||
|
case _ => false
|
||||||
|
}
|
||||||
|
override def hashCode: Int = {
|
||||||
|
37 * (37 * (17 + "sbt.internal.bsp.BuildServerCapabilities".##) + compileProvider.##)
|
||||||
|
}
|
||||||
|
override def toString: String = {
|
||||||
|
"BuildServerCapabilities(" + compileProvider + ")"
|
||||||
|
}
|
||||||
|
private[this] def copy(compileProvider: Option[sbt.internal.bsp.CompileProvider] = compileProvider): BuildServerCapabilities = {
|
||||||
|
new BuildServerCapabilities(compileProvider)
|
||||||
|
}
|
||||||
|
def withCompileProvider(compileProvider: Option[sbt.internal.bsp.CompileProvider]): BuildServerCapabilities = {
|
||||||
|
copy(compileProvider = compileProvider)
|
||||||
|
}
|
||||||
|
def withCompileProvider(compileProvider: sbt.internal.bsp.CompileProvider): BuildServerCapabilities = {
|
||||||
|
copy(compileProvider = Option(compileProvider))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
object BuildServerCapabilities {
|
||||||
|
|
||||||
|
def apply(compileProvider: Option[sbt.internal.bsp.CompileProvider]): BuildServerCapabilities = new BuildServerCapabilities(compileProvider)
|
||||||
|
def apply(compileProvider: sbt.internal.bsp.CompileProvider): BuildServerCapabilities = new BuildServerCapabilities(Option(compileProvider))
|
||||||
|
}
|
||||||
|
|
@ -21,8 +21,10 @@ package sbt.internal.bsp
|
||||||
- display icons or colors in the user interface.
|
- display icons or colors in the user interface.
|
||||||
Pre-defined tags are listed in `BuildTargetTag` but clients and servers
|
Pre-defined tags are listed in `BuildTargetTag` but clients and servers
|
||||||
are free to define new tags for custom purposes.
|
are free to define new tags for custom purposes.
|
||||||
|
* @param capabilities The capabilities of this build target.
|
||||||
* @param languageIds The set of languages that this target contains.
|
* @param languageIds The set of languages that this target contains.
|
||||||
The ID string for each language is defined in the LSP.
|
The ID string for each language is defined in the LSP.
|
||||||
|
* @param dependencies The direct upstream build target dependencies of this build target
|
||||||
* @param dataKind Kind of data to expect in the `data` field. If this field is not set, the kind of data is not specified.
|
* @param dataKind Kind of data to expect in the `data` field. If this field is not set, the kind of data is not specified.
|
||||||
* @param data Language-specific metadata about this target.
|
* @param data Language-specific metadata about this target.
|
||||||
See ScalaBuildTarget as an example.
|
See ScalaBuildTarget as an example.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
/**
|
||||||
|
* This code is generated using [[http://www.scala-sbt.org/contraband/ sbt-contraband]].
|
||||||
|
*/
|
||||||
|
|
||||||
|
// DO NOT EDIT MANUALLY
|
||||||
|
package sbt.internal.bsp
|
||||||
|
final class CompileProvider private (
|
||||||
|
val languageIds: Vector[String]) extends Serializable {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
override def equals(o: Any): Boolean = o match {
|
||||||
|
case x: CompileProvider => (this.languageIds == x.languageIds)
|
||||||
|
case _ => false
|
||||||
|
}
|
||||||
|
override def hashCode: Int = {
|
||||||
|
37 * (37 * (17 + "sbt.internal.bsp.CompileProvider".##) + languageIds.##)
|
||||||
|
}
|
||||||
|
override def toString: String = {
|
||||||
|
"CompileProvider(" + languageIds + ")"
|
||||||
|
}
|
||||||
|
private[this] def copy(languageIds: Vector[String] = languageIds): CompileProvider = {
|
||||||
|
new CompileProvider(languageIds)
|
||||||
|
}
|
||||||
|
def withLanguageIds(languageIds: Vector[String]): CompileProvider = {
|
||||||
|
copy(languageIds = languageIds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
object CompileProvider {
|
||||||
|
|
||||||
|
def apply(languageIds: Vector[String]): CompileProvider = new CompileProvider(languageIds)
|
||||||
|
}
|
||||||
|
|
@ -15,7 +15,7 @@ final class InitializeBuildResult private (
|
||||||
val displayName: String,
|
val displayName: String,
|
||||||
val version: String,
|
val version: String,
|
||||||
val bspVersion: String,
|
val bspVersion: String,
|
||||||
val capabilities: sbt.internal.bsp.BuildClientCapabilities,
|
val capabilities: sbt.internal.bsp.BuildServerCapabilities,
|
||||||
val data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]) extends Serializable {
|
val data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]) extends Serializable {
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -30,7 +30,7 @@ final class InitializeBuildResult private (
|
||||||
override def toString: String = {
|
override def toString: String = {
|
||||||
"InitializeBuildResult(" + displayName + ", " + version + ", " + bspVersion + ", " + capabilities + ", " + data + ")"
|
"InitializeBuildResult(" + displayName + ", " + version + ", " + bspVersion + ", " + capabilities + ", " + data + ")"
|
||||||
}
|
}
|
||||||
private[this] def copy(displayName: String = displayName, version: String = version, bspVersion: String = bspVersion, capabilities: sbt.internal.bsp.BuildClientCapabilities = capabilities, data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue] = data): InitializeBuildResult = {
|
private[this] def copy(displayName: String = displayName, version: String = version, bspVersion: String = bspVersion, capabilities: sbt.internal.bsp.BuildServerCapabilities = capabilities, data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue] = data): InitializeBuildResult = {
|
||||||
new InitializeBuildResult(displayName, version, bspVersion, capabilities, data)
|
new InitializeBuildResult(displayName, version, bspVersion, capabilities, data)
|
||||||
}
|
}
|
||||||
def withDisplayName(displayName: String): InitializeBuildResult = {
|
def withDisplayName(displayName: String): InitializeBuildResult = {
|
||||||
|
|
@ -42,7 +42,7 @@ final class InitializeBuildResult private (
|
||||||
def withBspVersion(bspVersion: String): InitializeBuildResult = {
|
def withBspVersion(bspVersion: String): InitializeBuildResult = {
|
||||||
copy(bspVersion = bspVersion)
|
copy(bspVersion = bspVersion)
|
||||||
}
|
}
|
||||||
def withCapabilities(capabilities: sbt.internal.bsp.BuildClientCapabilities): InitializeBuildResult = {
|
def withCapabilities(capabilities: sbt.internal.bsp.BuildServerCapabilities): InitializeBuildResult = {
|
||||||
copy(capabilities = capabilities)
|
copy(capabilities = capabilities)
|
||||||
}
|
}
|
||||||
def withData(data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]): InitializeBuildResult = {
|
def withData(data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]): InitializeBuildResult = {
|
||||||
|
|
@ -54,6 +54,6 @@ final class InitializeBuildResult private (
|
||||||
}
|
}
|
||||||
object InitializeBuildResult {
|
object InitializeBuildResult {
|
||||||
|
|
||||||
def apply(displayName: String, version: String, bspVersion: String, capabilities: sbt.internal.bsp.BuildClientCapabilities, data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]): InitializeBuildResult = new InitializeBuildResult(displayName, version, bspVersion, capabilities, data)
|
def apply(displayName: String, version: String, bspVersion: String, capabilities: sbt.internal.bsp.BuildServerCapabilities, data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]): InitializeBuildResult = new InitializeBuildResult(displayName, version, bspVersion, capabilities, data)
|
||||||
def apply(displayName: String, version: String, bspVersion: String, capabilities: sbt.internal.bsp.BuildClientCapabilities, data: sjsonnew.shaded.scalajson.ast.unsafe.JValue): InitializeBuildResult = new InitializeBuildResult(displayName, version, bspVersion, capabilities, Option(data))
|
def apply(displayName: String, version: String, bspVersion: String, capabilities: sbt.internal.bsp.BuildServerCapabilities, data: sjsonnew.shaded.scalajson.ast.unsafe.JValue): InitializeBuildResult = new InitializeBuildResult(displayName, version, bspVersion, capabilities, Option(data))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
27
protocol/src/main/contraband-scala/sbt/internal/bsp/codec/BuildServerCapabilitiesFormats.scala
generated
Normal file
27
protocol/src/main/contraband-scala/sbt/internal/bsp/codec/BuildServerCapabilitiesFormats.scala
generated
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
/**
|
||||||
|
* This code is generated using [[http://www.scala-sbt.org/contraband/ sbt-contraband]].
|
||||||
|
*/
|
||||||
|
|
||||||
|
// DO NOT EDIT MANUALLY
|
||||||
|
package sbt.internal.bsp.codec
|
||||||
|
import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError }
|
||||||
|
trait BuildServerCapabilitiesFormats { self: sbt.internal.bsp.codec.CompileProviderFormats with sjsonnew.BasicJsonProtocol =>
|
||||||
|
implicit lazy val BuildServerCapabilitiesFormat: JsonFormat[sbt.internal.bsp.BuildServerCapabilities] = new JsonFormat[sbt.internal.bsp.BuildServerCapabilities] {
|
||||||
|
override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.internal.bsp.BuildServerCapabilities = {
|
||||||
|
__jsOpt match {
|
||||||
|
case Some(__js) =>
|
||||||
|
unbuilder.beginObject(__js)
|
||||||
|
val compileProvider = unbuilder.readField[Option[sbt.internal.bsp.CompileProvider]]("compileProvider")
|
||||||
|
unbuilder.endObject()
|
||||||
|
sbt.internal.bsp.BuildServerCapabilities(compileProvider)
|
||||||
|
case None =>
|
||||||
|
deserializationError("Expected JsObject but found None")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
override def write[J](obj: sbt.internal.bsp.BuildServerCapabilities, builder: Builder[J]): Unit = {
|
||||||
|
builder.beginObject()
|
||||||
|
builder.addField("compileProvider", obj.compileProvider)
|
||||||
|
builder.endObject()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
27
protocol/src/main/contraband-scala/sbt/internal/bsp/codec/CompileProviderFormats.scala
generated
Normal file
27
protocol/src/main/contraband-scala/sbt/internal/bsp/codec/CompileProviderFormats.scala
generated
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
/**
|
||||||
|
* This code is generated using [[http://www.scala-sbt.org/contraband/ sbt-contraband]].
|
||||||
|
*/
|
||||||
|
|
||||||
|
// DO NOT EDIT MANUALLY
|
||||||
|
package sbt.internal.bsp.codec
|
||||||
|
import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError }
|
||||||
|
trait CompileProviderFormats { self: sjsonnew.BasicJsonProtocol =>
|
||||||
|
implicit lazy val CompileProviderFormat: JsonFormat[sbt.internal.bsp.CompileProvider] = new JsonFormat[sbt.internal.bsp.CompileProvider] {
|
||||||
|
override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.internal.bsp.CompileProvider = {
|
||||||
|
__jsOpt match {
|
||||||
|
case Some(__js) =>
|
||||||
|
unbuilder.beginObject(__js)
|
||||||
|
val languageIds = unbuilder.readField[Vector[String]]("languageIds")
|
||||||
|
unbuilder.endObject()
|
||||||
|
sbt.internal.bsp.CompileProvider(languageIds)
|
||||||
|
case None =>
|
||||||
|
deserializationError("Expected JsObject but found None")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
override def write[J](obj: sbt.internal.bsp.CompileProvider, builder: Builder[J]): Unit = {
|
||||||
|
builder.beginObject()
|
||||||
|
builder.addField("languageIds", obj.languageIds)
|
||||||
|
builder.endObject()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
// DO NOT EDIT MANUALLY
|
// DO NOT EDIT MANUALLY
|
||||||
package sbt.internal.bsp.codec
|
package sbt.internal.bsp.codec
|
||||||
import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError }
|
import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError }
|
||||||
trait InitializeBuildResultFormats { self: sbt.internal.bsp.codec.BuildClientCapabilitiesFormats with sbt.internal.util.codec.JValueFormats with sjsonnew.BasicJsonProtocol =>
|
trait InitializeBuildResultFormats { self: sbt.internal.bsp.codec.BuildServerCapabilitiesFormats with sbt.internal.util.codec.JValueFormats with sjsonnew.BasicJsonProtocol =>
|
||||||
implicit lazy val InitializeBuildResultFormat: JsonFormat[sbt.internal.bsp.InitializeBuildResult] = new JsonFormat[sbt.internal.bsp.InitializeBuildResult] {
|
implicit lazy val InitializeBuildResultFormat: JsonFormat[sbt.internal.bsp.InitializeBuildResult] = new JsonFormat[sbt.internal.bsp.InitializeBuildResult] {
|
||||||
override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.internal.bsp.InitializeBuildResult = {
|
override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.internal.bsp.InitializeBuildResult = {
|
||||||
__jsOpt match {
|
__jsOpt match {
|
||||||
|
|
@ -14,7 +14,7 @@ implicit lazy val InitializeBuildResultFormat: JsonFormat[sbt.internal.bsp.Initi
|
||||||
val displayName = unbuilder.readField[String]("displayName")
|
val displayName = unbuilder.readField[String]("displayName")
|
||||||
val version = unbuilder.readField[String]("version")
|
val version = unbuilder.readField[String]("version")
|
||||||
val bspVersion = unbuilder.readField[String]("bspVersion")
|
val bspVersion = unbuilder.readField[String]("bspVersion")
|
||||||
val capabilities = unbuilder.readField[sbt.internal.bsp.BuildClientCapabilities]("capabilities")
|
val capabilities = unbuilder.readField[sbt.internal.bsp.BuildServerCapabilities]("capabilities")
|
||||||
val data = unbuilder.readField[Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]]("data")
|
val data = unbuilder.readField[Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]]("data")
|
||||||
unbuilder.endObject()
|
unbuilder.endObject()
|
||||||
sbt.internal.bsp.InitializeBuildResult(displayName, version, bspVersion, capabilities, data)
|
sbt.internal.bsp.InitializeBuildResult(displayName, version, bspVersion, capabilities, data)
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@ trait JsonProtocol extends sjsonnew.BasicJsonProtocol
|
||||||
with sbt.internal.bsp.codec.DiagnosticFormats
|
with sbt.internal.bsp.codec.DiagnosticFormats
|
||||||
with sbt.internal.bsp.codec.BuildClientCapabilitiesFormats
|
with sbt.internal.bsp.codec.BuildClientCapabilitiesFormats
|
||||||
with sbt.internal.bsp.codec.InitializeBuildParamsFormats
|
with sbt.internal.bsp.codec.InitializeBuildParamsFormats
|
||||||
|
with sbt.internal.bsp.codec.CompileProviderFormats
|
||||||
|
with sbt.internal.bsp.codec.BuildServerCapabilitiesFormats
|
||||||
with sbt.internal.bsp.codec.InitializeBuildResultFormats
|
with sbt.internal.bsp.codec.InitializeBuildResultFormats
|
||||||
with sbt.internal.bsp.codec.PublishDiagnosticsParamsFormats
|
with sbt.internal.bsp.codec.PublishDiagnosticsParamsFormats
|
||||||
with sbt.internal.bsp.codec.WorkspaceBuildTargetsResultFormats
|
with sbt.internal.bsp.codec.WorkspaceBuildTargetsResultFormats
|
||||||
|
|
|
||||||
|
|
@ -28,14 +28,14 @@ type BuildTarget {
|
||||||
## are free to define new tags for custom purposes.
|
## are free to define new tags for custom purposes.
|
||||||
tags: [String]
|
tags: [String]
|
||||||
|
|
||||||
# The capabilities of this build target.
|
## The capabilities of this build target.
|
||||||
capabilities: sbt.internal.bsp.BuildTargetCapabilities!
|
capabilities: sbt.internal.bsp.BuildTargetCapabilities!
|
||||||
|
|
||||||
## The set of languages that this target contains.
|
## The set of languages that this target contains.
|
||||||
## The ID string for each language is defined in the LSP.
|
## The ID string for each language is defined in the LSP.
|
||||||
languageIds: [String]
|
languageIds: [String]
|
||||||
|
|
||||||
# The direct upstream build target dependencies of this build target
|
## The direct upstream build target dependencies of this build target
|
||||||
dependencies: [sbt.internal.bsp.BuildTargetIdentifier]
|
dependencies: [sbt.internal.bsp.BuildTargetIdentifier]
|
||||||
|
|
||||||
## Kind of data to expect in the `data` field. If this field is not set, the kind of data is not specified.
|
## Kind of data to expect in the `data` field. If this field is not set, the kind of data is not specified.
|
||||||
|
|
@ -158,12 +158,43 @@ type InitializeBuildResult {
|
||||||
bspVersion: String!
|
bspVersion: String!
|
||||||
|
|
||||||
## The capabilities of the build server
|
## The capabilities of the build server
|
||||||
capabilities: sbt.internal.bsp.BuildClientCapabilities!
|
capabilities: sbt.internal.bsp.BuildServerCapabilities!
|
||||||
|
|
||||||
## Additional metadata about the server
|
## Additional metadata about the server
|
||||||
data: sjsonnew.shaded.scalajson.ast.unsafe.JValue
|
data: sjsonnew.shaded.scalajson.ast.unsafe.JValue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type BuildServerCapabilities {
|
||||||
|
## The languages the server supports compilation via method buildTarget/compile.
|
||||||
|
compileProvider: sbt.internal.bsp.CompileProvider
|
||||||
|
|
||||||
|
# The languages the server supports test execution via method buildTarget/test
|
||||||
|
# testProvider: TestProvider
|
||||||
|
|
||||||
|
# The languages the server supports run via method buildTarget/run
|
||||||
|
# runProvider: RunProvider
|
||||||
|
|
||||||
|
# The server can provide a list of targets that contain a
|
||||||
|
# single text document via the method buildTarget/inverseSources
|
||||||
|
# inverseSourcesProvider: Boolean
|
||||||
|
|
||||||
|
# The server provides sources for library dependencies
|
||||||
|
# via method buildTarget/dependencySources
|
||||||
|
# dependencySourcesProvider: Boolean
|
||||||
|
|
||||||
|
# The server provides all the resource dependencies
|
||||||
|
# via method buildTarget/resources
|
||||||
|
# resourcesProvider: Boolean
|
||||||
|
|
||||||
|
# The server sends notifications to the client on build
|
||||||
|
# target change events via buildTarget/didChange
|
||||||
|
# buildTargetChangedProvider: Boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
type CompileProvider {
|
||||||
|
languageIds: [String]
|
||||||
|
}
|
||||||
|
|
||||||
## Publish Diagnostics
|
## Publish Diagnostics
|
||||||
type PublishDiagnosticsParams {
|
type PublishDiagnosticsParams {
|
||||||
## The document where the diagnostics are published.
|
## The document where the diagnostics are published.
|
||||||
|
|
@ -235,10 +266,10 @@ type TaskStartParams {
|
||||||
## Optional message describing the task.
|
## Optional message describing the task.
|
||||||
message: String
|
message: String
|
||||||
|
|
||||||
## Kind of data to expect in the `data` field.
|
# Kind of data to expect in the `data` field.
|
||||||
# dataKind: String
|
# dataKind: String
|
||||||
|
|
||||||
## Optional metadata about the task.
|
# Optional metadata about the task.
|
||||||
# data: Any
|
# data: Any
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue