Изменить ширину вывода утопии
При отображении длинных списков и других больших значений utop оборачивает их примерно в 80 столбцов, даже когда мое окно терминала шире. Как я могу изменить ширину вывода?
Единственное, что я нашел, что могло бы обеспечить решение, это UTop.size
, который имеет тип LTerm_geom.size React.signal
и, кажется, правильно записать размер моего окна терминала. В этом примере мое окно терминала имело размеры 164x37:
# #require "react";;
# #require "lambda-term";;
# React.S.value UTop.size;;
- : LTerm_geom.size = {LTerm_geom.rows = 37; cols = 164}
Тем не менее, значение cols
похоже, не влияет на то, как отображаются значения. Например, это скопировано из того же сеанса (с разрывами строк, как они отображались):
# List.hd algs;;
- : (int list * float) list =
[([2; 1; 0], 1.); ([2; 1], 0.54148398267); ([2; 0], 0.677137905076);
([2], 0.218621887745); ([1; 0], 0.781378112255); ([1], 0.322862094924);
([0], 0.45851601733); ([], 0.)]
1 ответ
Есть функция под названием UTop.set_margin_function
:
μ> #typeof "UTop.set_margin_function";;
val UTop.set_margin_function : (LTerm_geom.size -> int option) -> unit
Вот упрощенный пример использования:
μ> UTop.set_margin_function (fun _ -> Some 150);;
После этого utop будет использовать около 150 столбцов для распечатки результатов.
Вот пример сеанса (shell + utop):
> utop -version
The universal toplevel for OCaml, version 1.19.3, compiled for OCaml version 4.04.1
> cat ~/.ocamlinit
(* Added by OPAM. *)
let () =
try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH")
with Not_found -> ()
;;
> cat ~/.utoprc
cat: .utoprc: No such file or directory
> utop
utop # gen_nat_list 1 50;; (* gen_nat_list is some test function *)
- : int list =
[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]
utop # UTop.set_margin_function (fun _ -> Some 150);;
utop # gen_nat_ist 1 50;;
- : int list =
[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]