GtkSourceCompletion

GtkSourceCompletion — Main Completion Object

Functions

Types and Values

Includes

#include <gtksourceview/gtksource.h>

Description

The completion system helps the user when he writes some text, such as words, command names, functions, and suchlike. Proposals can be shown, to complete the text the user is writing. Each proposal can contain an additional piece of information, that is displayed when the "Details" button is active.

Proposals are created via a GtkSourceCompletionProvider. There can be for example a provider to complete words (see GtkSourceCompletionWords), another provider for the completion of function's names, etc. To add a provider, call gtk_source_completion_add_provider().

When the completion is activated, a GtkSourceCompletionContext object is created. The providers are asked whether they match the context, with gtk_source_completion_provider_match(). If a provider doesn't match the context, it will not be visible in the completion window. On the other hand, if the provider matches the context, its proposals will be displayed.

When several providers match, they are all shown in the completion window, but one can switch between providers: see the “move-page” signal. It is also possible to activate the first proposals with key bindings, see the “accelerators” property.

The GtkSourceCompletionProposal interface represents a proposal. The GtkSourceCompletionItem class is a simple implementation of this interface.

If a proposal contains extra information (see gtk_source_completion_provider_get_info_widget()), it will be displayed in a GtkSourceCompletionInfo window, which appears when the "Details" button is clicked.

A GtkSourceCompletionInfo window can also be used to display calltips. When no proposals are available, it can be useful to display extra information like a function's prototype (number of parameters, types of parameters, etc).

Each GtkSourceView object is associated with a GtkSourceCompletion instance. This instance can be obtained with gtk_source_view_get_completion(). The GtkSourceView class contains also the “show-completion” signal.

A same GtkSourceCompletionProvider object can be used for several GtkSourceCompletion.

GtkSourceCompletion as GtkBuildable

The GtkSourceCompletion implementation of the GtkBuildable interface exposes the info window object (see gtk_source_completion_get_info_window()) with the internal-child "info_window".

An example of a UI definition fragment with GtkSourceCompletion:

1
2
3
4
5
6
7
8
<object class="GtkSourceCompletion">
  <property name="select_on_show">False</property>
  <child internal-child="info_window">
    <object class="GtkSourceCompletionInfo">
      <property name="border_width">6</property>
    </object>
  </child>
</object>

Functions

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.

Parameters

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.

Parameters

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.

Parameters

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.

It can be convenient for showing a completion on-the-fly, without the need to add or remove providers to the GtkSourceCompletion.

Another solution is to add providers with gtk_source_completion_add_provider(), and implement gtk_source_completion_provider_match() for each provider.

Parameters

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 floating]

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

Parameters

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.

Parameters

completion

a GtkSourceCompletion.

 

Returns

The GtkSourceCompletionInfo window associated with completion .

[transfer none]


gtk_source_completion_get_view ()

GtkSourceView *
gtk_source_completion_get_view (GtkSourceCompletion *completion);

The GtkSourceView associated with completion , or NULL if the view has been destroyed.

Parameters

completion

a GtkSourceCompletion.

 

Returns

The GtkSourceView associated with completion , or NULL.

[type GtkSource.View][nullable][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 where the completion occurs can be specified by position . If position is NULL, the current cursor position will be used.

Parameters

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 floating]


gtk_source_completion_move_window ()

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

gtk_source_completion_move_window has been deprecated since version 3.8 and should not be used in newly-written code.

Use gtk_source_completion_provider_get_start_iter() instead.

Move the completion window to a specific iter.

Parameters

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.

This function may be called multiple times. It will continue to block interactive completion until gtk_source_completion_unblock_interactive() has been called the same number of times.

Parameters

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.

Parameters

completion

a GtkSourceCompletion.

 

Types and Values

GtkSourceCompletion

typedef struct {
	GObject parent_instance;

	GtkSourceCompletionPrivate *priv;
} GtkSourceCompletion;

GTK_SOURCE_COMPLETION_ERROR

#define GTK_SOURCE_COMPLETION_ERROR		(gtk_source_completion_error_quark ())

Error domain for the completion. Errors in this domain will be from the GtkSourceCompletionError enumeration. See GError for more information on error domains.


enum GtkSourceCompletionError

An error code used with GTK_SOURCE_COMPLETION_ERROR in a GError returned from a completion-related function.

Members

GTK_SOURCE_COMPLETION_ERROR_ALREADY_BOUND

The GtkSourceCompletionProvider is already bound to the GtkSourceCompletion object.

 

GTK_SOURCE_COMPLETION_ERROR_NOT_BOUND

The GtkSourceCompletionProvider is not bound to the GtkSourceCompletion object.