Shells in OCaml
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix env

+5 -10
+2 -8
src/lib/eval.ml
··· 201 201 202 202 let get_env ?(extra = []) () = 203 203 let env = Eunix.env () in 204 - let rec loop = function 205 - | [] -> [] 206 - | (k, v) :: rest -> ( 207 - match List.assoc_opt k extra with 208 - | Some v' -> (k, v') :: loop rest 209 - | None -> (k, v) :: loop rest) 210 - in 211 - loop env 204 + List.fold_left (fun acc (k, _) -> List.remove_assoc k acc) env extra 205 + |> List.append extra 212 206 213 207 let rec execute_commands initial_ctx local_switch p = 214 208 let rec loop (exit_ctx : ctx Exit.t)
+3 -2
src/lib/interactive.ml
··· 23 23 | Exit.Nonzero { exit_code; _ } -> 24 24 Fmt.pf ppf "[%a] " (pp_colored `Red Fmt.int) exit_code 25 25 in 26 - Fmt.pf Format.str_formatter "%a%a:%s > %!" pp_status ctx 26 + Fmt.pf Format.str_formatter "%a%a:%s >\n%!" pp_status ctx 27 27 Fmt.(pp_colored `Yellow string) 28 28 (Eunix.get_user_and_host ()) 29 29 (Fpath.normalize @@ S.cwd state |> subst_tilde |> Fpath.to_string); ··· 67 67 let run ?(prompt = default_prompt) initial_ctx = 68 68 let rec loop (ctx : Eval.ctx Exit.t) = 69 69 let p = prompt ctx in 70 - match LNoise.linenoise p with 70 + Fmt.pr "%s\r%!" p; 71 + match LNoise.linenoise "" with 71 72 | None -> 72 73 Fmt.pr "exit\n%!"; 73 74 exit 0