# 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`.