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
end