Compare commits

..

No commits in common. "c6e84391e7b14e4f76ec8d183d5b683aef01dbb9" and "fb49472f3461d806c097e17487c31325478740dc" have entirely different histories.

2 changed files with 11 additions and 9 deletions

View file

@ -37,7 +37,7 @@ let diagnostics (_state : state_after_processing) : Lsp.Types.Diagnostic.t list
so that users only need to override methods that they want the server to
actually meaningfully interpret and respond to.
*)
class lsp_server ~(sw: Eio.Switch.t) =
class lsp_server =
object (self)
inherit Linol_eio.Jsonrpc2.server
@ -45,7 +45,7 @@ class lsp_server ~(sw: Eio.Switch.t) =
val buffers : (Lsp.Types.DocumentUri.t, state_after_processing) Hashtbl.t =
Hashtbl.create 32
method spawn_query_handler f = Linol_eio.spawn ~sw f
method spawn_query_handler f = Linol_eio.spawn f
(* We define here a helper method that will:
- process a document
@ -82,8 +82,7 @@ class lsp_server ~(sw: Eio.Switch.t) =
and runs it as a task. *)
let run () =
Eio_main.run @@ fun env ->
Eio.Switch.run @@ fun sw ->
let s = new lsp_server ~sw in
let s = new lsp_server in
let server = Linol_eio.Jsonrpc2.create_stdio ~env s in
let task () =
let shutdown () = s#get_status = `ReceivedExit in

View file

@ -52,14 +52,17 @@ module IO_eio :
end
(** Spawn function. *)
let spawn ~sw f =
Eio.Fiber.fork ~sw (fun () ->
try
f ()
let spawn f =
let promise, resolver = Eio.Promise.create () in
(try
f ();
Eio.Promise.resolve_ok resolver ()
with exn ->
Printf.eprintf "uncaught exception in `spawn`:\n%s\n%!"
(Printexc.to_string exn);
raise exn)
Eio.Promise.resolve_error resolver exn);
Eio.Promise.await_exn promise
include Lsp.Types
include IO_eio