package linenoise
Lightweight readline alternative
Install
Dune Dependency
Authors
Maintainers
Sources
linenoise-1.5.tbz
sha256=3031940f6068c5701cc64b87855998cda129573f67a753fde567b520894c9d40
sha512=5ad7a0a5fb0401fa866549a773e44c12c66bf723a927ea729be6bb0732af7df5bb83a0784805aec165488588453ac10868c3c872904b70fcef61c54b4ca0e6cd
Description
Published: 26 Feb 2024
README
Linenoise in OCaml
Benefits
BSD licensed.
No system dependencies, no need for
readline
on your machine.Related to 2, these bindings are self-contained, the source for
linenoise
is in this repo and compiled all together with theOCaml
.Written in OCaml + C.
Pretty cool hints feature, see the gif.
Additional features compared to linenoise, such as history search
Installation
It is easy with opam
$ opam install linenoise
See the pretty documentation here
Example code
This example is also included in the repo under examples:
let rec user_input prompt cb =
match LNoise.linenoise prompt with
| None -> ()
| Some v ->
cb v;
user_input prompt cb
let () =
(* LNoise.set_multiline true; *)
LNoise.set_hints_callback (fun line ->
if line <> "git remote add " then None
else Some (" <this is the remote name> <this is the remote URL>",
LNoise.Yellow,
true)
);
LNoise.history_load ~filename:"history.txt" |> ignore;
LNoise.history_set ~max_length:100 |> ignore;
LNoise.set_completion_callback begin fun line_so_far ln_completions ->
if line_so_far <> "" && line_so_far.[0] = 'h' then
["Hey"; "Howard"; "Hughes";"Hocus"]
|> List.iter (LNoise.add_completion ln_completions);
end;
["These are OCaml bindings to linenoise";
"get tab completion with <TAB>, type h then hit <TAB>";
"type quit to exit gracefully";
"By Edgar Aroutiounian\n"]
|> List.iter print_endline;
(fun from_user ->
if from_user = "quit" then exit 0;
LNoise.history_add from_user |> ignore;
LNoise.history_save ~filename:"history.txt" |> ignore;
Printf.sprintf "Got: %s" from_user |> print_endline
)
|> user_input "test_program> "
Dev Dependencies (1)
-
odoc
with-doc
Used by (12)
-
alba
>= "0.4.1"
- asli
- baguette_sharp
- bap-analyze
-
beluga
>= "1.0"
-
gobba
>= "0.4.2"
-
links
>= "0.7"
-
ocamline
>= "1.2"
-
ogen
= "0.1.2" | >= "0.1.4"
- ppx_interact
- sail
- tcalc
Conflicts
None
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page