## GtkSourceCompletion GtkSourceCompletion — Main Completion Object |

## Synopsis

    #include <gtksourceview/gtksourcecompletion.h>

    struct              GtkSourceCompletion;
    gboolean            gtk_source_completion_add_provider  (GtkSourceCompletion *completion,
                                                             GtkSourceCompletionProvider *provider,
                                                             GError **error);
    gboolean            gtk_source_completion_remove_provider
                                                            (GtkSourceCompletion *completion,
                                                             GtkSourceCompletionProvider *provider,
                                                             GError **error);
    GList *             gtk_source_completion_get_providers (GtkSourceCompletion *completion);
    gboolean            gtk_source_completion_show          (GtkSourceCompletion *completion,
                                                             GList *providers,
                                                             GtkSourceCompletionContext *context);
    void                gtk_source_completion_hide          (GtkSourceCompletion *completion);
    GtkSourceCompletionInfo * gtk_source_completion_get_info_window
                                                            (GtkSourceCompletion *completion);
    struct _GtkSourceView * gtk_source_completion_get_view  (GtkSourceCompletion *completion);
    GtkSourceCompletionContext * gtk_source_completion_create_context
                                                            (GtkSourceCompletion *completion,
                                                             GtkTextIter *position);
    void                gtk_source_completion_move_window   (GtkSourceCompletion *completion,
                                                             GtkTextIter *iter);
    void                gtk_source_completion_block_interactive
                                                            (GtkSourceCompletion *completion);
    void                gtk_source_completion_unblock_interactive
                                                            (GtkSourceCompletion *completion);

## Object Hierarchy

      GObject
       +----GtkSourceCompletion

## Properties

      "accelerators"             guint                 : Read / Write / Construct
      "auto-complete-delay"      guint                 : Read / Write / Construct
      "proposal-page-size"       guint                 : Read / Write / Construct
      "provider-page-size"       guint                 : Read / Write / Construct
      "remember-info-visibility" gboolean              : Read / Write / Construct
      "select-on-show"           gboolean              : Read / Write / Construct
      "show-headers"             gboolean              : Read / Write / Construct
      "show-icons"               gboolean              : Read / Write / Construct
      "view"                     GtkSourceView*        : Read / Write / Construct Only

## Signals

      "activate-proposal"                              : Action
      "hide"                                           : Action
      "move-cursor"                                    : Action
      "move-page"                                      : Action
      "populate-context"                               : Action
      "show"                                           : Action

## Description

## Details

### struct GtkSourceCompletion

    struct GtkSourceCompletion;

### gtk_source_completion_add_provider ()

    gboolean            gtk_source_completion_add_provider  (GtkSourceCompletion *completion,
                                                             GtkSourceCompletionProvider *provider,
                                                             GError **error);

Add a new GtkSourceCompletionProvider to the completion object. This will add a reference `provider`, so make sure to unref your own copy when you no longer need it.

`completion` : | a GtkSourceCompletion.
`provider` : | a GtkSourceCompletionProvider.
`error` : | a GError. [allow-none]
Returns : | `TRUE` if `provider` was successfully added, otherwise if `error` is provided, it will be set with the error and `FALSE` is returned.

### gtk_source_completion_remove_provider ()

    gboolean            gtk_source_completion_remove_provider
                                                            (GtkSourceCompletion *completion,
                                                             GtkSourceCompletionProvider *provider,
                                                             GError **error);

Remove `provider` from the completion.

`completion` : | a GtkSourceCompletion.
`provider` : | a GtkSourceCompletionProvider.
`error` : | a GError. [allow-none]
Returns : | `TRUE` if `provider` was successfully removed, otherwise if `error` is provided, it will be set with the error and `FALSE` is returned.

### gtk_source_completion_get_providers ()

    GList *             gtk_source_completion_get_providers (GtkSourceCompletion *completion);

Get list of providers registered on `completion`. The returned list is owned by the completion and should not be freed.

