Searching in a GtkSourceBuffer

## Searching in a GtkSourceBuffer Searching in a GtkSourceBuffer |

## Synopsis

    #include <gtksourceview/gtksourceiter.h>

    enum                GtkSourceSearchFlags;
    gboolean            gtk_source_iter_backward_search     (const GtkTextIter *iter,
                                                             const gchar *str,
                                                             GtkSourceSearchFlags flags,
                                                             GtkTextIter *match_start,
                                                             GtkTextIter *match_end,
                                                             const GtkTextIter *limit);
    gboolean            gtk_source_iter_forward_search      (const GtkTextIter *iter,
                                                             const gchar *str,
                                                             GtkSourceSearchFlags flags,
                                                             GtkTextIter *match_start,
                                                             GtkTextIter *match_end,
                                                             const GtkTextIter *limit);
    gboolean            gtk_source_iter_find_matching_bracket
                                                            (GtkTextIter *iter);

## Description

## Details

### enum GtkSourceSearchFlags

    typedef enum
    {
    	GTK_SOURCE_SEARCH_VISIBLE_ONLY		 = 1 << 0,
    	GTK_SOURCE_SEARCH_TEXT_ONLY		 = 1 << 1,
    	GTK_SOURCE_SEARCH_CASE_INSENSITIVE	 = 1 << 2
    	/* Possible future plans: SEARCH_REGEXP */
    } GtkSourceSearchFlags;

### gtk_source_iter_backward_search ()

    gboolean            gtk_source_iter_backward_search     (const GtkTextIter *iter,
                                                             const gchar *str,
                                                             GtkSourceSearchFlags flags,
                                                             GtkTextIter *match_start,
                                                             GtkTextIter *match_end,
                                                             const GtkTextIter *limit);

Same as `gtk_text_iter_backward_search()`, but supports case insensitive searching.

`iter` : | a GtkTextIter where the search begins.
`str` : | search string.
`flags` : | bitmask of flags affecting the search.
`match_start` : | return location for start of match, or %`NULL`.
`match_end` : | return location for end of match, or %`NULL`.
`limit` : | location of last possible `match_start`, or %`NULL` for start of buffer.
Returns : | whether a match was found.

### gtk_source_iter_forward_search ()

    gboolean            gtk_source_iter_forward_search      (const GtkTextIter *iter,
                                                             const gchar *str,
                                                             GtkSourceSearchFlags flags,
                                                             GtkTextIter *match_start,
                                                             GtkTextIter *match_end,
                                                             const GtkTextIter *limit);

Searches forward for `str`. Any match is returned by setting `match_start` to the first character of the match and `match_end` to the first character after the match. The search will not continue past `limit`. Note that a search is a linear or O(n) operation, so you may wish to use `limit` to avoid locking up your UI on large buffers.

If the GTK_SOURCE_SEARCH_VISIBLE_ONLY flag is present, the match may have invisible text interspersed in `str`. i.e. `str` will be a possibly-noncontiguous subsequence of the matched range. similarly, if you specify GTK_SOURCE_SEARCH_TEXT_ONLY, the match may have pixbufs or child widgets mixed inside the matched range. If these flags are not given, the match must be exact; the special 0xFFFC character in `str` will match embedded pixbufs or child widgets. If you specify the GTK_SOURCE_SEARCH_CASE_INSENSITIVE flag, the text will be matched regardless of what case it is in.

Same as `gtk_text_iter_forward_search()`, but supports case insensitive searching.

`iter` : | start of search.
`str` : | a search string.
`flags` : | flags affecting how the search is done.
`match_start` : | return location for start of match, or %`NULL`.
`match_end` : | return location for end of match, or %`NULL`.
`limit` : | bound for the search, or %`NULL` for the end of the buffer.
Returns : | whether a match was found.

### gtk_source_iter_find_matching_bracket ()

    gboolean            gtk_source_iter_find_matching_bracket
                                                            (GtkTextIter *iter);

Tries to match the bracket character currently at `iter` with its opening/closing counterpart, and if found moves `iter` to the position where it was found.

`iter` must be a GtkTextIter belonging to a GtkSourceBuffer.

`iter` : | a GtkTextIter.
Returns : | `TRUE` if the matching bracket was found and the `iter` iter moved.