sig
  val cast : 'Gobject.obj -> Gtk.text_buffer
  module P :
    sig
      val tag_table : ([> `textbuffer ], Gtk.text_tag_table) Gobject.property
      val cursor_position : ([> `textbuffer ], int) Gobject.property
      val has_selection : ([> `textbuffer ], bool) Gobject.property
    end
  module S :
    sig
      val apply_tag :
        ([> `textbuffer ],
         Gtk.text_tag -> Gtk.text_iter -> Gtk.text_iter -> unit)
        GtkSignal.t
      val begin_user_action : ([> `textbuffer ], unit -> unit) GtkSignal.t
      val changed : ([> `textbuffer ], unit -> unit) GtkSignal.t
      val delete_range :
        ([> `textbuffer ], Gtk.text_iter -> Gtk.text_iter -> unit)
        GtkSignal.t
      val end_user_action : ([> `textbuffer ], unit -> unit) GtkSignal.t
      val insert_child_anchor :
        ([> `textbuffer ], Gtk.text_iter -> Gtk.text_child_anchor -> unit)
        GtkSignal.t
      val insert_pixbuf :
        ([> `textbuffer ], Gtk.text_iter -> GdkPixbuf.pixbuf -> unit)
        GtkSignal.t
      val insert_text :
        ([> `textbuffer ], Gtk.text_iter -> string -> unit) GtkSignal.t
      val mark_deleted :
        ([> `textbuffer ], Gtk.text_mark -> unit) GtkSignal.t
      val mark_set :
        ([> `textbuffer ], Gtk.text_iter -> Gtk.text_mark -> unit)
        GtkSignal.t
      val modified_changed : ([> `textbuffer ], unit -> unit) GtkSignal.t
      val remove_tag :
        ([> `textbuffer ],
         Gtk.text_tag -> Gtk.text_iter -> Gtk.text_iter -> unit)
        GtkSignal.t
    end
  val create :
    ?tag_table:Gtk.text_tag_table ->
    [ `textbuffer ] Gobject.param list -> Gtk.text_buffer
  external get_line_count : Gtk.text_buffer -> int
    = "ml_gtk_text_buffer_get_line_count"
  external get_char_count : Gtk.text_buffer -> int
    = "ml_gtk_text_buffer_get_char_count"
  external get_tag_table : Gtk.text_buffer -> Gtk.text_tag_table
    = "ml_gtk_text_buffer_get_tag_table"
  external insert :
    Gtk.text_buffer -> Gtk.text_iter -> string Gpointer.stable -> unit
    = "ml_gtk_text_buffer_insert"
  val insert : Gtk.text_buffer -> Gtk.text_iter -> string -> unit
  external insert_at_cursor :
    Gtk.text_buffer -> string Gpointer.stable -> unit
    = "ml_gtk_text_buffer_insert_at_cursor"
  val insert_at_cursor : Gtk.text_buffer -> string -> unit
  external insert_interactive :
    Gtk.text_buffer ->
    Gtk.text_iter -> string Gpointer.stable -> bool -> bool
    = "ml_gtk_text_buffer_insert_interactive"
  val insert_interactive :
    Gtk.text_buffer -> Gtk.text_iter -> string -> bool -> bool
  external insert_interactive_at_cursor :
    Gtk.text_buffer -> string Gpointer.stable -> bool -> bool
    = "ml_gtk_text_buffer_insert_interactive_at_cursor"
  val insert_interactive_at_cursor :
    Gtk.text_buffer -> string -> bool -> bool
  external insert_range :
    Gtk.text_buffer ->
    Gtk.text_iter -> Gtk.text_iter -> Gtk.text_iter -> unit
    = "ml_gtk_text_buffer_insert_range"
  external insert_range_interactive :
    Gtk.text_buffer ->
    Gtk.text_iter -> Gtk.text_iter -> Gtk.text_iter -> bool -> bool
    = "ml_gtk_text_buffer_insert_range_interactive"
  external delete : Gtk.text_buffer -> Gtk.text_iter -> Gtk.text_iter -> unit
    = "ml_gtk_text_buffer_delete"
  external delete_interactive :
    Gtk.text_buffer -> Gtk.text_iter -> Gtk.text_iter -> bool -> bool
    = "ml_gtk_text_buffer_delete_interactive"
  external set_text : Gtk.text_buffer -> string Gpointer.stable -> unit
    = "ml_gtk_text_buffer_set_text"
  val set_text : Gtk.text_buffer -> string -> unit
  external get_text :
    Gtk.text_buffer -> Gtk.text_iter -> Gtk.text_iter -> bool -> string
    = "ml_gtk_text_buffer_get_text"
  external get_slice :
    Gtk.text_buffer -> Gtk.text_iter -> Gtk.text_iter -> bool -> string
    = "ml_gtk_text_buffer_get_slice"
  external insert_pixbuf :
    Gtk.text_buffer -> Gtk.text_iter -> GdkPixbuf.pixbuf -> unit
    = "ml_gtk_text_buffer_insert_pixbuf"
  external create_mark :
    Gtk.text_buffer ->
    string option -> Gtk.text_iter -> bool -> Gtk.text_mark
    = "ml_gtk_text_buffer_create_mark"
  external move_mark :
    Gtk.text_buffer -> Gtk.text_mark -> Gtk.text_iter -> unit
    = "ml_gtk_text_buffer_move_mark"
  external move_mark_by_name :
    Gtk.text_buffer -> string -> Gtk.text_iter -> unit
    = "ml_gtk_text_buffer_move_mark_by_name"
  external delete_mark : Gtk.text_buffer -> Gtk.text_mark -> unit
    = "ml_gtk_text_buffer_delete_mark"
  external delete_mark_by_name : Gtk.text_buffer -> string -> unit
    = "ml_gtk_text_buffer_delete_mark_by_name"
  external get_mark : Gtk.text_buffer -> string -> Gtk.text_mark option
    = "ml_gtk_text_buffer_get_mark"
  external get_insert : Gtk.text_buffer -> Gtk.text_mark
    = "ml_gtk_text_buffer_get_insert"
  external get_selection_bound : Gtk.text_buffer -> Gtk.text_mark
    = "ml_gtk_text_buffer_get_selection_bound"
  external place_cursor : Gtk.text_buffer -> Gtk.text_iter -> unit
    = "ml_gtk_text_buffer_place_cursor"
  external select_range :
    Gtk.text_buffer -> Gtk.text_iter -> Gtk.text_iter -> unit
    = "ml_gtk_text_buffer_select_range"
  external apply_tag :
    Gtk.text_buffer -> Gtk.text_tag -> Gtk.text_iter -> Gtk.text_iter -> unit
    = "ml_gtk_text_buffer_apply_tag"
  external remove_tag :
    Gtk.text_buffer -> Gtk.text_tag -> Gtk.text_iter -> Gtk.text_iter -> unit
    = "ml_gtk_text_buffer_remove_tag"
  external apply_tag_by_name :
    Gtk.text_buffer -> string -> Gtk.text_iter -> Gtk.text_iter -> unit
    = "ml_gtk_text_buffer_apply_tag_by_name"
  external remove_tag_by_name :
    Gtk.text_buffer -> string -> Gtk.text_iter -> Gtk.text_iter -> unit
    = "ml_gtk_text_buffer_remove_tag_by_name"
  external remove_all_tags :
    Gtk.text_buffer -> Gtk.text_iter -> Gtk.text_iter -> unit
    = "ml_gtk_text_buffer_remove_all_tags"
  external create_tag_0 : Gtk.text_buffer -> string option -> Gtk.text_tag
    = "ml_gtk_text_buffer_create_tag_0"
  external create_tag_2 :
    Gtk.text_buffer -> string option -> string -> string -> Gtk.text_tag
    = "ml_gtk_text_buffer_create_tag_2"
  external get_iter_at_line_offset :
    Gtk.text_buffer -> int -> int -> Gtk.text_iter
    = "ml_gtk_text_buffer_get_iter_at_line_offset"
  external get_iter_at_offset : Gtk.text_buffer -> int -> Gtk.text_iter
    = "ml_gtk_text_buffer_get_iter_at_offset"
  external get_iter_at_line : Gtk.text_buffer -> int -> Gtk.text_iter
    = "ml_gtk_text_buffer_get_iter_at_line"
  external get_iter_at_line_index :
    Gtk.text_buffer -> int -> int -> Gtk.text_iter
    = "ml_gtk_text_buffer_get_iter_at_line_index"
  external get_iter_at_mark :
    Gtk.text_buffer -> Gtk.text_mark -> Gtk.text_iter
    = "ml_gtk_text_buffer_get_iter_at_mark"
  external get_start_iter : Gtk.text_buffer -> Gtk.text_iter
    = "ml_gtk_text_buffer_get_start_iter"
  external get_end_iter : Gtk.text_buffer -> Gtk.text_iter
    = "ml_gtk_text_buffer_get_end_iter"
  external get_bounds : Gtk.text_buffer -> Gtk.text_iter * Gtk.text_iter
    = "ml_gtk_text_buffer_get_bounds"
  external get_modified : Gtk.text_buffer -> bool
    = "ml_gtk_text_buffer_get_modified"
  external set_modified : Gtk.text_buffer -> bool -> unit
    = "ml_gtk_text_buffer_set_modified"
  external delete_selection : Gtk.text_buffer -> bool -> bool -> bool
    = "ml_gtk_text_buffer_delete_selection"
  external get_selection_bounds :
    Gtk.text_buffer -> Gtk.text_iter * Gtk.text_iter
    = "ml_gtk_text_buffer_get_selection_bounds"
  external begin_user_action : Gtk.text_buffer -> unit
    = "ml_gtk_text_buffer_begin_user_action"
  external end_user_action : Gtk.text_buffer -> unit
    = "ml_gtk_text_buffer_end_user_action"
  external create_child_anchor :
    Gtk.text_buffer -> Gtk.text_iter -> Gtk.text_child_anchor
    = "ml_gtk_text_buffer_create_child_anchor"
  external insert_child_anchor :
    Gtk.text_buffer -> Gtk.text_iter -> Gtk.text_child_anchor -> unit
    = "ml_gtk_text_buffer_insert_child_anchor"
  external paste_clipboard :
    Gtk.text_buffer -> Gtk.clipboard -> Gtk.text_iter option -> bool -> unit
    = "ml_gtk_text_buffer_paste_clipboard"
  external copy_clipboard : Gtk.text_buffer -> Gtk.clipboard -> unit
    = "ml_gtk_text_buffer_copy_clipboard"
  external cut_clipboard : Gtk.text_buffer -> Gtk.clipboard -> bool -> unit
    = "ml_gtk_text_buffer_cut_clipboard"
  external add_selection_clipboard : Gtk.text_buffer -> Gtk.clipboard -> unit
    = "ml_gtk_text_buffer_add_selection_clipboard"
  external remove_selection_clipboard :
    Gtk.text_buffer -> Gtk.clipboard -> unit
    = "ml_gtk_text_buffer_remove_selection_clipboard"
end