diff --git a/sls/src/org/scala/abusers/sls/LSPCancelRequest.scala b/sls/src/org/scala/abusers/sls/LSPCancelRequest.scala new file mode 100644 index 0000000..d940747 --- /dev/null +++ b/sls/src/org/scala/abusers/sls/LSPCancelRequest.scala @@ -0,0 +1,18 @@ +package org.scala.abusers.sls + +import jsonrpclib.fs2.* +import jsonrpclib.CallId + +private case class LSPCancelRequest(id: CallId) + +object LSPCancelRequest { + import io.circe.Codec + given Codec[LSPCancelRequest] = Codec.derived[LSPCancelRequest] + + val cancelTemplate: CancelTemplate = CancelTemplate + .make[LSPCancelRequest]( + "$/cancelRequest", + _.id, + LSPCancelRequest(_) + ) +} diff --git a/sls/src/org/scala/abusers/sls/SimpleLanguageServer.scala b/sls/src/org/scala/abusers/sls/SimpleLanguageServer.scala index c56a486..71ed3d6 100644 --- a/sls/src/org/scala/abusers/sls/SimpleLanguageServer.scala +++ b/sls/src/org/scala/abusers/sls/SimpleLanguageServer.scala @@ -4,7 +4,6 @@ import cats.effect.* import cats.syntax.all.* import jsonrpclib.fs2.* import jsonrpclib.smithy4sinterop.ClientStub -import jsonrpclib.CallId import org.scala.abusers.pc.IOCancelTokens import org.scala.abusers.pc.PresentationCompilerProvider @@ -27,14 +26,12 @@ object BuildServer { object SimpleScalaServer extends IOApp.Simple { import jsonrpclib.smithy4sinterop.ServerEndpoints - val cancelEndpoint = CancelTemplate.make[CallId]("$/cancel", identity, identity) - def run: IO[Unit] = runResource.useForever private def runResource = for { - fs2Channel <- FS2Channel.resource[IO](cancelTemplate = cancelEndpoint.some) + fs2Channel <- FS2Channel.resource[IO](cancelTemplate = LSPCancelRequest.cancelTemplate.some) client <- ClientStub(SlsLanguageClient, fs2Channel).liftTo[IO].toResource serverImpl <- server(client) serverEndpoints <- ServerEndpoints(serverImpl).liftTo[IO].toResource