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

Module Lwt_read_line.Control

module Control : sig..end

Controlling a running read-line instance


type 'a t

Type of a running read-line instance, returning a value of type 'a


Control


val result : 'a t -> 'a Lwt.t

Threads waiting for the read-line instance to terminates

val send_command : 'a t -> Lwt_read_line.Command.t -> unit

send_command instance command sends the given command to the read-line instance

val accept : 'a t -> unit

accept instance = send_command instance Command.Accept_line

val interrupt : 'a t -> unit

accept instance = send_command instance Command.Break

val hide : 'a t -> unit Lwt.t

Hides everything (prompt, user input, completion box) until Lwt_read_line.Control.show is called.

val show : 'a t -> unit Lwt.t

Un-hide everything


Note: in case the input is not a terminal, read-line instances are not controllable. i.e. Lwt_read_line.Control.accept, refresh, ... have no effect.

Creation of read-line instances


type prompt = 
  Lwt_read_line.Engine.state React.signal ->
  Lwt_term.styled_text React.signal

The prompt a signal which may depends on the engine state

type state

State of an instance

val engine_state : state -> Lwt_read_line.Engine.state

Return the engine state of the given state

val render_state : state -> Lwt_read_line.Terminal.state

Return the rendering state of the given state

val make : 
  ?history:Lwt_read_line.history ->
  ?complete:Lwt_read_line.completion ->
  ?clipboard:Lwt_read_line.clipboard ->
  ?mode:[ `classic | `none | `real_time ] ->
  ?map_text:(Text.t -> Text.t) ->
  ?filter:(state ->
   Lwt_read_line.Command.t -> Lwt_read_line.Command.t Lwt.t) ->
  map_result:(Text.t -> 'a Lwt.t) ->
  ?prompt:prompt ->
  unit -> 'a t

Creates a new read-line instance with the given parameters. filter is called to handle commands. You can return Command.Nop to drop a command.


Predefined instances


val read_line : 
  ?history:Lwt_read_line.history ->
  ?complete:Lwt_read_line.completion ->
  ?clipboard:Lwt_read_line.clipboard ->
  ?mode:Lwt_read_line.completion_mode ->
  ?prompt:prompt ->
  unit -> Text.t t Lwt.t
val read_password : 
  ?clipboard:Lwt_read_line.clipboard ->
  ?style:Lwt_read_line.password_style ->
  ?prompt:prompt ->
  unit -> Text.t t Lwt.t
val read_keyword : 
  ?history:Lwt_read_line.history ->
  ?case_sensitive:bool ->
  ?mode:Lwt_read_line.completion_mode ->
  ?prompt:prompt ->
  values:(Text.t * 'a) list -> unit -> 'a t Lwt.t
val read_yes_no : 
  ?history:Lwt_read_line.history ->
  ?mode:Lwt_read_line.completion_mode ->
  ?prompt:prompt ->
  unit -> bool t Lwt.t