GtkSourceCompletionProvider

GtkSourceCompletionProvider — Completion provider interface

Functions

Types and Values

Object Hierarchy

    GInterface
    ╰── GtkSourceCompletionProvider

Prerequisites

GtkSourceCompletionProvider requires GObject.

Known Implementations

GtkSourceCompletionProvider is implemented by GtkSourceCompletionSnippets and GtkSourceCompletionWords.

Includes

#include <gtksourceview/gtksource.h>

Description

You must implement this interface to provide proposals to GtkSourceCompletion

In most cases, implementations of this interface will want to use GtkSourceCompletion.populate_async to asynchronously populate the results to avoid blocking the main loop.

Functions

gtk_source_completion_provider_get_title ()

char *
gtk_source_completion_provider_get_title
                               (GtkSourceCompletionProvider *self);

Gets the title of the completion provider, if any.

Currently, titles are not displayed in the completion results, but may be at some point in the future when non-NULL.

Parameters

Returns

a title for the provider or NULL.

[transfer full][nullable]

Since: 5.0


gtk_source_completion_provider_get_priority ()

int
gtk_source_completion_provider_get_priority
                               (GtkSourceCompletionProvider *self,
                                GtkSourceCompletionContext *context);

This function should return the priority of self in context .

The priority is used to sort groups of completion proposals by provider so that higher priority providers results are shown above lower priority providers.

Lower value indicates higher priority.

Parameters

Since: 5.0


gtk_source_completion_provider_is_trigger ()

gboolean
gtk_source_completion_provider_is_trigger
                               (GtkSourceCompletionProvider *self,
                                const GtkTextIter *iter,
                                gunichar ch);

This function is used to determine of a character inserted into the text editor should cause a new completion request to be triggered.

An example would be period '.' which might indicate that the user wants to complete method or field names of an object.

Parameters

self

a GtkSourceCompletionProvider

 

iter

a GtkTextIter

 

ch

a gunichar of the character inserted

 

Since: 5.0


gtk_source_completion_provider_key_activates ()

gboolean
gtk_source_completion_provider_key_activates
                               (GtkSourceCompletionProvider *self,
                                GtkSourceCompletionContext *context,
                                GtkSourceCompletionProposal *proposal,
                                guint keyval,
                                GdkModifierType state);

This function is used to determine if a key typed by the user should activate proposal (resulting in committing the text to the editor).

This is useful when using languages where convention may lead to less typing by the user. One example may be the use of "." or "-" to expand a field access in the C programming language.

Parameters

self

a GtkSourceCompletionProvider

 

context

a GtkSourceCompletionContext

 

proposal

a GtkSourceCompletionProposal

 

keyval

a keyval such as GDK_KEY_period

 

state

a GdkModifierType or 0

 

Since: 5.0


gtk_source_completion_provider_populate_async ()

void
gtk_source_completion_provider_populate_async
                               (GtkSourceCompletionProvider *self,
                                GtkSourceCompletionContext *context,
                                GCancellable *cancellable,
                                GAsyncReadyCallback callback,
                                gpointer user_data);

Asynchronously requests that the provider populates the completion results for context .

For providers that would like to populate a GListModel while those results are displayed to the user, gtk_source_completion_context_set_proposals_for_provider() may be used to reduce latency until the user sees results.

Parameters

self

a GtkSourceCompletionProvider

 

context

a GtkSourceCompletionContext

 

cancellable

a GCancellable or NULL.

[nullable]

callback

a callback to execute upon completion

 

user_data

closure data for callback

 

Since: 5.0


gtk_source_completion_provider_populate_finish ()

GListModel *
gtk_source_completion_provider_populate_finish
                               (GtkSourceCompletionProvider *self,
                                GAsyncResult *result,
                                GError **error);

Completes an asynchronous operation to populate a completion provider.

Parameters

self

a GtkSourceCompletionProvider

 

result

a GAsyncResult provided to callback

 

error

a location for a GError, or NULL

 

Returns

a GListModel of GtkSourceCompletionProposal.

[transfer full]

Since: 5.0


gtk_source_completion_provider_refilter ()

void
gtk_source_completion_provider_refilter
                               (GtkSourceCompletionProvider *self,
                                GtkSourceCompletionContext *context,
                                GListModel *model);

This function can be used to filter results previously provided to the GtkSourceCompletionContext by the GtkSourceCompletionProvider.

