include RangeMap_intf.S with module Range = Range
type 'a t

Maps a position of the cursor (point) to the corresponding token of type 'a in a given text editor with a .lp file open.

module Range = Range
val empty : 'a t

The empty range map.

val find : Range.point -> 'a t -> (Range.t * 'a) option

find pt map returns the only (token, range) couple in map such that pt is a point within the mapped interval range. Requires map to be well-defined (see add).

val add : Range.t -> 'a -> 'a t -> 'a t

add range token map adds a mapping (key : range, value : token) to map.

Requires all added keys to be non overlapping intervals to be well-defined. /!\ Does not ensure proper functionning if the added keys are overlapping intervals, e.g might change a previously added (key, element) couple or throw an error.

val to_string : ( 'a -> string ) -> 'a t -> string