nixpkgs/pkgs/development/ocaml-modules/dolmen/linol-common-migration.patch
StepBroBD cfe014a5a2
ocamlPackages.linol: 0.6 -> 0.10 (#399596)
* ocamlPackages.linol: 0.6 -> 0.10

* ocamlPackages.dolmen_lsp: fix transitive dependency and migrate to linol common types
2025-06-23 10:41:51 +02:00

138 lines
5.0 KiB
Diff

diff --git i/src/lsp/diagnostic.ml w/src/lsp/diagnostic.ml
index 149cde11..bd93298a 100644
--- i/src/lsp/diagnostic.ml
+++ w/src/lsp/diagnostic.ml
@@ -1,13 +1,12 @@
-
(* This file is free software, part of dolmen. See file "LICENSE" for more information *)
-type t = Lsp.Types.Diagnostic.t
+type t = Linol__.Common_.Lsp.Types.Diagnostic.t
let lsp_pos line character =
- Lsp.Types.Position.create ~line ~character
+ Linol__.Common_.Lsp.Types.Position.create ~line ~character
let lsp_range start end_ =
- Lsp.Types.Range.create ~start ~end_
+ Linol__.Common_.Lsp.Types.Range.create ~start ~end_
let start_pos = lsp_pos 1 1
let start_range = lsp_range start_pos start_pos
@@ -23,17 +22,15 @@ let range_of_loc = function
(lsp_pos (l.stop_line - 1) l.stop_column)
let warn ?loc message =
- Lsp.Types.Diagnostic.create ()
+ Linol__.Common_.Lsp.Types.Diagnostic.create ()
~range:(range_of_loc loc)
~severity:Warning
~source:"dolmenls"
~message
let error ?loc message =
- Lsp.Types.Diagnostic.create ()
+ Linol__.Common_.Lsp.Types.Diagnostic.create ()
~range:(range_of_loc loc)
~severity:Error
~source:"dolmenls"
~message
-
-
diff --git i/src/lsp/main.ml w/src/lsp/main.ml
index 8d6fc760..b52dd25c 100644
--- i/src/lsp/main.ml
+++ w/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 i/src/lsp/server.ml w/src/lsp/server.ml
index e895cc6a..a01ed9fb 100644
--- i/src/lsp/server.ml
+++ w/src/lsp/server.ml
@@ -44,25 +44,28 @@ class dolmen_lsp_server =
object(self)
inherit Linol_lwt.Jsonrpc2.server
+ method spawn_query_handler f = Linol_lwt.spawn f
+
(* one env per document *)
- val buffers: (Lsp.Types.DocumentUri.t, State.t) Hashtbl.t = Hashtbl.create 32
+ val buffers: (Linol__.Common_.Lsp.Types.DocumentUri.t, State.t) Hashtbl.t = Hashtbl.create 32
(* A list of include statements of the prelude files *)
val mutable prelude = []
method! config_sync_opts =
(* configure how sync happens *)
- 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 ())
+ let change = Linol__.Common_.Lsp.Types.TextDocumentSyncKind.Incremental in
+ (* Linol__.Common_.Lsp.Types.TextDocumentSyncKind.Full *)
+ Linol__.Common_.Lsp.Types.TextDocumentSyncOptions.create ~openClose:true ~change
+ ~save:(`SaveOptions (Linol__.Common_.Lsp.Types.SaveOptions.create ~includeText:false ()))
()
method private _on_doc
~(notify_back:Linol_lwt.Jsonrpc2.notify_back)
- (uri:Lsp.Types.DocumentUri.t) (contents:string) =
+ (uri:Linol__.Common_.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
+ let uri_path = Linol__.Common_.Lsp.Uri.to_path uri in
+ match Loop.process prelude (preprocess_uri uri_path) (Some contents) with
| Ok state ->
let diags = State.get State.diagnostics state in
Hashtbl.replace buffers uri state;
@@ -79,9 +82,9 @@ class dolmen_lsp_server =
self#_on_doc ~notify_back d.uri new_content
method! on_notification_unhandled
- ~notify_back:_ (n:Lsp.Client_notification.t) =
+ ~notify_back:_ (n:Linol__.Common_.Lsp.Client_notification.t) =
match n with
- | Lsp.Client_notification.ChangeConfiguration { settings; } ->
+ | Linol__.Common_.Lsp.Client_notification.ChangeConfiguration { settings; } ->
begin try
prelude <- mk_prelude (parse_settings settings);
Linol_lwt.Jsonrpc2.IO.return ()
@@ -89,7 +92,7 @@ class dolmen_lsp_server =
Linol_lwt.Jsonrpc2.IO.failwith s
end
| _ ->
- Lwt.return ()
+ Linol_lwt.Jsonrpc2.IO.return ()
method on_notif_doc_did_close ~notify_back d =
Hashtbl.remove buffers d.uri;
diff --git i/src/lsp/state.ml w/src/lsp/state.ml
index f3e89640..3f8a36ab 100644
--- i/src/lsp/state.ml
+++ w/src/lsp/state.ml
@@ -45,7 +45,7 @@ let warn ?file:_ ?loc t warn payload =
in
Format.kfprintf (fun _ ->
let msg = Format.flush_str_formatter () in
- let d = Diagnostic.warn ~loc msg in
+ let d = Diagnostic.warn ~loc (`String msg) in
add_diag d t) Format.str_formatter "%a"
Dolmen_loop.Report.Warning.print (warn, payload)
@@ -67,7 +67,7 @@ let error ?file:_ ?loc t err payload =
(* Print the error message *)
Format.kfprintf (fun _ ->
let msg = Format.flush_str_formatter () in
- let d = Diagnostic.error ~loc msg in
+ let d = Diagnostic.error ~loc (`String msg) in
add_diag d t) Format.str_formatter "%a"
Dolmen_loop.Report.Error.print (err, payload)