sig
  val cast :
    'Gobject.obj -> GtkSourceView3_types.source_completion Gobject.obj
  module P :
    sig
      val accelerators : ([> `sourcecompletion ], int) Gobject.property
      val auto_complete_delay :
        ([> `sourcecompletion ], int) Gobject.property
      val proposal_page_size : ([> `sourcecompletion ], int) Gobject.property
      val provider_page_size : ([> `sourcecompletion ], int) Gobject.property
      val remember_info_visibility :
        ([> `sourcecompletion ], bool) Gobject.property
      val select_on_show : ([> `sourcecompletion ], bool) Gobject.property
      val show_headers : ([> `sourcecompletion ], bool) Gobject.property
      val show_icons : ([> `sourcecompletion ], bool) Gobject.property
      val view :
        ([> `sourcecompletion ],
         GtkSourceView3_types.source_view Gobject.obj)
        Gobject.property
    end
  module S :
    sig
      val activate_proposal :
        ([> `sourcecompletion ], unit -> unit) GtkSignal.t
      val hide : ([> `sourcecompletion ], unit -> unit) GtkSignal.t
      val move_cursor :
        ([> `sourcecompletion ], GtkEnums.scroll_step -> int -> unit)
        GtkSignal.t
      val move_page :
        ([> `sourcecompletion ], GtkEnums.scroll_step -> int -> unit)
        GtkSignal.t
      val populate_context :
        ([> `sourcecompletion ],
         GtkSourceView3_types.source_completion_context Gobject.obj -> unit)
        GtkSignal.t
      val show : ([> `sourcecompletion ], unit -> unit) GtkSignal.t
    end
  val create :
    ?view:GtkSourceView3_types.source_view Gobject.obj ->
    GtkSourceView3_types.source_completion Gobject.param list ->
    GtkSourceView3_types.source_completion Gobject.obj
  external add_provider :
    [> `sourcecompletion ] Gobject.obj ->
    GtkSourceView3_types.source_completion_provider Gobject.obj -> bool
    = "ml_gtk_source_completion_add_provider"
  external remove_provider :
    [> `sourcecompletion ] Gobject.obj ->
    GtkSourceView3_types.source_completion_provider Gobject.obj -> bool
    = "ml_gtk_source_completion_remove_provider"
  external block_interactive : [> `sourcecompletion ] Gobject.obj -> unit
    = "ml_gtk_source_completion_block_interactive"
  external get_providers :
    [> `sourcecompletion ] Gobject.obj ->
    GtkSourceView3_types.source_completion_provider Gobject.obj list
    = "ml_gtk_source_completion_get_providers"
  external create_context :
    [> `sourcecompletion ] Gobject.obj ->
    Gtk.text_iter ->
    GtkSourceView3_types.source_completion_context Gobject.obj
    = "ml_gtk_source_completion_create_context"
  external hide : [> `sourcecompletion ] Gobject.obj -> unit
    = "ml_gtk_source_completion_hide"
  external move_window :
    [> `sourcecompletion ] Gobject.obj -> Gtk.text_iter -> unit
    = "ml_gtk_source_completion_move_window"
  external show :
    [> `sourcecompletion ] Gobject.obj ->
    GtkSourceView3_types.source_completion_provider Gobject.obj list ->
    GtkSourceView3_types.source_completion_context Gobject.obj -> bool
    = "ml_gtk_source_completion_show"
  external unblock_interactive : [> `sourcecompletion ] Gobject.obj -> unit
    = "ml_gtk_source_completion_unblock_interactive"
end