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

Module Lwt_read_line.Engine

module Engine : sig..end


Note: this part know nothing about rendering or completion.

type selection_state = {
  sel_text: Text.t;(* The whole input text on which the selection is working *)  sel_mark: Text.pointer;(* Pointer to the mark *)  sel_cursor: Text.pointer;(* Pointer to the cursor *)}

State when the user is doing selection:

type search_state = {
  search_word: Text.t;(* The word we are looking for *)  search_history: Lwt_read_line.history;(* Position in history. The first element is a sentence
containing the searched word *)  search_init_history: Lwt_read_line.history;(* The initial history, before searching for a word *)}

State when searching in the history

type mode =  | Edition of Lwt_read_line.edition_state(* The user is typing some text *) | Selection of selection_state(* The user is selecting some text *) | Search of search_state(* The user is searching the given word in the history *)

The engine mode:

type state = {
  mode: mode;  history: Lwt_read_line.history * Lwt_read_line.history;(* Cursor to the history position. *)}

An engine state:

val init : Lwt_read_line.history -> state

init history return a initial state using the given history

val reset : state -> state

reset state reset the given state, if the user was doing a selection, it is canceled

val update : 
  engine_state:state ->
  ?clipboard:Lwt_read_line.clipboard ->
  command:Lwt_read_line.Command.t -> unit -> state

update ~state ?clipboard ~command () update an engine state by processing the given command. It returns the new state, and may have the side effect of changing the clipboard contents.

clipboard defaults to the global clipboard.

val edition_state : state -> Lwt_read_line.edition_state

Returns the edition state of a state, whatever its mode is.

val all_input : state -> Text.t

Returns the current complete user input.