Module Ecaml__.Face0

module Frame = Ecaml__.Frame0
module Q : sig ... end
module Value : sig ... end
include Ecaml_value__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_
val list_type : t list Value.Type.t
val of_name : string -> t
val default : t
val to_name : t -> string
val compare : t -> t -> int
val equal : t -> t -> bool
module type Attribute_value = sig ... end
module Unimplemented : sig ... end
module Color_or_unspecified : sig ... end
module String_name : sig ... end
module Background : sig ... end
module Box : sig ... end
module Font : sig ... end
module Font_family : sig ... end
module Font_foundry : sig ... end
module Foreground : sig ... end
module Height : sig ... end
module Inherit : sig ... end
module Inverse_video : sig ... end
module Line : sig ... end
module Overline : sig ... end
module Slant : sig ... end
module Stipple : sig ... end
module Strike_through : sig ... end
module Underline : sig ... end
module Weight : sig ... end
module Width : sig ... end
module Attribute : sig ... end
module Attribute_and_value : sig ... end
val frame : Frame.t option -> Frame.t
val face_list : unit -> t list
val all_defined : unit -> t list
val font_family_list : Frame.t -> string list
val font_family_list : ?⁠on:Frame.t -> unit -> string list
val face_attribute : t -> Ecaml.Symbol.t -> Frame.t -> Ecaml_value__Value.t
val attribute_value : ?⁠on:Frame.t -> t -> 'a Attribute.t -> 'a
val set_face_attribute : t -> Frame.t -> Ecaml.Symbol.t -> Ecaml_value__Value.t -> unit
val set_attribute : ?⁠on:Frame.t -> t -> 'a Attribute.t -> 'a -> unit
val face_all_attributes : t -> Frame.t -> Ecaml_value__Value.t list
val attributes : ?⁠on:Frame.t -> t -> Attribute_and_value.t list
val specs_to_value : Attribute_and_value.t list -> Value.t
val face_spec_set : t -> Ecaml_value__Value.t -> unit
val spec_set : t -> Attribute_and_value.t list -> unit