sig
  val create :
    ?name:string ->
    ?background:Tk.color ->
    ?borderwidth:int ->
    ?cursor:Tk.cursor ->
    ?exportselection:bool ->
    ?font:string ->
    ?foreground:Tk.color ->
    ?height:int ->
    ?highlightbackground:Tk.color ->
    ?highlightcolor:Tk.color ->
    ?highlightthickness:int ->
    ?insertbackground:Tk.color ->
    ?insertborderwidth:int ->
    ?insertofftime:int ->
    ?insertontime:int ->
    ?insertwidth:int ->
    ?padx:int ->
    ?pady:int ->
    ?relief:Tk.relief ->
    ?selectbackground:Tk.color ->
    ?selectborderwidth:int ->
    ?selectforeground:Tk.color ->
    ?setgrid:bool ->
    ?spacing1:int ->
    ?spacing2:int ->
    ?spacing3:int ->
    ?state:Tk.inputState ->
    ?tabs:Tk.tabType list ->
    ?takefocus:bool ->
    ?width:int ->
    ?wrap:Tk.wrapMode ->
    ?xscrollcommand:(first:float -> last:float -> unit) ->
    ?yscrollcommand:(first:float -> last:float -> unit) ->
    'Widget.widget -> Widget.text Widget.widget
  val bbox :
    Widget.text Widget.widget -> index:Tk.textIndex -> int * int * int * int
  val compare :
    Widget.text Widget.widget ->
    index:Tk.textIndex -> op:Tk.comparison -> index:Tk.textIndex -> bool
  val configure :
    ?background:Tk.color ->
    ?borderwidth:int ->
    ?cursor:Tk.cursor ->
    ?exportselection:bool ->
    ?font:string ->
    ?foreground:Tk.color ->
    ?height:int ->
    ?highlightbackground:Tk.color ->
    ?highlightcolor:Tk.color ->
    ?highlightthickness:int ->
    ?insertbackground:Tk.color ->
    ?insertborderwidth:int ->
    ?insertofftime:int ->
    ?insertontime:int ->
    ?insertwidth:int ->
    ?padx:int ->
    ?pady:int ->
    ?relief:Tk.relief ->
    ?selectbackground:Tk.color ->
    ?selectborderwidth:int ->
    ?selectforeground:Tk.color ->
    ?setgrid:bool ->
    ?spacing1:int ->
    ?spacing2:int ->
    ?spacing3:int ->
    ?state:Tk.inputState ->
    ?tabs:Tk.tabType list ->
    ?takefocus:bool ->
    ?width:int ->
    ?wrap:Tk.wrapMode ->
    ?xscrollcommand:(first:float -> last:float -> unit) ->
    ?yscrollcommand:(first:float -> last:float -> unit) ->
    Widget.text Widget.widget -> unit
  val configure_get : Widget.text Widget.widget -> string
  val debug : Widget.text Widget.widget -> bool -> unit
  val delete :
    Widget.text Widget.widget ->
    start:Tk.textIndex -> stop:Tk.textIndex -> unit
  val delete_char : Widget.text Widget.widget -> index:Tk.textIndex -> unit
  val dlineinfo :
    Widget.text Widget.widget ->
    index:Tk.textIndex -> int * int * int * int * int
  val dump :
    Widget.text Widget.widget ->
    Tk.text_dump list ->
    start:Tk.textIndex -> stop:Tk.textIndex -> string list
  val dump_char :
    Widget.text Widget.widget ->
    Tk.text_dump list -> index:Tk.textIndex -> string list
  val get :
    Widget.text Widget.widget ->
    start:Tk.textIndex -> stop:Tk.textIndex -> string
  val get_char : Widget.text Widget.widget -> index:Tk.textIndex -> string
  val image_configure :
    name:string ->
    ?align:Tk.alignType ->
    ?image:[< Tk.image ] ->
    ?name:string ->
    ?padx:int -> ?pady:int -> Widget.text Widget.widget -> unit
  val image_configure_get :
    Widget.text Widget.widget -> name:string -> string
  val image_create :
    index:Tk.textIndex ->
    ?align:Tk.alignType ->
    ?image:[< Tk.image ] ->
    ?name:string ->
    ?padx:int -> ?pady:int -> Widget.text Widget.widget -> string
  val image_names : Widget.text Widget.widget -> string list
  val index :
    Widget.text Widget.widget ->
    index:Tk.textIndex -> [> `Linechar of int * int ]
  val insert :
    index:Tk.textIndex ->
    text:string -> ?tags:Tk.textTag list -> Widget.text Widget.widget -> unit
  val mark_gravity_get :
    Widget.text Widget.widget -> mark:Tk.textMark -> Tk.markDirection
  val mark_gravity_set :
    Widget.text Widget.widget ->
    mark:Tk.textMark -> direction:Tk.markDirection -> unit
  val mark_names : Widget.text Widget.widget -> Tk.textMark list
  val mark_next :
    Widget.text Widget.widget -> index:Tk.textIndex -> Tk.textMark
  val mark_previous :
    Widget.text Widget.widget -> index:Tk.textIndex -> Tk.textMark
  val mark_set :
    Widget.text Widget.widget ->
    mark:Tk.textMark -> index:Tk.textIndex -> unit
  val mark_unset :
    Widget.text Widget.widget -> marks:Tk.textMark list -> unit
  val scan_dragto : Widget.text Widget.widget -> x:int -> y:int -> unit
  val scan_mark : Widget.text Widget.widget -> x:int -> y:int -> unit
  val search :
    switches:Tk.textSearch list ->
    pattern:string ->
    start:Tk.textIndex ->
    ?stop:Tk.textIndex ->
    Widget.text Widget.widget -> [> `Linechar of int * int ]
  val see : Widget.text Widget.widget -> index:Tk.textIndex -> unit
  val tag_add :
    Widget.text Widget.widget ->
    tag:Tk.textTag -> start:Tk.textIndex -> stop:Tk.textIndex -> unit
  val tag_add_char :
    Widget.text Widget.widget -> tag:Tk.textTag -> index:Tk.textIndex -> unit
  val tag_configure :
    tag:Tk.textTag ->
    ?background:Tk.color ->
    ?bgstipple:Tk.bitmap ->
    ?borderwidth:int ->
    ?fgstipple:Tk.bitmap ->
    ?font:string ->
    ?foreground:Tk.color ->
    ?justify:Tk.justification ->
    ?lmargin1:int ->
    ?lmargin2:int ->
    ?offset:int ->
    ?overstrike:bool ->
    ?relief:Tk.relief ->
    ?rmargin:int ->
    ?spacing1:int ->
    ?spacing2:int ->
    ?spacing3:int ->
    ?tabs:Tk.tabType list ->
    ?underline:bool -> ?wrap:Tk.wrapMode -> Widget.text Widget.widget -> unit
  val tag_delete : Widget.text Widget.widget -> Tk.textTag list -> unit
  val tag_lower :
    tag:Tk.textTag -> ?below:Tk.textTag -> Widget.text Widget.widget -> unit
  val tag_names :
    ?index:Tk.textIndex -> Widget.text Widget.widget -> Tk.textTag list
  val tag_nextrange :
    tag:Tk.textTag ->
    start:Tk.textIndex ->
    ?stop:Tk.textIndex ->
    Widget.text Widget.widget ->
    [> `Linechar of int * int ] * [> `Linechar of int * int ]
  val tag_prevrange :
    tag:Tk.textTag ->
    start:Tk.textIndex ->
    ?stop:Tk.textIndex ->
    Widget.text Widget.widget ->
    [> `Linechar of int * int ] * [> `Linechar of int * int ]
  val tag_raise :
    tag:Tk.textTag -> ?above:Tk.textTag -> Widget.text Widget.widget -> unit
  val tag_ranges :
    Widget.text Widget.widget ->
    tag:Tk.textTag -> [> `Linechar of int * int ] list
  val tag_remove :
    Widget.text Widget.widget ->
    tag:Tk.textTag -> start:Tk.textIndex -> stop:Tk.textIndex -> unit
  val tag_remove_char :
    Widget.text Widget.widget -> tag:Tk.textTag -> index:Tk.textIndex -> unit
  val window_configure :
    tag:Tk.textTag ->
    ?align:Tk.alignType ->
    ?padx:int ->
    ?pady:int ->
    ?stretch:bool ->
    ?window:'Widget.widget -> Widget.text Widget.widget -> unit
  val window_create :
    index:Tk.textIndex ->
    ?align:Tk.alignType ->
    ?padx:int ->
    ?pady:int ->
    ?stretch:bool ->
    ?window:'Widget.widget -> Widget.text Widget.widget -> unit
  val window_names :
    Widget.text Widget.widget -> Widget.any Widget.widget list
  val xview : Widget.text Widget.widget -> scroll:Tk.scrollValue -> unit
  val xview_get : Widget.text Widget.widget -> float * float
  val yview : Widget.text Widget.widget -> scroll:Tk.scrollValue -> unit
  val yview_get : Widget.text Widget.widget -> float * float
  val yview_index : Widget.text Widget.widget -> index:Tk.textIndex -> unit
  val yview_index_pickplace :
    Widget.text Widget.widget -> index:Tk.textIndex -> unit
  val yview_line : Widget.text Widget.widget -> line:int -> unit
  val tag_bind :
    tag:string ->
    events:Tk.event list ->
    ?extend:bool ->
    ?breakable:bool ->
    ?fields:Tk.eventField list ->
    ?action:(Tk.eventInfo -> unit) -> Widget.text Widget.widget -> unit
end