sig
  val cast : 'Gobject.obj -> GtkSourceView3_types.source_view Gobject.obj
  module P :
    sig
      val auto_indent : ([> `sourceview ], bool) Gobject.property
      val highlight_current_line : ([> `sourceview ], bool) Gobject.property
      val indent_on_tab : ([> `sourceview ], bool) Gobject.property
      val indent_width : ([> `sourceview ], int) Gobject.property
      val insert_spaces_instead_of_tabs :
        ([> `sourceview ], bool) Gobject.property
      val right_margin_position : ([> `sourceview ], int) Gobject.property
      val show_line_marks : ([> `sourceview ], bool) Gobject.property
      val show_line_numbers : ([> `sourceview ], bool) Gobject.property
      val show_right_margin : ([> `sourceview ], bool) Gobject.property
      val smart_home_end :
        ([> `sourceview ], SourceView3Enums.source_smart_home_end_type)
        Gobject.property
      val tab_width : ([> `sourceview ], int) Gobject.property
    end
  module S :
    sig
      val line_mark_activated :
        ([> `sourceview ], Gtk.text_iter -> GdkEvent.any -> unit) GtkSignal.t
      val move_lines : ([> `sourceview ], bool -> int -> unit) GtkSignal.t
      val move_words : ([> `sourceview ], int -> unit) GtkSignal.t
      val redo : ([> `sourceview ], unit -> unit) GtkSignal.t
      val show_completion : ([> `sourceview ], unit -> unit) GtkSignal.t
      val smart_home_end :
        ([> `sourceview ], Gtk.text_iter -> int -> unit) GtkSignal.t
      val undo : ([> `sourceview ], unit -> unit) GtkSignal.t
    end
  val create :
    GtkSourceView3_types.source_view Gobject.param list ->
    GtkSourceView3_types.source_view Gobject.obj
  external get_completion :
    [> `sourceview ] Gobject.obj ->
    GtkSourceView3_types.source_completion Gobject.obj
    = "ml_gtk_source_view_get_completion"
  external get_draw_spaces :
    [> `sourceview ] Gobject.obj ->
    SourceView3Enums.source_draw_spaces_flags list
    = "ml_gtk_source_view_get_draw_spaces"
  external set_draw_spaces :
    [> `sourceview ] Gobject.obj ->
    SourceView3Enums.source_draw_spaces_flags list -> unit
    = "ml_gtk_source_view_set_draw_spaces"
  external set_mark_attributes :
    [> `sourceview ] Gobject.obj ->
    category:string ->
    GtkSourceView3_types.source_mark_attributes Gobject.obj -> int -> unit
    = "ml_gtk_source_view_set_mark_attributes"
  val make_params :
    cont:(([> `sourceview ] as 'a) Gobject.param list -> 'b) ->
    'Gobject.param list ->
    ?auto_indent:bool ->
    ?highlight_current_line:bool ->
    ?indent_on_tab:bool ->
    ?indent_width:int ->
    ?insert_spaces_instead_of_tabs:bool ->
    ?right_margin_position:int ->
    ?show_line_marks:bool ->
    ?show_line_numbers:bool ->
    ?show_right_margin:bool ->
    ?smart_home_end:SourceView3Enums.source_smart_home_end_type ->
    ?tab_width:int -> 'b
end