Warning: Reason support is experimental. We are looking for beta-tester and contributors.

Module Lwt_read_line.Terminal

module Terminal: sig..end

Rendering to the terminal


type state

State of rendering

val init : state

Initial state


The following functions are the one used by read-line functions of this module.

type box =

|Box_none(*No box at all*)
|Box_empty(*An empty box*)
|Box_words of Lwt_read_line.text_set * int(*BM_words(words, position) is a box with the given list of words. position is the position of the selected word in the list..*)
|Box_message of string(*A box containing only the given message*)

Box for the completion:

val draw :
   columns:int ->
    ?map_text:(Text.t -> Text.t) ->
    ?box:box ->
    render_state:state ->
    engine_state:Lwt_read_line.Engine.state ->
    prompt:Lwt_read_line.prompt ->
    unit -> Lwt_term.styled_text * state

draw ~column ?map_text ?bar ~render_state ~engine_state prompt () returns (text, state) where state is the new rendering state, and text is a text containing escape sequences. When printed, it will update the displayed state.

map_text : is a function used to map user input before printing it, for example to hide passwords.

box : defaults to Box_none.

val last_draw :
   columns:int ->
    ?map_text:(Text.t -> Text.t) ->
    render_state:state ->
    engine_state:Lwt_read_line.Engine.state ->
    prompt:Lwt_read_line.prompt -> unit -> Lwt_term.styled_text

Draw for the last time, i.e. the cursor is left after the text and not at current position.

val erase :
   columns:int ->
    render_state:state -> unit -> Lwt_term.styled_text

erase ~columns ~render_state () returns a text which will erase everything (the prompt, user input, completion, ...).

After an erase, the rendering state is init.