File tree Expand file tree Collapse file tree 3 files changed +29
-8
lines changed Expand file tree Collapse file tree 3 files changed +29
-8
lines changed Original file line number Diff line number Diff line change @@ -112,10 +112,7 @@ module Poll =
112112 | s -> Ok (`Mtime s.st_mtime)
113113 ;;
114114
115- let read_file s =
116- Fiber. of_thunk (fun () ->
117- Fiber. return (Result. try_with (fun () -> Io.String_path. read_file s)))
118- ;;
115+ let read_file s = Fiber. of_thunk (fun () -> Fiber. return (Io. read_file s))
119116 end )
120117
121118type config =
Original file line number Diff line number Diff line change @@ -10,7 +10,6 @@ include struct
1010 module Table = Table
1111 module Tuple = Tuple
1212 module Unix_env = Env
13- module Io = Io
1413 module Map = Map
1514 module Monoid = Monoid
1615 module Pid = Pid
@@ -19,6 +18,31 @@ include struct
1918 let sprintf = sprintf
2019end
2120
21+ module Io = struct
22+ open Base
23+
24+ let read_file f =
25+ Base.Result. try_with (fun () ->
26+ let fd = Unix. openfile f [ O_CLOEXEC ; O_RDONLY ] 0 in
27+ Exn. protect
28+ ~finally: (fun () -> Unix. close fd)
29+ ~f: (fun () ->
30+ match Unix. fstat fd with
31+ | { Unix. st_size; _ } ->
32+ let buf = Bytes. create st_size in
33+ let rec loop pos remains =
34+ if remains > 0
35+ then (
36+ let read = Unix. read fd buf pos remains in
37+ if read = 0
38+ then failwith (sprintf " unable to read all of %s" f)
39+ else loop (pos + read) (remains - read))
40+ in
41+ loop 0 st_size;
42+ Stdlib.Bytes. unsafe_to_string buf))
43+ ;;
44+ end
45+
2246include struct
2347 open Base
2448 module Queue = Queue
Original file line number Diff line number Diff line change @@ -79,12 +79,12 @@ let language_id_of_fname s =
7979let open_document_from_file (state : State.t ) uri =
8080 let filename = Uri. to_path uri in
8181 Fiber. of_thunk (fun () ->
82- match Io.String_path. read_file filename with
83- | exception Sys_error _ ->
82+ match Io. read_file filename with
83+ | Error _ ->
8484 Log. log ~section: " debug" (fun () ->
8585 Log. msg " Unable to open file" [ " filename" , `String filename ]);
8686 Fiber. return None
87- | text ->
87+ | Ok text ->
8888 let languageId = language_id_of_fname filename in
8989 let text_document = TextDocumentItem. create ~uri ~language Id ~version: 0 ~text in
9090 let params = DidOpenTextDocumentParams. create ~text Document:text_document in
You can’t perform that action at this time.
0 commit comments