Commit 3c32085e authored by Yifei Sun's avatar Yifei Sun Committed by Vincent Laporte
Browse files

dolmen_lsp: init at 0.10

parent b82403ad
Loading
Loading
Loading
Loading
+43 −0
Original line number Diff line number Diff line
diff --git a/src/lsp/main.ml b/src/lsp/main.ml
index 8d6fc760..b52dd25c 100644
--- a/src/lsp/main.ml
+++ b/src/lsp/main.ml
@@ -3,7 +3,7 @@
 
 let run () =
   let s = new Server.dolmen_lsp_server in
-  let server = Linol_lwt.Jsonrpc2.create_stdio s in
+  let server = Linol_lwt.Jsonrpc2.create_stdio ~env:() s in
   let task = Linol_lwt.Jsonrpc2.run server in
   match Linol_lwt.run task with
   | () -> ()
diff --git a/src/lsp/server.ml b/src/lsp/server.ml
index e895cc6a..c9a3f237 100644
--- a/src/lsp/server.ml
+++ b/src/lsp/server.ml
@@ -44,6 +44,8 @@ class dolmen_lsp_server =
   object(self)
     inherit Linol_lwt.Jsonrpc2.server
 
+    method spawn_query_handler _ = ()
+
     (* one env per document *)
     val buffers: (Lsp.Types.DocumentUri.t, State.t) Hashtbl.t = Hashtbl.create 32
 
@@ -55,14 +57,14 @@ class dolmen_lsp_server =
       let change = Lsp.Types.TextDocumentSyncKind.Incremental in
       (* Lsp.Types.TextDocumentSyncKind.Full *)
       Lsp.Types.TextDocumentSyncOptions.create ~openClose:true ~change
-        ~save:(Lsp.Types.SaveOptions.create ~includeText:false ())
+        ~save:(`SaveOptions (Lsp.Types.SaveOptions.create ~includeText:false ()))
         ()
 
     method private _on_doc
         ~(notify_back:Linol_lwt.Jsonrpc2.notify_back)
         (uri:Lsp.Types.DocumentUri.t) (contents:string) =
       (* TODO: unescape uri/translate it to a correct path ? *)
-      match Loop.process prelude (preprocess_uri uri) (Some contents) with
+      match Loop.process prelude (preprocess_uri (Lsp.Types.DocumentUri.to_string uri)) (Some contents) with
       | Ok state ->
         let diags = State.get State.diagnostics state in
         Hashtbl.replace buffers uri state;
+34 −0
Original line number Diff line number Diff line
{
  lib,
  buildDunePackage,
  dolmen,
  dolmen_loop,
  dolmen_type,
  linol,
  linol-lwt,
  logs,
# lsp, # transitive dependency from linol
}:

buildDunePackage {
  pname = "dolmen_lsp";
  inherit (dolmen) src version;

  patches = [ ./linol-lwt-6.patch ];

  buildInputs = [
    dolmen
    dolmen_loop
    dolmen_type
    linol
    linol-lwt
    logs
    # lsp # transitive dependency from linol
  ];

  meta = dolmen.meta // {
    description = "A LSP server for automated deduction languages";
    mainProgram = "dolmenls";
    maintainers = [ lib.maintainers.stepbrobd ];
  };
}
+2 −0
Original line number Diff line number Diff line
@@ -361,6 +361,8 @@ let

    dolmen_loop =  callPackage ../development/ocaml-modules/dolmen/loop.nix { };

    dolmen_lsp =  callPackage ../development/ocaml-modules/dolmen/lsp.nix { };

    dolmen_type =  callPackage ../development/ocaml-modules/dolmen/type.nix { };

    dolog = callPackage ../development/ocaml-modules/dolog { };