## GtkSourceCompletionProvider GtkSourceCompletionProvider — Completion provider interface |

## Synopsis

    #include <gtksourceview/gtksourcecompletionprovider.h>

                        GtkSourceCompletionProvider;
    gchar *             gtk_source_completion_provider_get_name
                                                            (GtkSourceCompletionProvider *provider);
    GdkPixbuf *         gtk_source_completion_provider_get_icon
                                                            (GtkSourceCompletionProvider *provider);
    void                gtk_source_completion_provider_populate
                                                            (GtkSourceCompletionProvider *provider,
                                                             GtkSourceCompletionContext *context);
    GtkSourceCompletionActivation  gtk_source_completion_provider_get_activation
                                                            (GtkSourceCompletionProvider *provider);
    gboolean            gtk_source_completion_provider_match
                                                            (GtkSourceCompletionProvider *provider,
                                                             GtkSourceCompletionContext *context);
    GtkWidget *         gtk_source_completion_provider_get_info_widget
                                                            (GtkSourceCompletionProvider *provider,
                                                             GtkSourceCompletionProposal *proposal);
    void                gtk_source_completion_provider_update_info
                                                            (GtkSourceCompletionProvider *provider,
                                                             GtkSourceCompletionProposal *proposal,
                                                             GtkSourceCompletionInfo *info);
    gboolean            gtk_source_completion_provider_get_start_iter
                                                            (GtkSourceCompletionProvider *provider,
                                                             GtkSourceCompletionContext *context,
                                                             GtkSourceCompletionProposal *proposal,
                                                             GtkTextIter *iter);
    gboolean            gtk_source_completion_provider_activate_proposal
                                                            (GtkSourceCompletionProvider *provider,
                                                             GtkSourceCompletionProposal *proposal,
                                                             GtkTextIter *iter);
    gint                gtk_source_completion_provider_get_interactive_delay
                                                            (GtkSourceCompletionProvider *provider);
    gint                gtk_source_completion_provider_get_priority
                                                            (GtkSourceCompletionProvider *provider);

## Object Hierarchy

      GInterface
       +----GtkSourceCompletionProvider

## Prerequisites

GtkSourceCompletionProvider requires GObject.

## Description

You must implement this interface to provide proposals to GtkSourceCompletion

## Details

### GtkSourceCompletionProvider

    typedef struct _GtkSourceCompletionProvider GtkSourceCompletionProvider;

### gtk_source_completion_provider_get_name ()

    gchar *             gtk_source_completion_provider_get_name
                                                            (GtkSourceCompletionProvider *provider);

Get the name of the provider. This should be a translatable name for display to the user. For example: _("Document word completion provider"). The returned string must be freed with `g_free()`.

`provider` : | The GtkSourceCompletionProvider
Returns : | A new string containing the name of the provider.

### gtk_source_completion_provider_get_icon ()

    GdkPixbuf *         gtk_source_completion_provider_get_icon
                                                            (GtkSourceCompletionProvider *provider);

Get the icon of the provider.

`provider` : | The GtkSourceCompletionProvider
Returns : | The icon to be used for the provider, or `NULL` if the provider does not have a special icon.

### gtk_source_completion_provider_populate ()

    void                gtk_source_completion_provider_populate
                                                            (GtkSourceCompletionProvider *provider,
                                                             GtkSourceCompletionContext *context);

Populate `context` with proposals from `provider`

`provider` : | The GtkSourceCompletionProvider
`context` : | The GtkSourceCompletionContext

### gtk_source_completion_provider_get_activation ()

    GtkSourceCompletionActivation  gtk_source_completion_provider_get_activation
                                                            (GtkSourceCompletionProvider *provider);

### gtk_source_completion_provider_match ()

    gboolean            gtk_source_completion_provider_match
                                                            (GtkSourceCompletionProvider *provider,
                                                             GtkSourceCompletionContext *context);

Get whether the provider match the context of completion detailed in `context`.

`provider` : | The GtkSourceCompletionProvider
`context` : | The GtkSourceCompletionContext
Returns : | `TRUE` if `provider` matches the completion context, `FALSE` otherwise

### gtk_source_completion_provider_get_info_widget ()

    GtkWidget *         gtk_source_completion_provider_get_info_widget
                                                            (GtkSourceCompletionProvider *provider,
                                                             GtkSourceCompletionProposal *proposal);

Get a customized info widget to show extra information of a proposal. This allows for customized widgets on a proposal basis, although in general providers will have the same custom widget for all their proposals and `proposal` can be ignored. The implementation of this function is optional. If implemented, gtk_source_completion_provider_update_info MUST also be implemented. If not implemented, the default gtk_source_completion_proposal_get_info will be used to display extra information about a GtkSourceCompletionProposal.

`provider` : | The GtkSourceCompletionProvider
`proposal` : | The currently selected GtkSourceCompletionProposal
Returns : | a custom GtkWidget to show extra information about `proposal`.

### gtk_source_completion_provider_update_info ()

    void                gtk_source_completion_provider_update_info
                                                            (GtkSourceCompletionProvider *provider,
                                                             GtkSourceCompletionProposal *proposal,
                                                             GtkSourceCompletionInfo *info);

Update extra information shown in `info` for `proposal`. This should be implemented if your provider sets a custom info widget for `proposal`. This function MUST be implemented when gtk_source_completion_provider_get_info_widget is implemented.

`provider` : | A GtkSourceCompletionProvider
`proposal` : | A GtkSourceCompletionProposal
`info` : | A GtkSourceCompletionInfo

### gtk_source_completion_provider_get_start_iter ()

    gboolean            gtk_source_completion_provider_get_start_iter
                                                            (GtkSourceCompletionProvider *provider,
                                                             GtkSourceCompletionContext *context,
                                                             GtkSourceCompletionProposal *proposal,
                                                             GtkTextIter *iter);

Get the GtkTextIter at which the completion for `proposal` starts. When implemented, the completion can use this information to position the completion window accordingly when a proposal is selected in the completion window.

`provider` : | A GtkSourceCompletionProvider
`context` : | A GtkSourceCompletionContext
`proposal` : | A GtkSourceCompletionProposal
`iter` : | A GtkTextIter
Returns : | `TRUE` if `iter` was set for `proposal`, `FALSE` otherwise

### gtk_source_completion_provider_activate_proposal ()

    gboolean            gtk_source_completion_provider_activate_proposal
                                                            (GtkSourceCompletionProvider *provider,
                                                             GtkSourceCompletionProposal *proposal,
                                                             GtkTextIter *iter);

Activate `proposal` at `iter`. When this functions returns `FALSE`, the default activation of `proposal` will take place which replaces the word at `iter` with the label of `proposal`.

`provider` : | A GtkSourceCompletionProvider
`proposal` : | A GtkSourceCompletionProposal
`iter` : | A GtkTextIter
Returns : | `TRUE` to indicate that the proposal activation has been handled, `FALSE` otherwise.

### gtk_source_completion_provider_get_interactive_delay ()

    gint                gtk_source_completion_provider_get_interactive_delay
                                                            (GtkSourceCompletionProvider *provider);

### gtk_source_completion_provider_get_priority ()

    gint                gtk_source_completion_provider_get_priority
                                                            (GtkSourceCompletionProvider *provider);