Ledit is an OCaml readline replacement, capable of being used either as a standalone wrapper for line-based interactive programs, or included in your program as a library. This tutorial describes the latter use.
Get the ledit sources from the main FTP site, or use your distribution's package if one is provided.
~ $ cd ledit-1.11 ~/ledit-1.11 $ perl -pi -e 's/-o pa_local.ppo/-o pa_local.ppo -loc loc/' Makefile ~/ledit-1.11 $ make ~/ledit-1.11 $ make ledit.cmx # make the .cmx library too if desired
Now let's write a simple readline program to demonstrate the use of the library.
let readline prompt = Ledit.set_prompt prompt; let buf = Buffer.create 256 in let rec loop c = match c with | '\n' -> Buffer.contents buf | _ -> Buffer.add_char buf c; loop (Ledit.input_char stdin) in loop (Ledit.input_char stdin);; let quit_loop = ref false in print_endline "Ledit demo. Enter '#quit' or Ctrl-D to exit"; print_endline "-------------------------------------------"; flush stdout; try while not !quit_loop do let str = readline "Say something> " in if str = "#quit" then quit_loop := true done with End_of_file -> print_newline ();;
~/readline $ ocamlopt unix.cmxa cursor.cmx ledit.cmx readline.ml -o readline ~/readline $ ./readlineLedit demo. Enter '#quit' or Ctrl-D to exit ------------------------------------------- Say something> fdgdfg Say something> dfgsdfgs Say something> fdb Say something> #quit ~/readline $
With a few small changes, Ledit can be made to compile and install automatically using OCamlMakefile (Compiling with GNU make). See Ledit with OCamlMakefile for details.