`completion` : | a GtkSourceCompletion.
Returns : | list of GtkSourceCompletionProvider. [element-type GtkSource.CompletionProvider][transfer none]

### gtk_source_completion_show ()

    gboolean            gtk_source_completion_show          (GtkSourceCompletion *completion,
                                                             GList *providers,
                                                             GtkSourceCompletionContext *context);

Starts a new completion with the specified GtkSourceCompletionContext and a list of potential candidate providers for completion.

`completion` : | a GtkSourceCompletion.
`providers` : | a list of GtkSourceCompletionProvider, or `NULL`. [element-type GtkSource.CompletionProvider][allow-none]
`context` : | The GtkSourceCompletionContext with which to start the completion. [transfer full]
Returns : | `TRUE` if it was possible to the show completion window.

### gtk_source_completion_hide ()

    void                gtk_source_completion_hide          (GtkSourceCompletion *completion);

Hides the completion if it is active (visible).

`completion` : | a GtkSourceCompletion.

### gtk_source_completion_get_info_window ()

    GtkSourceCompletionInfo * gtk_source_completion_get_info_window
                                                            (GtkSourceCompletion *completion);

The info widget is the window where the completion displays optional extra information of the proposal.

`completion` : | a GtkSourceCompletion.
Returns : | The GtkSourceCompletionInfo window associated with `completion`. [transfer none]

### gtk_source_completion_get_view ()

    struct _GtkSourceView * gtk_source_completion_get_view  (GtkSourceCompletion *completion);

The GtkSourceView associated with `completion`.

`completion` : | a GtkSourceCompletion.
Returns : | The GtkSourceView associated with `completion`. [type GtkSource.View][transfer none]

### gtk_source_completion_create_context ()

    GtkSourceCompletionContext * gtk_source_completion_create_context
                                                            (GtkSourceCompletion *completion,
                                                             GtkTextIter *position);

Create a new GtkSourceCompletionContext for `completion`. The position at which the completion using the new context will consider completion can be provider by `position`. If `position` is `NULL`, the current cursor position will be used.

`completion` : | a GtkSourceCompletion.
`position` : | a GtkTextIter, or `NULL`. [allow-none]
Returns : | a new GtkSourceCompletionContext. The reference being returned is a 'floating' reference, so if you invoke gtk_source_completion_show with this context you don't need to unref it. [transfer full]

### gtk_source_completion_move_window ()

    void                gtk_source_completion_move_window   (GtkSourceCompletion *completion,
                                                             GtkTextIter *iter);

Move the completion window to a specific iter.

`completion` : | a GtkSourceCompletion.
`iter` : | a GtkTextIter.

### gtk_source_completion_block_interactive ()

    void                gtk_source_completion_block_interactive
                                                            (GtkSourceCompletion *completion);

Block interactive completion. This can be used to disable interactive completion when inserting or deleting text from the buffer associated with the completion. Use gtk_source_completion_unblock_interactive to enable interactive completion again.

`completion` : | a GtkSourceCompletion.

### gtk_source_completion_unblock_interactive ()

    void                gtk_source_completion_unblock_interactive
                                                            (GtkSourceCompletion *completion);

Unblock interactive completion. This can be used after using gtk_source_completion_block_interactive to enable interactive completion again.

`completion` : | a GtkSourceCompletion.

## Property Details

### The `"accelerators"` property

      "accelerators"             guint                 : Read / Write / Construct

Number of accelerators to show for the first proposals.

Allowed values: <= 10

Default value: 5

### The `"auto-complete-delay"` property

      "auto-complete-delay"      guint                 : Read / Write / Construct

Determines the popup delay (in milliseconds) at which the completion will be shown for interactive completion.

Default value: 250

### The `"proposal-page-size"` property

      "proposal-page-size"       guint                 : Read / Write / Construct

The scroll page size of the proposals in the completion window.

Allowed values: >= 1

Default value: 5

