sig
  class source_style_scheme :
    GtkSourceView2_types.source_style_scheme Gtk.obj ->
    object
      method as_source_style_scheme :
        GtkSourceView2_types.source_style_scheme Gtk.obj
      method description : string
      method name : string
    end
  class source_style_scheme_manager :
    GtkSourceView2_types.source_style_scheme_manager Gtk.obj ->
    object
      method append_search_path : string -> unit
      method force_rescan : unit -> unit
      method prepend_search_path : string -> unit
      method search_path : string list
      method set_search_path : string list -> unit
      method style_scheme : string -> GSourceView2.source_style_scheme option
      method style_scheme_ids : string list
    end
  val source_style_scheme_manager :
    default:bool -> GSourceView2.source_style_scheme_manager
  class source_language :
    GtkSourceView2_types.source_language Gtk.obj ->
    object
      method as_source_language :
        GtkSourceView2_types.source_language Gtk.obj
      method globs : string list
      method hidden : bool
      method id : string
      method metadata : string -> string option
      method mime_types : string list
      method misc : GObj.gobject_ops
      method name : string
      method section : string
      method style_ids : string list
      method style_name : string -> string option
    end
  class source_language_manager :
    GtkSourceView2_types.source_language_manager Gtk.obj ->
    object
      method as_source_language_manager :
        GtkSourceView2_types.source_language_manager Gtk.obj
      method get_oid : int
      method guess_language :
        ?filename:string ->
        ?content_type:string -> unit -> GSourceView2.source_language option
      method language : string -> GSourceView2.source_language option
      method language_ids : string list
      method search_path : string list
      method set_search_path : string list -> unit
    end
  val source_language_manager :
    default:bool -> GSourceView2.source_language_manager
  class source_mark :
    GtkSourceView2_types.source_mark Gtk.obj ->
    object
      method as_source_mark : GtkSourceView2_types.source_mark Gtk.obj
      method category : string option
      method coerce : GText.mark
      method next :
        ?category:string -> unit -> GSourceView2.source_mark option
      method prev :
        ?category:string -> unit -> GSourceView2.source_mark option
    end
  val source_mark : ?category:string -> unit -> GSourceView2.source_mark
  class source_buffer_signals :
    GtkSourceView2_types.source_buffer Gtk.obj ->
    object ('a)
      method after : 'a
      method apply_tag :
        callback:(GText.tag -> start:GText.iter -> stop:GText.iter -> unit) ->
        GtkSignal.id
      method begin_user_action : callback:(unit -> unit) -> GtkSignal.id
      method changed : callback:(unit -> unit) -> GtkSignal.id
      method private connect :
        'b.
          (GtkSourceView2_types.source_buffer, 'b) GtkSignal.t ->
          callback:'-> GtkSignal.id
      method delete_range :
        callback:(start:GText.iter -> stop:GText.iter -> unit) ->
        GtkSignal.id
      method end_user_action : callback:(unit -> unit) -> GtkSignal.id
      method highlight_updated :
        callback:(Gtk.text_iter -> Gtk.text_iter -> unit) -> GtkSignal.id
      method insert_child_anchor :
        callback:(GText.iter -> Gtk.text_child_anchor -> unit) ->
        GtkSignal.id
      method insert_pixbuf :
        callback:(GText.iter -> GdkPixbuf.pixbuf -> unit) -> GtkSignal.id
      method insert_text :
        callback:(GText.iter -> string -> unit) -> GtkSignal.id
      method mark_deleted : callback:(Gtk.text_mark -> unit) -> GtkSignal.id
      method mark_set :
        callback:(GText.iter -> Gtk.text_mark -> unit) -> GtkSignal.id
      method modified_changed : callback:(unit -> unit) -> GtkSignal.id
      method remove_tag :
        callback:(GText.tag -> start:GText.iter -> stop:GText.iter -> unit) ->
        GtkSignal.id
      method source_mark_updated :
        callback:(GtkSourceView2_types.source_mark Gtk.obj -> unit) ->
        GtkSignal.id
    end
  and source_buffer :
    GtkSourceView2_types.source_buffer Gtk.obj ->
    object
      val obj : GtkSourceView2_types.source_buffer Gtk.obj
      method add_selection_clipboard : GData.clipboard -> unit
      method apply_tag :
        GText.tag -> start:GText.iter -> stop:GText.iter -> unit
      method apply_tag_by_name :
        string -> start:GText.iter -> stop:GText.iter -> unit
      method as_buffer : Gtk.text_buffer
      method as_source_buffer : GtkSourceView2_types.source_buffer Gtk.obj
      method backward_iter_to_source_mark :
        ?category:string -> GText.iter -> bool
      method begin_not_undoable_action : unit -> unit
      method begin_user_action : unit -> unit
      method bounds : GText.iter * GText.iter
      method can_redo : bool
      method can_undo : bool
      method char_count : int
      method connect : GSourceView2.source_buffer_signals
      method copy_clipboard : GData.clipboard -> unit
      method create_child_anchor : GText.iter -> GText.child_anchor
      method create_mark :
        ?name:string -> ?left_gravity:bool -> GText.iter -> Gtk.text_mark
      method create_source_mark :
        ?name:string ->
        ?category:string -> GText.iter -> GSourceView2.source_mark
      method create_tag :
        ?name:string -> GText.tag_property list -> GText.tag
      method cursor_position : int
      method cut_clipboard :
        ?default_editable:bool -> GData.clipboard -> unit
      method delete : start:GText.iter -> stop:GText.iter -> unit
      method delete_interactive :
        start:GText.iter ->
        stop:GText.iter -> ?default_editable:bool -> unit -> bool
      method delete_mark : GText.mark -> unit
      method delete_selection :
        ?interactive:bool -> ?default_editable:bool -> unit -> bool
      method end_iter : GText.iter
      method end_not_undoable_action : unit -> unit
      method end_user_action : unit -> unit
      method ensure_highlight : start:GText.iter -> stop:GText.iter -> unit
      method forward_iter_to_source_mark :
        ?category:string -> GText.iter -> bool
      method get_iter : GText.position -> GText.iter
      method get_iter_at_byte : line:int -> int -> GText.iter
      method get_iter_at_char : ?line:int -> int -> GText.iter
      method get_iter_at_mark : GText.mark -> GText.iter
      method get_mark : GText.mark -> Gtk.text_mark
      method get_oid : int
      method get_text :
        ?start:GText.iter ->
        ?stop:GText.iter -> ?slice:bool -> ?visible:bool -> unit -> string
      method has_selection : bool
      method highlight_matching_brackets : bool
      method highlight_syntax : bool
      method insert :
        ?iter:GText.iter ->
        ?tag_names:string list -> ?tags:GText.tag list -> string -> unit
      method insert_child_anchor : GText.iter -> GText.child_anchor -> unit
      method insert_interactive :
        ?iter:GText.iter -> ?default_editable:bool -> string -> bool
      method insert_pixbuf :
        iter:GText.iter -> pixbuf:GdkPixbuf.pixbuf -> unit
      method insert_range :
        iter:GText.iter -> start:GText.iter -> stop:GText.iter -> unit
      method insert_range_interactive :
        iter:GText.iter ->
        start:GText.iter ->
        stop:GText.iter -> ?default_editable:bool -> unit -> bool
      method language : GSourceView2.source_language option
      method line_count : int
      method max_undo_levels : int
      method misc : GObj.gobject_ops
      method modified : bool
      method move_mark : GText.mark -> where:GText.iter -> unit
      method paste_clipboard :
        ?iter:GText.iter -> ?default_editable:bool -> GData.clipboard -> unit
      method place_cursor : where:GText.iter -> unit
      method redo : unit -> unit
      method remove_all_tags : start:GText.iter -> stop:GText.iter -> unit
      method remove_selection_clipboard : GData.clipboard -> unit
      method remove_source_marks :
        ?category:string ->
        start:GText.iter -> stop:GText.iter -> unit -> unit
      method remove_tag :
        GText.tag -> start:GText.iter -> stop:GText.iter -> unit
      method remove_tag_by_name :
        string -> start:GText.iter -> stop:GText.iter -> unit
      method select_range : GText.iter -> GText.iter -> unit
      method selection_bounds : GText.iter * GText.iter
      method set_highlight_matching_brackets : bool -> unit
      method set_highlight_syntax : bool -> unit
      method set_language : GSourceView2.source_language option -> unit
      method set_max_undo_levels : int -> unit
      method set_modified : bool -> unit
      method set_style_scheme :
        GSourceView2.source_style_scheme option -> unit
      method set_text : string -> unit
      method source_marks_at_iter :
        ?category:string -> GText.iter -> GSourceView2.source_mark list
      method source_marks_at_line :
        ?category:string -> int -> GSourceView2.source_mark list
      method start_iter : GText.iter
      method style_scheme : GSourceView2.source_style_scheme option
      method tag_table : Gtk.text_tag_table
      method undo : unit -> unit
    end
  val source_buffer :
    ?language:GSourceView2.source_language ->
    ?style_scheme:GSourceView2.source_style_scheme ->
    ?tag_table:GText.tag_table ->
    ?text:string ->
    ?highlight_matching_brackets:bool ->
    ?highlight_syntax:bool ->
    ?max_undo_levels:int -> unit -> GSourceView2.source_buffer
  class source_view_signals :
    [> GtkSourceView2_types.source_view ] Gtk.obj ->
    object ('a)
      method after : 'a
      method copy_clipboard : callback:(unit -> unit) -> GtkSignal.id
      method cut_clipboard : callback:(unit -> unit) -> GtkSignal.id
      method delete_from_cursor :
        callback:(Gtk.Tags.delete_type -> int -> unit) -> GtkSignal.id
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method insert_at_cursor : callback:(string -> unit) -> GtkSignal.id
      method move_cursor :
        callback:(Gtk.Tags.movement_step -> int -> extend:bool -> unit) ->
        GtkSignal.id
      method move_focus :
        callback:(Gtk.Tags.direction_type -> unit) -> GtkSignal.id
      method page_horizontally :
        callback:(int -> extend:bool -> unit) -> GtkSignal.id
      method paste_clipboard : callback:(unit -> unit) -> GtkSignal.id
      method populate_popup :
        callback:(Gtk.menu Gtk.obj -> unit) -> GtkSignal.id
      method redo : callback:(unit -> unit) -> GtkSignal.id
      method set_anchor : callback:(unit -> unit) -> GtkSignal.id
      method set_scroll_adjustments :
        callback:(GData.adjustment option -> GData.adjustment option -> unit) ->
        GtkSignal.id
      method toggle_overwrite : callback:(unit -> unit) -> GtkSignal.id
      method undo : callback:(unit -> unit) -> GtkSignal.id
    end
  class source_view :
    GtkSourceView2_types.source_view Gtk.obj ->
    object
      val obj : GtkSourceView2_types.source_view Gtk.obj
      method accepts_tab : bool
      method add_child_at_anchor : GObj.widget -> GText.child_anchor -> unit
      method add_child_in_window :
        child:GObj.widget ->
        which_window:Gtk.Tags.text_window_type -> x:int -> y:int -> unit
      method as_view : Gtk.text_view Gtk.obj
      method as_widget : Gtk.widget Gtk.obj
      method auto_indent : bool
      method backward_display_line : GText.iter -> bool
      method backward_display_line_start : GText.iter -> bool
      method buffer : GText.buffer
      method buffer_to_window_coords :
        tag:Gtk.Tags.text_window_type -> x:int -> y:int -> int * int
      method coerce : GObj.widget
      method connect : GSourceView2.source_view_signals
      method cursor_visible : bool
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method draw_spaces : SourceView2Enums.source_draw_spaces_flags list
      method editable : bool
      method event : GObj.event_ops
      method forward_display_line : GText.iter -> bool
      method forward_display_line_end : GText.iter -> bool
      method get_border_window_size :
        [ `BOTTOM | `LEFT | `RIGHT | `TOP ] -> int
      method get_iter_at_location : x:int -> y:int -> GText.iter
      method get_iter_location : GText.iter -> Gdk.Rectangle.t
      method get_line_at_y : int -> GText.iter * int
      method get_line_yrange : GText.iter -> int * int
      method get_mark_category_background :
        category:string -> Gdk.color option
      method get_mark_category_pixbuf :
        category:string -> GdkPixbuf.pixbuf option
      method get_mark_category_priority : category:string -> int
      method get_oid : int
      method get_window : Gtk.Tags.text_window_type -> Gdk.window option
      method get_window_type : Gdk.window -> Gtk.Tags.text_window_type
      method highlight_current_line : bool
      method indent : int
      method indent_on_tab : bool
      method indent_width : int
      method insert_spaces_instead_of_tabs : bool
      method justification : Gtk.Tags.justification
      method left_margin : int
      method misc : GObj.misc_ops
      method move_child : child:GObj.widget -> x:int -> y:int -> unit
      method move_mark_onscreen : GText.mark -> bool
      method move_visually : GText.iter -> int -> bool
      method pixels_above_lines : int
      method pixels_below_lines : int
      method pixels_inside_wrap : int
      method place_cursor_onscreen : unit -> bool
      method right_margin : int
      method right_margin_position : int
      method scroll_mark_onscreen : GText.mark -> unit
      method scroll_to_iter :
        ?within_margin:float ->
        ?use_align:bool ->
        ?xalign:float -> ?yalign:float -> GText.iter -> bool
      method scroll_to_mark :
        ?within_margin:float ->
        ?use_align:bool ->
        ?xalign:float -> ?yalign:float -> GText.mark -> unit
      method set_accepts_tab : bool -> unit
      method set_auto_indent : bool -> unit
      method set_border_window_size :
        typ:[ `BOTTOM | `LEFT | `RIGHT | `TOP ] -> size:int -> unit
      method set_buffer : GText.buffer -> unit
      method set_cursor_color : Gdk.color -> unit
      method set_cursor_color_by_name : string -> unit
      method set_cursor_visible : bool -> unit
      method set_draw_spaces :
        SourceView2Enums.source_draw_spaces_flags list -> unit
      method set_editable : bool -> unit
      method set_highlight_current_line : bool -> unit
      method set_indent : int -> unit
      method set_indent_on_tab : bool -> unit
      method set_indent_width : int -> unit
      method set_insert_spaces_instead_of_tabs : bool -> unit
      method set_justification : Gtk.Tags.justification -> unit
      method set_left_margin : int -> unit
      method set_mark_category_background :
        category:string -> Gdk.color option -> unit
      method set_mark_category_pixbuf :
        category:string -> GdkPixbuf.pixbuf option -> unit
      method set_mark_category_priority : category:string -> int -> unit
      method set_pixels_above_lines : int -> unit
      method set_pixels_below_lines : int -> unit
      method set_pixels_inside_wrap : int -> unit
      method set_right_margin : int -> unit
      method set_right_margin_position : int -> unit
      method set_show_line_marks : bool -> unit
      method set_show_line_numbers : bool -> unit
      method set_show_right_margin : bool -> unit
      method set_smart_home_end :
        SourceView2Enums.source_smart_home_end_type -> unit
      method set_tab_width : int -> unit
      method set_wrap_mode : Gtk.Tags.wrap_mode -> unit
      method show_line_marks : bool
      method show_line_numbers : bool
      method show_right_margin : bool
      method smart_home_end : SourceView2Enums.source_smart_home_end_type
      method source_buffer : GSourceView2.source_buffer
      method starts_display_line : GText.iter -> bool
      method tab_width : int
      method visible_rect : Gdk.Rectangle.t
      method window_to_buffer_coords :
        tag:Gtk.Tags.text_window_type -> x:int -> y:int -> int * int
      method wrap_mode : Gtk.Tags.wrap_mode
    end
  val source_view :
    ?source_buffer:GSourceView2.source_buffer ->
    ?draw_spaces:SourceView2Enums.source_draw_spaces_flags 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:SourceView2Enums.source_smart_home_end_type ->
    ?tab_width:int ->
    ?editable:bool ->
    ?cursor_visible:bool ->
    ?justification:GtkEnums.justification ->
    ?wrap_mode:GtkEnums.wrap_mode ->
    ?accepts_tab:bool ->
    ?border_width:int ->
    ?width:int ->
    ?height:int ->
    ?packing:(GObj.widget -> unit) ->
    ?show:bool -> unit -> GSourceView2.source_view
  val iter_forward_search :
    GText.iter ->
    SourceView2Enums.source_search_flag list ->
    start:< as_iter : Gtk.text_iter; .. > ->
    stop:< as_iter : Gtk.text_iter; .. > ->
    ?limit:< as_iter : Gtk.text_iter; .. > ->
    string -> (GText.iter * GText.iter) option
  val iter_backward_search :
    GText.iter ->
    SourceView2Enums.source_search_flag list ->
    start:< as_iter : Gtk.text_iter; .. > ->
    stop:< as_iter : Gtk.text_iter; .. > ->
    ?limit:< as_iter : Gtk.text_iter; .. > ->
    string -> (GText.iter * GText.iter) option
end