Module Yalo.Engine

val string_of_loc : Location.t -> string
val eprintf : ?loc:Location.t -> ('a, Stdlib.out_channel, unit) Stdlib.format -> 'a
val verbose : int -> bool
val new_plugin : ?version:string -> ?args:(string list * Ezcmd.V2.EZCMD.spec * Ezcmd.V2.EZCMD.TYPES.info) list -> string -> Types.plugin
val new_language : Types.plugin -> EzCompat.StringMap.key -> Types.language
val new_file_kind : lang:Types.language -> ?exts:string list -> name:EzCompat.StringMap.key -> ?validate:(file_doc:Types.document -> bool) -> lint:(file:Types.file -> unit) -> unit -> Types.file_kind
val new_namespace : Types.plugin -> EzCompat.StringMap.key -> Types.namespace
val new_tag : string -> Types.tag
val add_tag : Types.warning -> Types.tag -> unit
val new_warning : Types.namespace -> ?tags:Types.tag list -> ?desc:string -> ?set_by_default:bool -> name:EzCompat.StringMap.key -> msg:string -> EzCompat.IntMap.key -> Types.warning
val new_linter : Types.language -> Types.namespace -> EzCompat.StringMap.key -> warnings:Types.warning list -> ?on_begin:(unit -> unit) -> ?on_open:(file:Types.file -> linter:Types.linter -> unit) -> ?on_close:(file:Types.file -> linter:Types.linter -> unit) -> ?on_end:(unit -> unit) -> (Types.linter -> unit) -> unit
val new_gen_linter : Types.language -> (Types.linter * 'a) list Stdlib.ref -> Types.namespace -> EzCompat.StringMap.key -> warnings:Types.warning list -> ?on_begin:(unit -> unit) -> ?on_open:(file:Types.file -> linter:Types.linter -> unit) -> ?on_close:(file:Types.file -> linter:Types.linter -> unit) -> ?on_end:(unit -> unit) -> 'a -> unit
exception LocalExit
val local_exit : exn
val stringMap_exists : ('a -> bool) -> 'a EzCompat.StringMap.t -> bool
val activate_linters : unit -> unit
val get_target : string -> Types.target
val add_annot : file:Types.file -> loc:Types.location -> Types.annot_desc -> unit
val warn : loc:Types.location -> file:Types.file -> linter:Types.linter -> ?msg:string -> ?autofix:(Types.location * string) list -> Types.warning -> unit
val mkloc : bol:int -> ?start_cnum:int -> ?end_cnum:int -> lnum:int -> file:Types.file -> unit -> Location.t
val iter_linters : file:Types.file -> (Types.linter * (file:Types.file -> linter:Types.linter -> 'a -> unit)) list -> 'a -> unit
val iter_linters_open : file:Types.file -> (Types.linter * 'a) list -> unit
val iter_linters_close : file:Types.file -> (Types.linter * 'a) list -> unit
val filter_linters : file:Types.file -> (Types.linter * 'a) list -> (Types.linter * 'a) list
val lint_with_active_linters : (Types.linter * (file:Types.file -> linter:Types.linter -> 'a -> unit)) list Stdlib.ref -> file:Types.file -> 'a -> unit
val new_file : file_doc:Types.document -> file_kind:Types.file_kind -> file_crc:Stdlib.Digest.t -> Types.file
val string_of_projects : 'a EzCompat.StringMap.t -> string
val add_file : file_doc:Types.document -> file_kind:Types.file_kind -> unit
val doc_kind : file_doc:Types.document -> Types.file_kind option
val add_plugin_args : Types.plugin -> (string list * Ezcmd.V2.EZCMD.spec * Ezcmd.V2.EZCMD.TYPES.info) list -> unit
val new_project : string -> Types.project
val project_map_add : ?map:Types.project EzCompat.StringMap.t -> Types.project -> Types.project EzCompat.StringMap.t
val new_fs : fs_root:string -> fs_subpath:string list -> Types.fs
val get_folder : Types.folder -> EzCompat.StringMap.key -> Types.folder
val get_document : Types.folder -> EzCompat.StringMap.key -> Types.document
val add_file_classifier : (file_doc:Types.document -> Types.file_kind option) -> unit
val profile_append : ('a list Stdlib.ref * 'a list Yalo_misc.Ez_config.V1.EZCONFIG.config_option) -> unit
val eprint_config : unit -> unit
val add_folder_updater : (folder:Types.folder -> unit) -> unit
val compare_message_start : Types.message -> Types.message -> int
val compare_annot_pos : 'a Types.annotation -> 'b Types.annotation -> int
val apply_annot : 'a Types.annotation -> string -> (Types.warning * Types.warning_state) list
val string_of_warning_state : Types.warning_state -> string
val filter_target_messages : Types.target -> Types.message list
val get_messages : unit -> Types.message list
val temporary_set_option : string list -> string -> unit
val mkdesc : ?tags:string list -> ?what_it_does:string -> ?why_restrict_this:string -> ?known_issues:string -> ?example:string -> ?configuration:(string * string) list -> name:string -> string -> Types.warning_desc
val b : EzCompat.Buffer.t
val desc_of_desc : Types.warning_desc -> string