Source file Did_create_files.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
open Forester_prelude
open Forester_core
open Forester_compiler
open State.Syntax
open struct module L = Lsp.Types end
let compute ({files}: L.CreateFilesParams.t) =
Eio.traceln "recieved DidCreateFiles notification";
Lsp_state.modify @@ fun ({forest; _} as lsp_state) ->
let env = forest.env in
Eio.traceln "client created %d files" (List.length files);
begin
let@ {uri} = List.iter @~ files in
let lsp_uri = L.DocumentUri.of_string uri in
let uri = URI_scheme.lsp_uri_to_uri ~base: forest.config.url lsp_uri in
let path = Eio.Path.(env#fs / (L.DocumentUri.to_path lsp_uri)) in
let doc = Imports.load_tree path in
forest.={uri} <- Document doc
end;
let new_forest = Driver.run_until_done Parse_all forest in
{lsp_state with forest = new_forest}