sig
  type t
  exception Out_of_bounds
  val create :
    int ->
    (int * int * int) React.event ->
    (unit -> Zed_lines.t) -> int -> int -> Zed_cursor.t
  val copy : Zed_cursor.t -> Zed_cursor.t
  val position : Zed_cursor.t -> int React.signal
  val get_position : Zed_cursor.t -> int
  val line : Zed_cursor.t -> int React.signal
  val get_line : Zed_cursor.t -> int
  val column : Zed_cursor.t -> int React.signal
  val get_column : Zed_cursor.t -> int
  val coordinates : Zed_cursor.t -> (int * int) React.signal
  val get_coordinates : Zed_cursor.t -> int * int
  val wanted_column : Zed_cursor.t -> int React.signal
  val get_wanted_column : Zed_cursor.t -> int
  val set_wanted_column : Zed_cursor.t -> int -> unit
  val goto : Zed_cursor.t -> ?set_wanted_column:bool -> int -> unit
  val move : Zed_cursor.t -> ?set_wanted_column:bool -> int -> unit
end