sig
  val cast :
    'Gobject.obj ->
    GtkSourceView2_types.source_completion_provider Gobject.obj
  external get_name : [> `sourcecompletionprovider ] Gobject.obj -> string
    = "ml_gtk_source_completion_provider_get_name"
  external get_icon :
    [> `sourcecompletionprovider ] Gobject.obj -> GdkPixbuf.pixbuf option
    = "ml_gtk_source_completion_provider_get_icon"
  external populate :
    [> `sourcecompletionprovider ] Gobject.obj ->
    GtkSourceView2_types.source_completion_context Gobject.obj -> unit
    = "ml_gtk_source_completion_provider_populate"
  external get_activation :
    [> `sourcecompletionprovider ] Gobject.obj ->
    SourceView2Enums.source_completion_activation_flags list
    = "ml_gtk_source_completion_provider_get_activation"
  external get_info_widget :
    [> `sourcecompletionprovider ] Gobject.obj ->
    GtkSourceView2_types.source_completion_proposal Gobject.obj ->
    Gtk.widget Gobject.obj option
    = "ml_gtk_source_completion_provider_get_info_widget"
  external update_info :
    [> `sourcecompletionprovider ] Gobject.obj ->
    GtkSourceView2_types.source_completion_proposal Gobject.obj ->
    GtkSourceView2_types.source_completion_info Gobject.obj -> unit
    = "ml_gtk_source_completion_provider_update_info"
  external get_start_iter :
    [> `sourcecompletionprovider ] Gobject.obj ->
    GtkSourceView2_types.source_completion_context Gobject.obj ->
    GtkSourceView2_types.source_completion_proposal Gobject.obj ->
    Gtk.text_iter = "ml_gtk_source_completion_provider_get_start_iter"
  external activate_proposal :
    [> `sourcecompletionprovider ] Gobject.obj ->
    GtkSourceView2_types.source_completion_proposal Gobject.obj ->
    Gtk.text_iter -> bool
    = "ml_gtk_source_completion_provider_activate_proposal"
  external get_interactive_delay :
    [> `sourcecompletionprovider ] Gobject.obj -> int
    = "ml_gtk_source_completion_provider_get_interactive_delay"
  external get_priority : [> `sourcecompletionprovider ] Gobject.obj -> int
    = "ml_gtk_source_completion_provider_get_priority"
  type provider = {
    provider_name : unit -> string;
    provider_icon : unit -> GdkPixbuf.pixbuf option;
    provider_populate :
      GtkSourceView2_types.source_completion_context Gtk.obj -> unit;
    provider_activation :
      unit -> SourceView2Enums.source_completion_activation_flags list;
    provider_match :
      GtkSourceView2_types.source_completion_context Gtk.obj -> bool;
    provider_info_widget :
      GtkSourceView2_types.source_completion_proposal Gtk.obj ->
      Gtk.widget Gtk.obj option;
    provider_update_info :
      GtkSourceView2_types.source_completion_proposal Gtk.obj ->
      GtkSourceView2_types.source_completion_info Gtk.obj -> unit;
    provider_start_iter :
      GtkSourceView2_types.source_completion_context Gtk.obj ->
      GtkSourceView2_types.source_completion_proposal Gtk.obj ->
      Gtk.text_iter -> bool;
    provider_activate_proposal :
      GtkSourceView2_types.source_completion_proposal Gtk.obj ->
      Gtk.text_iter -> bool;
    provider_interactive_delay : unit -> int;
    provider_priority : unit -> int;
  }
  external match_ :
    GtkSourceView2_types.source_completion_provider Gtk.obj ->
    GtkSourceView2_types.source_completion_context Gtk.obj -> bool
    = "ml_gtk_source_completion_provider_match"
  external new_ :
    GtkSourceView2.SourceCompletionProvider.provider ->
    GtkSourceView2_types.source_completion_provider Gtk.obj
    = "ml_custom_completion_provider_new"
end