## GtkSourceCompletionProvider

GtkSourceCompletionProvider — Completion provider interface

## Functions

gchar * | gtk_source_completion_provider_get_name ()
GdkPixbuf * | gtk_source_completion_provider_get_icon ()
void | gtk_source_completion_provider_populate ()
GtkSourceCompletionActivation | gtk_source_completion_provider_get_activation ()
gboolean | gtk_source_completion_provider_match ()
GtkWidget * | gtk_source_completion_provider_get_info_widget ()
void | gtk_source_completion_provider_update_info ()
gboolean | gtk_source_completion_provider_get_start_iter ()
gboolean | gtk_source_completion_provider_activate_proposal ()
gint | gtk_source_completion_provider_get_interactive_delay ()
gint | gtk_source_completion_provider_get_priority ()

## Types and Values

| GtkSourceCompletionProvider
struct | GtkSourceCompletionProviderIface

## Object Hierarchy

        GInterface
        ╰── GtkSourceCompletionProvider

## Prerequisites

GtkSourceCompletionProvider requires GObject.

## Known Implementations

GtkSourceCompletionProvider is implemented by GtkSourceCompletionWords.

## Includes

    #include <gtksourceview/gtksource.h>

## Description

You must implement this interface to provide proposals to GtkSourceCompletion

## Functions

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

#### Parameters

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.

#### Parameters

provider | The GtkSourceCompletionProvider |

#### Returns

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

[nullable][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.

#### Parameters

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.

#### Parameters

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

#### Parameters

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.

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

#### Parameters

provider | a GtkSourceCompletionProvider. |
proposal | a currently selected GtkSourceCompletionProposal. |

#### Returns

a custom GtkWidget to show extra information about `proposal` , or `NULL` if the provider does not have a special info widget.

[nullable][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` .

This function must be implemented when `gtk_source_completion_provider_get_info_widget()` is implemented.

#### Parameters

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, this information is used to position the completion window accordingly when a proposal is selected in the completion window. The `proposal` text inside the completion window is aligned on `iter` .

If this function is not implemented, the word boundary is taken to position the completion window. See `gtk_source_completion_provider_activate_proposal()` for an explanation on the word boundaries.

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.

#### Parameters

provider | a GtkSourceCompletionProvider. |
proposal | a GtkSourceCompletionProposal. |
context | a GtkSourceCompletionContext. |
iter | a GtkTextIter. | [out]

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

#### Parameters

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.

#### Parameters

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.

#### Parameters

provider | a GtkSourceCompletionProvider. |

#### Returns

the provider priority.

## Types and Values

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

#### Members

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