Module Zed_cursor
type t
Type of a cursor.
exception Out_of_bounds
Exception raised when trying to move a cursor outside the bounds
of the text it points to.
val create : int -> (int * int * int) React.event -> unit -> Zed_lines.t -> int -> int -> t
create length changes get_lines position wanted_column
creates
a new cursor pointing to position position
.length
is the current length of the text the cursor points
to. It raises Out_of_bounds if position
is greater than
length
.changes
is an event which occurs with values of the form
(start, added, removed)
when the text changes, with the same
semantic as Zed_edit.changes.get_lines
is used to retreive the current set of line
positions of the text. It is used to compute the line and column
of the cursor.wanted_column
is the column on which the cursor want to be, if
there is enough room on the line.
val copy : t -> t
copy cursor
creates a copy of the given cursor. The new cursor
initially points to the same location as cursor
.
val position : t -> int React.signal
position cursor
returns the signal holding the current
position of the given cursor.
val get_position : t -> int
get_position cursor
returns the current position of
cursor
.
val line : t -> int React.signal
line cursor
returns the signal holding the current line on
which the cursor is.
val get_line : t -> int
get_line cursor
returns the current line of the cursor.
val column : t -> int React.signal
column cursor
returns the signal holding the current column of
the cursor.
val get_column : t -> int
get_column cursor
returns the current column of the cursor.
val wanted_column : t -> int React.signal
wanted_column cursor
returns the signal holding the column on
which the cursor wants to be.
val get_wanted_column : t -> int
get_wanted_column cursor
returns the column on which the
cursor wants to be.
val set_wanted_column : t -> int -> unit
set_wanted_column cursor
sets the column on which the cursor
want to be.
val goto : t -> ?set_wanted_column:bool -> int -> unit
goto cursor position
moves the given cursor to the given
position. It raises Out_of_bounds if position
is outside
the bounds of the text. If set_wanted_column
is true
(the
default), then the wanted column will be set to the column of
the cursor at given position.
val move : t -> ?set_wanted_column:bool -> int -> unit
move cursor delta
moves the given cursor by the given number
of characters. It raises Out_of_bounds if the result is
outside the bounds of the text.