### The `"provider-page-size"` property

      "provider-page-size"       guint                 : Read / Write / Construct

The scroll page size of the provider pages in the completion window.

Allowed values: >= 1

Default value: 5

### The `"remember-info-visibility"` property

      "remember-info-visibility" gboolean              : Read / Write / Construct

Determines whether the visibility of the info window should be saved when the completion is hidden, and restored when the completion is shown again.

Default value: FALSE

### The `"select-on-show"` property

      "select-on-show"           gboolean              : Read / Write / Construct

Determines whether the first proposal should be selected when the completion is first shown.

Default value: TRUE

### The `"show-headers"` property

      "show-headers"             gboolean              : Read / Write / Construct

Determines whether provider headers should be shown in the proposal list if there is more than one provider with proposals.

Default value: TRUE

### The `"show-icons"` property

      "show-icons"               gboolean              : Read / Write / Construct

Determines whether provider and proposal icons should be shown in the completion popup.

Default value: TRUE

### The `"view"` property

      "view"                     GtkSourceView*        : Read / Write / Construct Only

The GtkSourceView bound to the completion object.

## Signal Details

### The `"activate-proposal"` signal

    void                user_function                      (GtkSourceCompletion *completion,
                                                            gpointer             user_data)       : Action

The ::activate-proposal signal is a keybinding signal which gets emitted when the user initiates a proposal activation.

Applications should not connect to it, but may emit it with g_signal_emit_by_name if they need to control the proposal activation programmatically.

`completion` : | The GtkSourceCompletion who emits the signal
`user_data` : | user data set when the signal handler was connected.

### The `"hide"` signal

    void                user_function                      (GtkSourceCompletion *completion,
                                                            gpointer             user_data)       : Action

Emitted when the completion window is hidden. The default handler will actually hide the window.

`completion` : | The GtkSourceCompletion who emits the signal
`user_data` : | user data set when the signal handler was connected.

### The `"move-cursor"` signal

    void                user_function                      (GtkSourceCompletion *completion,
                                                            GtkScrollStep        step,
                                                            gint                 num,
                                                            gpointer             user_data)       : Action

The ::move-cursor signal is a keybinding signal which gets emitted when the user initiates a cursor movement.

Applications should not connect to it, but may emit it with g_signal_emit_by_name if they need to control the cursor programmatically.

`completion` : | The GtkSourceCompletion who emits the signal
`step` : | The GtkScrollStep by which to move the cursor
`num` : | The amount of steps to move the cursor
`user_data` : | user data set when the signal handler was connected.

### The `"move-page"` signal

    void                user_function                      (GtkSourceCompletion *completion,
                                                            GtkScrollStep        step,
                                                            gint                 num,
                                                            gpointer             user_data)       : Action

The ::move-page signal is a keybinding signal which gets emitted when the user initiates a page movement (i.e. switches between provider pages).

Applications should not connect to it, but may emit it with g_signal_emit_by_name if they need to control the page selection programmatically.

`completion` : | The GtkSourceCompletion who emits the signal
`step` : | The GtkScrollStep by which to move the page
`num` : | The amount of steps to move the page
`user_data` : | user data set when the signal handler was connected.

### The `"populate-context"` signal

    void                user_function                      (GtkSourceCompletion        *completion,
                                                            GtkSourceCompletionContext *context,
                                                            gpointer                    user_data)       : Action

Emitted just before starting to populate the completion with providers. You can use this signal to add additional attributes in the context.

`completion` : | The GtkSourceCompletion who emits the signal
`context` : | The GtkSourceCompletionContext for the current completion
`user_data` : | user data set when the signal handler was connected.

### The `"show"` signal

    void                user_function                      (GtkSourceCompletion *completion,
                                                            gpointer             user_data)       : Action

Emitted when the completion window is shown. The default handler will actually show the window.

`completion` : | The GtkSourceCompletion who emits the signal
`user_data` : | user data set when the signal handler was connected.