sig
  type source_tag_property =
      [ `BACKGROUND of Gdk.color
      | `BOLD of bool
      | `FOREGROUND of Gdk.color
      | `ITALIC of bool
      | `STRIKETHROUGH of bool
      | `UNDERLINE of bool ]
  class source_tag_style :
    GtkSourceView_types.source_tag_style Gtk.obj ->
    object
      method as_source_tag_style :
        GtkSourceView_types.source_tag_style Gtk.obj
      method background : Gdk.color
      method bold : bool
      method copy : GSourceView.source_tag_style
      method foreground : Gdk.color
      method italic : bool
      method set_background : Gdk.color -> unit
      method set_background_by_name : string -> unit
      method set_bold : bool -> unit
      method set_foreground : Gdk.color -> unit
      method set_foreground_by_name : string -> unit
      method set_italic : bool -> unit
      method set_strikethrough : bool -> unit
      method set_underline : bool -> unit
      method set_use_background : bool -> unit
      method set_use_foreground : bool -> unit
      method strikethrough : bool
      method underline : bool
      method use_background : bool
      method use_foreground : bool
    end
  val source_tag_style :
    ?background:Gdk.color ->
    ?background_by_name:string ->
    ?bold:bool ->
    ?foreground:Gdk.color ->
    ?foreground_by_name:string ->
    ?italic:bool ->
    ?strikethrough:bool ->
    ?underline:bool -> unit -> GSourceView.source_tag_style
  type source_tag_id = string
  class source_tag :
    GtkSourceView_types.source_tag Gtk.obj ->
    object
      method as_source_tag : GtkSourceView_types.source_tag Gtk.obj
      method as_tag : Gtk.text_tag
      method connect : GText.tag_signals
      method event : 'Gtk.obj -> GdkEvent.any -> Gtk.text_iter -> bool
      method get_oid : int
      method get_property : ([ `texttag ], 'b) Gobject.property -> 'b
      method id : GSourceView.source_tag_id
      method priority : int
      method set_priority : int -> unit
      method set_properties : GText.tag_property list -> unit
      method set_property : GText.tag_property -> unit
      method set_source_properties :
        GSourceView.source_tag_property list -> unit
      method set_source_property : GSourceView.source_tag_property -> unit
      method set_style : GSourceView.source_tag_style -> unit
      method style : GSourceView.source_tag_style
    end
  val syntax_tag :
    id:string ->
    name:string ->
    pat_start:string -> pat_end:string -> GSourceView.source_tag
  val pattern_tag :
    id:string -> name:string -> pat:string -> GSourceView.source_tag
  val keyword_list_tag :
    id:string ->
    name:string ->
    keywords:string list ->
    ?case_sensitive:bool ->
    ?match_empty_string_at_beginning:bool ->
    ?match_empty_string_at_end:bool ->
    ?beginning_regex:string ->
    ?end_regex:string -> unit -> GSourceView.source_tag
  val block_comment_tag :
    id:string ->
    name:string ->
    pat_start:string -> pat_end:string -> GSourceView.source_tag
  val line_comment_tag :
    id:string -> name:string -> pat_start:string -> GSourceView.source_tag
  val string_tag :
    id:string ->
    name:string ->
    pat_start:string ->
    pat_end:string -> end_at_line_end:bool -> GSourceView.source_tag
  class source_tag_table_signals :
    [> GtkSourceView_types.source_tag_table ] Gtk.obj ->
    object ('a)
      method after : 'a
      method changed : callback:(unit -> unit) -> GtkSignal.id
      method tag_added : callback:(Gtk.text_tag -> unit) -> GtkSignal.id
      method tag_changed :
        callback:(Gtk.text_tag -> size:bool -> unit) -> GtkSignal.id
      method tag_removed : callback:(Gtk.text_tag -> unit) -> GtkSignal.id
    end
  class source_tag_table :
    GtkSourceView_types.source_tag_table Gtk.obj ->
    object
      method add : Gtk.text_tag -> unit
      method add_tags : GSourceView.source_tag list -> unit
      method as_source_tag_table : [ `sourcetagtable ] Gtk.obj
      method as_tag_table : Gtk.text_tag_table
      method connect : GSourceView.source_tag_table_signals
      method get_oid : int
      method lookup : string -> Gtk.text_tag option
      method misc : GObj.gobject_ops
      method remove : Gtk.text_tag -> unit
      method remove_source_tags : unit -> unit
      method size : int
    end
  val source_tag_table : unit -> GSourceView.source_tag_table
  class source_style_scheme :
    GtkSourceView_types.source_style_scheme Gtk.obj ->
    object
      method as_source_style_scheme :
        GtkSourceView_types.source_style_scheme Gtk.obj
      method get_name : string
      method get_tag_style : string -> GSourceView.source_tag_style
    end
  val default_style_scheme : unit -> GSourceView.source_style_scheme
  class source_language_signals :
    ([> GtkSourceView_types.source_language ] as 'b) Gtk.obj ->
    object ('a)
      val after : bool
      val obj : 'Gtk.obj
      method after : 'a
      method private connect :
        'c. ('b, 'c) GtkSignal.t -> callback:'-> GtkSignal.id
      method tag_style_changed : callback:(string -> unit) -> GtkSignal.id
    end
  class source_language :
    GtkSourceView_types.source_language Gtk.obj ->
    object
      method as_source_language : GtkSourceView_types.source_language Gtk.obj
      method connect : GSourceView.source_language_signals
      method get_escape_char : Glib.unichar
      method get_name : string
      method get_section : string
      method get_style_scheme : GSourceView.source_style_scheme
      method get_tag_default_style :
        GSourceView.source_tag_id -> GSourceView.source_tag_style
      method get_tag_style :
        GSourceView.source_tag_id -> GSourceView.source_tag_style
      method get_tags : GSourceView.source_tag list
      method misc : GObj.gobject_ops
      method set_style_scheme : GSourceView.source_style_scheme -> unit
      method set_tag_style :
        GSourceView.source_tag_id -> GSourceView.source_tag_style -> unit
    end
  class source_languages_manager :
    GtkSourceView_types.source_languages_manager Gtk.obj ->
    object
      method as_source_languages_manager :
        GtkSourceView_types.source_languages_manager Gtk.obj
      method get_available_languages : GSourceView.source_language list
      method get_language_from_mime_type :
        string -> GSourceView.source_language option
      method get_oid : int
      method lang_files_dirs : string list
    end
  val source_languages_manager : unit -> GSourceView.source_languages_manager
  val source_language_from_file :
    ?languages_manager:GSourceView.source_languages_manager ->
    string -> GSourceView.source_language option
  class source_marker :
    GtkSourceView_types.source_marker Gtk.obj ->
    object
      method as_source_marker : GtkSourceView_types.source_marker Gtk.obj
      method get_buffer : GSourceView.source_buffer
      method get_line : int
      method get_name : string
      method get_type : string
      method next : GSourceView.source_marker
      method prev : GSourceView.source_marker
      method set_type : string -> unit
    end
  and source_buffer_signals :
    GtkSourceView_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 can_redo : callback:(bool -> unit) -> GtkSignal.id
      method can_undo : callback:(bool -> unit) -> GtkSignal.id
      method changed : callback:(unit -> unit) -> GtkSignal.id
      method private connect :
        'b.
          (GtkSourceView_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 marker_updated :
        callback:(Gtk.text_iter -> 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
    end
  and source_buffer :
    GtkSourceView_types.source_buffer Gtk.obj ->
    object
      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 : GtkSourceView_types.source_buffer Gtk.obj
      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 check_brackets : bool
      method connect : GSourceView.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_marker :
        ?name:string ->
        ?typ:string -> GText.iter -> GSourceView.source_marker
      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_marker : GSourceView.source_marker -> 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 escape_char : Glib.unichar
      method get_first_marker : GSourceView.source_marker option
      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_iter_at_marker : GSourceView.source_marker -> GText.iter
      method get_last_marker : GSourceView.source_marker option
      method get_mark : GText.mark -> Gtk.text_mark
      method get_marker : string -> GSourceView.source_marker
      method get_markers_in_region :
        start:GText.iter -> stop:GText.iter -> GSourceView.source_marker list
      method get_next_marker : GText.iter -> GSourceView.source_marker option
      method get_oid : int
      method get_prev_marker : GText.iter -> GSourceView.source_marker option
      method get_text :
        ?start:GText.iter ->
        ?stop:GText.iter -> ?slice:bool -> ?visible:bool -> unit -> string
      method has_selection : bool
      method highlight : 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 : GSourceView.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 move_marker : GSourceView.source_marker -> 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_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_bracket_match_style : GSourceView.source_tag_style -> unit
      method set_check_brackets : bool -> unit
      method set_escape_char : Glib.unichar -> unit
      method set_highlight : bool -> unit
      method set_language : GSourceView.source_language -> unit
      method set_max_undo_levels : int -> unit
      method set_modified : bool -> unit
      method set_text : string -> unit
      method source_tag_table : GSourceView.source_tag_table
      method start_iter : GText.iter
      method tag_table : Gtk.text_tag_table
      method undo : unit -> unit
    end
  val source_buffer :
    ?language:GSourceView.source_language ->
    ?tag_table:GSourceView.source_tag_table ->
    ?text:string ->
    ?check_brackets:bool ->
    ?escape_char:int ->
    ?highlight:bool ->
    ?max_undo_levels:int -> unit -> GSourceView.source_buffer
  class source_view_signals :
    [> GtkSourceView_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 :
    GtkSourceView_types.source_view Gtk.obj ->
    object
      val obj : GtkSourceView_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 : GSourceView.source_view_signals
      method cursor_visible : bool
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      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_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 insert_spaces_instead_of_tabs : bool
      method justification : Gtk.Tags.justification
      method left_margin : int
      method margin : int
      method marker_pixbuf : string -> GdkPixbuf.pixbuf
      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 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_editable : bool -> unit
      method set_highlight_current_line : bool -> unit
      method set_indent : 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_margin : int -> unit
      method set_marker_pixbuf : string -> GdkPixbuf.pixbuf -> 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_show_line_markers : bool -> unit
      method set_show_line_numbers : bool -> unit
      method set_show_margin : bool -> unit
      method set_smart_home_end : bool -> unit
      method set_tabs_width : int -> unit
      method set_wrap_mode : Gtk.Tags.wrap_mode -> unit
      method show_line_markers : bool
      method show_line_numbers : bool
      method show_margin : bool
      method smart_home_end : bool
      method source_buffer : GSourceView.source_buffer
      method starts_display_line : GText.iter -> bool
      method tabs_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:GSourceView.source_buffer ->
    ?auto_indent:bool ->
    ?highlight_current_line:bool ->
    ?insert_spaces_instead_of_tabs:bool ->
    ?margin:int ->
    ?show_line_markers:bool ->
    ?show_line_numbers:bool ->
    ?show_margin:bool ->
    ?smart_home_end:bool ->
    ?tabs_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 -> GSourceView.source_view
  val find_matching_bracket : GText.iter -> GText.iter option
  val iter_forward_search :
    GText.iter ->
    SourceViewEnums.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 ->
    SourceViewEnums.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