This can happen as the user types additionl text onto the word so that previously matched items may be removed from the list instead of generating new GListModel of results.

Parameters

Since: 5.0


gtk_source_completion_provider_display ()

void
gtk_source_completion_provider_display
                               (GtkSourceCompletionProvider *self,
                                GtkSourceCompletionContext *context,
                                GtkSourceCompletionProposal *proposal,
                                GtkSourceCompletionCell *cell);

This function requests that the GtkSourceCompletionProvider prepares cell to display the contents of proposal . Based on cells column type, you may want to display different information.

This allows for columns of information among completion proposals resulting in better alignment of similar content (icons, return types, method names, and parameter lists).

Parameters

self

a GtkSourceCompletionProvider

 

context

a GtkSourceCompletionContext

 

proposal

a GtkSourceCompletionProposal

 

cell

a GtkSourceCompletionCell

 

Since: 5.0


gtk_source_completion_provider_activate ()

void
gtk_source_completion_provider_activate
                               (GtkSourceCompletionProvider *self,
                                GtkSourceCompletionContext *context,
                                GtkSourceCompletionProposal *proposal);

This function requests proposal to be activated by the GtkSourceCompletionProvider.

What the provider does to activate the proposal is specific to that provider. Many providers may choose to insert a GtkSourceSnippet with edit points the user may cycle through.

See also: GtkSourceSnippet, GtkSourceSnippetChunk, gtk_source_view_push_snippet()

Since: 5.0


gtk_source_completion_provider_list_alternates ()

GPtrArray *
gtk_source_completion_provider_list_alternates
                               (GtkSourceCompletionProvider *self,
                                GtkSourceCompletionContext *context,
                                GtkSourceCompletionProposal *proposal);

Providers should return a list of alternates to proposal or NULL if there are no alternates available. This can be used by the completion view to allow the user to move laterally through similar proposals, such as overrides of methods by the same name.

Returns

a GPtrArray of GtkSourceCompletionProposal or NULL.

[nullable][transfer full][element-type GtkSourceCompletionProposal]

Since: 5.0

Types and Values

GtkSourceCompletionProvider

typedef struct _GtkSourceCompletionProvider GtkSourceCompletionProvider;

struct GtkSourceCompletionProviderInterface

struct GtkSourceCompletionProviderInterface {
	GTypeInterface parent_iface;

	char         *(*get_title)            (GtkSourceCompletionProvider  *self);
	int           (*get_priority)         (GtkSourceCompletionProvider  *self,
	                                       GtkSourceCompletionContext   *context);
	gboolean      (*is_trigger)           (GtkSourceCompletionProvider  *self,
	                                       const GtkTextIter            *iter,
	                                       gunichar                      ch);
	gboolean      (*key_activates)        (GtkSourceCompletionProvider  *self,
	                                       GtkSourceCompletionContext   *context,
	                                       GtkSourceCompletionProposal  *proposal,
	                                       guint                         keyval,
	                                       GdkModifierType               state);
	GListModel   *(*populate)             (GtkSourceCompletionProvider  *self,
	                                       GtkSourceCompletionContext   *context,
	                                       GError                      **error);
	void          (*populate_async)       (GtkSourceCompletionProvider  *self,
	                                       GtkSourceCompletionContext   *context,
	                                       GCancellable                 *cancellable,
	                                       GAsyncReadyCallback           callback,
	                                       gpointer                      user_data);
	GListModel   *(*populate_finish)      (GtkSourceCompletionProvider  *self,
	                                       GAsyncResult                 *result,
	                                       GError                      **error);
	void          (*refilter)             (GtkSourceCompletionProvider  *self,
	                                       GtkSourceCompletionContext   *context,
	                                       GListModel                   *model);
	void          (*display)              (GtkSourceCompletionProvider  *self,
	                                       GtkSourceCompletionContext   *context,
	                                       GtkSourceCompletionProposal  *proposal,
	                                       GtkSourceCompletionCell      *cell);
	void          (*activate)             (GtkSourceCompletionProvider  *self,
	                                       GtkSourceCompletionContext   *context,
	                                       GtkSourceCompletionProposal  *proposal);
	GPtrArray    *(*list_alternates)      (GtkSourceCompletionProvider  *self,
	                                       GtkSourceCompletionContext   *context,
	                                       GtkSourceCompletionProposal  *proposal);
};