package lsp
LSP protocol implementation in OCaml
Install
Dune Dependency
Authors
-
AAndrey Popp <8mayday@gmail.com>
-
RRusty Key <iam@stfoo.ru>
-
LLouis Roché <louis@louisroche.net>
-
OOleksiy Golovko <alexei.golovko@gmail.com>
-
RRudi Grinberg <me@rgrinberg.com>
-
SSacha Ayoun <sachaayoun@gmail.com>
-
Ccannorin <cannorin@gmail.com>
-
UUlugbek Abdullaev <ulugbekna@gmail.com>
-
Thibaut Mattio
-
MMax Lantas <mnxndev@outlook.com>
Maintainers
Sources
jsonrpc-1.8.0.tbz
sha256=90ac8fc3b291bc9c28b93d39fee6c75615f278f70ad795912fa5a47fa1a08c89
sha512=9460328d2559d86e9d56bcf8a9ef722c57d20a53c41e47398c36401bdc13dd9874e885586f2ad2d0492707bc3a5e7d5393afcebe1cbad1c15fb314884502bd1d
doc/src/lsp.stdune/env.ml.html
Source file env.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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
# 1 "submodules/dune/otherlibs/stdune-unstable/env.ml" module Var = struct module T = struct type t = string let compare = if Sys.win32 then fun a b -> String.compare (String.lowercase a) (String.lowercase b) else String.compare let to_dyn = Dyn.Encoder.string end let temp_dir = if Sys.win32 then "TEMP" else "TMPDIR" include Comparable.Make (T) include T end module Map = Var.Map (* The use of [mutable] here is safe, since we never call (back) to the memoization framework when computing [unix]. *) type t = { vars : string Map.t ; mutable unix : string list option } let equal t { vars; unix = _ } = Map.equal ~equal:String.equal t.vars vars let hash { vars; unix = _ } = Hashtbl.hash vars let make vars = { vars; unix = None } let empty = make Map.empty let vars t = Var.Set.of_list (Map.keys t.vars) let get t k = Map.find t.vars k let to_unix t = match t.unix with | Some v -> v | None -> let res = Map.foldi ~init:[] ~f:(fun k v acc -> Printf.sprintf "%s=%s" k v :: acc) t.vars in t.unix <- Some res; res let of_unix arr = Array.to_list arr |> List.map ~f:(fun s -> match String.lsplit2 s ~on:'=' with | None -> Code_error.raise "Env.of_unix: entry without '=' found in the environment" [ ("var", String s) ] | Some (k, v) -> (k, v)) |> Map.of_list_multi |> Map.map ~f:(function | [] -> assert false | x :: _ -> x) let initial = make (of_unix (Unix.environment ())) let add t ~var ~value = make (Map.set t.vars var value) let remove t ~var = make (Map.remove t.vars var) let extend t ~vars = make (Map.superpose t.vars vars) let extend_env x y = extend x ~vars:y.vars let to_dyn t = let open Dyn.Encoder in Map.to_dyn string t.vars let diff x y = Map.merge x.vars y.vars ~f:(fun _k vx vy -> match vy with | Some _ -> None | None -> vx) |> make let update t ~var ~f = make (Map.update t.vars var ~f) let of_string_map m = make (String.Map.foldi ~init:Map.empty ~f:(fun k v acc -> Map.set acc k v) m) let iter t = Map.iteri t.vars let cons_path t ~dir = make (Map.update t.vars "PATH" ~f:(fun _PATH -> Some (Bin.cons_path dir ~_PATH))) let path env = match get env "PATH" with | None -> [] | Some s -> Bin.parse_path s let to_map t = t.vars
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>