Module Ecaml.Marker

A Marker.t specifies a position in a buffer relative to the surrounding text. A marker changes its offset from the beginning of the buffer automatically whenever text is inserted or deleted, so that it stays with the two characters on either side of it.

(Info-goto-node "(elisp)Markers")

include Ecaml__.Import.Value.Subtype
type value
type t = private value

We expose private value for free identity conversions when the value is nested in some covariant type, e.g. (symbols : Symbol.t list :> Value.t list) rather than List.map symbols ~f:Symbol.to_value.

val sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.t
val eq : t -> t -> bool

eq t1 t2 = Value.eq (to_value t1) (to_value t2), i.e. eq checks whether the Emacs values underlying t1 and t2 are physically equal. This is different than phys_equal t1 t2, because we don't always wrap eq Emacs values in phys_equal OCaml values. I.e. phys_equal t1 t2 implies eq t1 t2, but not the converse.

val is_in_subtype : value -> bool
include Ecaml_value__.Valueable0.S with type t := t
type t
type 'a type_
val of_value_exn : Ecaml_value__.Value0.t -> t
val to_value : t -> Ecaml_value__.Value0.t
val type_ : t type_
val t : t type_
module Insertion_type : sig ... end

When you insert text directly at the place where a marker points, there are two possible ways to relocate that marker: it can point before the inserted text, or point after it. You can specify which one a given marker should do by setting its "insertion type". (Info-goto-node "(elisp)Marker Insertion Types").

val buffer : t -> Ecaml__.Import.Buffer.t option

(describe-function 'marker-buffer) (Info-goto-node "(elisp)Information from Markers")

val insertion_type : t -> Insertion_type.t

(describe-function 'marker-insertion-type) (Info-goto-node "(elisp)Marker Insertion Types")

val position : t -> Position.t option

(describe-function 'marker-position) (Info-goto-node "(elisp)Information from Markers")

val create : unit -> t

(describe-function 'make-marker) (Info-goto-node "(elisp)Creating Markers")

val copy : t -> t

(describe-function 'copy-marker) (Info-goto-node "(elisp)Creating Markers")

val set_insertion_type : t -> Insertion_type.t -> unit

(describe-function 'set-marker-insertion-type) (Info-goto-node "(elisp)Marker Insertion Types")

val set : t -> Ecaml__.Import.Buffer.t -> Position.t -> unit

(describe-function 'set-marker) (Info-goto-node "(elisp)Moving Markers")