## GtkSourceCompletionProvider GtkSourceCompletionProvider — Completion provider interface |

## Synopsis

    #include <gtksourceview/gtksource.h>

                        GtkSourceCompletionProvider;
    struct              GtkSourceCompletionProviderIface;
    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.

## Known Implementations

GtkSourceCompletionProvider is implemented by GtkSourceCompletionWords.

## Description

You must implement this interface to provide proposals to GtkSourceCompletion

## Details

### GtkSourceCompletionProvider

    typedef struct _GtkSourceCompletionProvider GtkSourceCompletionProvider;

### struct GtkSourceCompletionProviderIface

    struct GtkSourceCompletionProviderIface {
    	GTypeInterface g_iface;

    	gchar		*(*get_name)       	(GtkSourceCompletionProvider *provider);
    	GdkPixbuf *(*get_icon)       	(GtkSourceCompletionProvider *provider);
    	void 		 (*populate) 		(GtkSourceCompletionProvider *provider,
    						 GtkSourceCompletionContext  *context);

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

    	GtkSourceCompletionActivation
    		         (*get_activation) (GtkSourceCompletionProvider *provider);

    	GtkWidget 	*(*get_info_widget) (GtkSourceCompletionProvider *provider,
    						 GtkSourceCompletionProposal *proposal);
    	void		 (*update_info)		(GtkSourceCompletionProvider *provider,
    						 GtkSourceCompletionProposal *proposal,
    						 GtkSourceCompletionInfo     *info);

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

    	gint		 (*get_interactive_delay) (GtkSourceCompletionProvider *provider);
    	gint		 (*get_priority) (GtkSourceCompletionProvider *provider);
    };

The virtual function table for GtkSourceCompletionProvider.

GTypeInterface `g_iface`; | The parent interface.
`get_name` () | The virtual function pointer for `gtk_source_completion_provider_get_name()`. Must be implemented.
`get_icon` () | The virtual function pointer for `gtk_source_completion_provider_get_icon()`. By default, `NULL` is returned.
`populate` () | The virtual function pointer for `gtk_source_completion_provider_populate()`. Add no proposals by default.
`match` () | The virtual function pointer for `gtk_source_completion_provider_match()`. By default, `TRUE` is returned.
`get_activation` () | The virtual function pointer for `gtk_source_completion_provider_get_activation()`. The combination of all GtkSourceCompletionActivation is returned by default.
`get_info_widget` () | The virtual function pointer for `gtk_source_completion_provider_get_info_widget()`. By default, `NULL` is returned.
`update_info` () | The virtual function pointer for `gtk_source_completion_provider_update_info()`. Does nothing by default.
`get_start_iter` () | The virtual function pointer for `gtk_source_completion_provider_get_start_iter()`. By default, `FALSE` is returned.
`activate_proposal` () | The virtual function pointer for `gtk_source_completion_provider_activate_proposal()`. By default, `FALSE` is returned.
`get_interactive_delay` () | The virtual function pointer for `gtk_source_completion_provider_get_interactive_delay()`. By default, -1 is returned.
`get_priority` () | The virtual function pointer for `gtk_source_completion_provider_get_priority()`. By default, 0 is returned.

### 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` : | a 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. [transfer none]

### gtk_source_completion_provider_populate ()

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

Populate `context` with proposals from `provider` added with the `gtk_source_completion_context_add_proposals()` function.

`provider` : | a GtkSourceCompletionProvider.
`context` : | a GtkSourceCompletionContext.

### gtk_source_completion_provider_get_activation ()

    GtkSourceCompletionActivation gtk_source_completion_provider_get_activation
                                                            (GtkSourceCompletionProvider *provider);

Get with what kind of activation the provider should be activated.

`provider` : | a GtkSourceCompletionProvider.
Returns : | a combination of GtkSourceCompletionActivation.

### 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` : | a GtkSourceCompletionProvider.
`context` : | a 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 this function is not implemented, the default widget is a GtkLabel. The return value of `gtk_source_completion_proposal_get_info()` is used as the content of the GtkLabel.

### Note

If implemented, `gtk_source_completion_provider_update_info()` must also be implemented.

`provider` : | a GtkSourceCompletionProvider.
`proposal` : | a currently selected GtkSourceCompletionProposal.
Returns : | a custom GtkWidget to show extra information about `proposal`. [transfer none]

### 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`.

### Note

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.

When the `proposal` is activated, the default handler uses `iter` as the start of the word to replace. See `gtk_source_completion_provider_activate_proposal()` for more information.

`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 text of `proposal` (see `gtk_source_completion_proposal_get_text()`).

Here is how the default activation selects the boundaries of the word to replace. The end of the word is `iter`. For the start of the word, it depends on whether a start iter is defined for `proposal` (see `gtk_source_completion_provider_get_start_iter()`). If a start iter is defined, the start of the word is the start iter. Else, the word (as long as possible) will contain only alphanumerical and the "_" characters.

`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);

Get the delay in milliseconds before starting interactive completion for this provider. A value of -1 indicates to use the default value as set by the "auto-complete-delay" property.

`provider` : | a GtkSourceCompletionProvider.
Returns : | the interactive delay in milliseconds.

### gtk_source_completion_provider_get_priority ()

    gint                gtk_source_completion_provider_get_priority
                                                            (GtkSourceCompletionProvider *provider);

Get the provider priority. The priority determines the order in which proposals appear in the completion popup. Higher priorities are sorted before lower priorities. The default priority is 0.

`provider` : | a GtkSourceCompletionProvider.
Returns : | the provider priority.