IdeCompletionProvider

IdeCompletionProvider

Functions

Types and Values

Object Hierarchy

    GInterface
    ╰── IdeCompletionProvider

Prerequisites

IdeCompletionProvider requires GObject.

Known Implementations

IdeCompletionProvider is implemented by IdeLangservCompletionProvider.

Description

Functions

ide_completion_provider_get_icon ()

GIcon *
ide_completion_provider_get_icon (IdeCompletionProvider *self);

Gets the GIcon to represent this provider. This may be used in UI to allow the user to filter the results to only those of this completion provider.

Parameters

Returns

a GIcon or NULL.

[transfer full][nullable]


ide_completion_provider_get_priority ()

gint
ide_completion_provider_get_priority (IdeCompletionProvider *self,
                                      IdeCompletionContext *context);

Gets the priority for the completion provider.

This value is used to group all of the providers proposals together when displayed, with relation to other providers.

The context is provided as some providers may want to lower their priority based on the position of the completion.

Parameters

self

an IdeCompletionProvider

 

context

an IdeCompletionContext

 

Returns

an integer specific to the provider

Since: 3.28


ide_completion_provider_get_title ()

gchar *
ide_completion_provider_get_title (IdeCompletionProvider *self);

Gets the title for the provider. This may be used in UI to give the user context about the type of results that are displayed.

Parameters

Returns

a string or NULL.

[transfer full][nullable]


ide_completion_provider_populate_async ()

void
ide_completion_provider_populate_async
                               (IdeCompletionProvider *self,
                                IdeCompletionContext *context,
                                GCancellable *cancellable,
                                GAsyncReadyCallback callback,
                                gpointer user_data);

Asynchronously requests the provider populate the contents.

For completion providers that can provide intermediate results immediately, use ide_completion_context_set_proposals_for_provider() to notify of results while the async operation is in progress.

Parameters

self

an IdeCompletionProvider

 

context

the completion context

 

cancellable

a GCancellable, or NULL.

[nullable]

callback

a GAsyncReadyCallback or NULL. Called when the provider has completed loading proposals.

[nullable][scope async][closure user_data]

user_data

closure data for callback

 

Since: 3.28


ide_completion_provider_populate_finish ()

GListModel *
ide_completion_provider_populate_finish
                               (IdeCompletionProvider *self,
                                GAsyncResult *result,
                                GError **error);

Parameters

self

an IdeCompletionProvider

 

result

a GAsyncResult provided to callback

 

error

a location for a GError, or NULL

 

Returns

a GListModel of IdeCompletionProposal.

[transfer full]


ide_completion_provider_display_proposal ()

void
ide_completion_provider_display_proposal
                               (IdeCompletionProvider *self,
                                IdeCompletionListBoxRow *row,
                                IdeCompletionContext *context,
                                const gchar *typed_text,
                                IdeCompletionProposal *proposal);

Requests that the provider update row with values from proposal .

The design rational about having this operation part of the IdeCompletionProvider interface (as opposed to the IdeCompletionProposal interface) is that it allows for some optimizations and code simplification on behalf of completion providers.

Parameters

self

a IdeCompletionProvider

 

row

an IdeCompletionListBoxRow

 

context

an IdeCompletionContext

 

typed_text

the typed text for the proposal.

[nullable]

proposal

an IdeCompletionProposal

 

Since: 3.30


ide_completion_provider_activate_poposal ()

void
ide_completion_provider_activate_poposal
                               (IdeCompletionProvider *self,
                                IdeCompletionContext *context,
                                IdeCompletionProposal *proposal,
                                const GdkEventKey *key);

ide_completion_provider_refilter ()

gboolean
ide_completion_provider_refilter (IdeCompletionProvider *self,
                                  IdeCompletionContext *context,
                                  GListModel *proposals);

This requests that the completion provider refilter the results based on changes to the IdeCompletionContext, such as additional text typed by the user. If the provider can refine the results, then the provider should do so and return TRUE.

Otherwise, FALSE is returned and the context will request a new set of completion results.

Parameters

self

an IdeCompletionProvider

 

context

an IdeCompletionContext

 

proposals

a GListModel of results previously provided to the context

 

Returns

TRUE if refiltered; otherwise FALSE

Since: 3.28


ide_completion_provider_is_trigger ()

gboolean
ide_completion_provider_is_trigger (IdeCompletionProvider *self,
                                    const GtkTextIter *iter,
                                    gunichar ch);

Completion providers may want to trigger that the completion window is displayed upon insertion of a particular character. For example, a C indenter might want to trigger after -> or . is inserted.

ch is set to the character that was just inserted. If you need something more complex, copy iter and move it backwards twice to check the character previous to ch .

Parameters

self

an IdeCompletionProvider

 

iter

the current insertion point

 

ch

the character that was just inserted

 

Returns

TRUE to request that the completion window is displayed.

Since: 3.30


ide_completion_provider_key_activates ()

gboolean
ide_completion_provider_key_activates (IdeCompletionProvider *self,
                                       IdeCompletionProposal *proposal,
                                       const GdkEventKey *key);

This function is called to ask the provider if the key-press event should force activation of the proposal. This is useful for languages where you might want to activate the completion from a language-specific character.

For example, in C, you might want to use period (.) to activate the completion and insert either (.) or (->) based on the type.

Parameters

self

a IdeCompletionProvider

 

proposal

an IdeCompletionProposal created by the provider

 

key

the GdkEventKey for the current keyboard event

 

Returns

TRUE if the proposal should be activated.

Since: 3.30


ide_completion_provider_get_comment ()

gchar *
ide_completion_provider_get_comment (IdeCompletionProvider *self,
                                     IdeCompletionProposal *proposal);

If the completion proposal has a comment, the provider should return a newly allocated string containing it.

This is displayed at the bottom of the completion window.

Parameters

self

an IdeCompletionProvider

 

proposal

an IdeCompletionProposal

 

Returns

A new string or NULL.

[transfer full][nullable]

Since: 3.30

Types and Values

IDE_TYPE_COMPLETION_PROVIDER

#define IDE_TYPE_COMPLETION_PROVIDER (ide_completion_provider_get_type ())

struct IdeCompletionProviderInterface

struct IdeCompletionProviderInterface {
  GTypeInterface parent;

  void        (*load)              (IdeCompletionProvider    *self,
                                    IdeContext               *context);
  GIcon      *(*get_icon)          (IdeCompletionProvider    *self);
  gint        (*get_priority)      (IdeCompletionProvider    *self,
                                    IdeCompletionContext     *context);
  gchar      *(*get_title)         (IdeCompletionProvider    *self);
  void        (*populate_async)    (IdeCompletionProvider    *self,
                                    IdeCompletionContext     *context,
                                    GCancellable             *cancellable,
                                    GAsyncReadyCallback       callback,
                                    gpointer                  user_data);
  GListModel *(*populate_finish)   (IdeCompletionProvider    *self,
                                    GAsyncResult             *result,
                                    GError                  **error);
  void        (*display_proposal)  (IdeCompletionProvider    *self,
                                    IdeCompletionListBoxRow  *row,
                                    IdeCompletionContext     *context,
                                    const gchar              *typed_text,
                                    IdeCompletionProposal    *proposal);
  void        (*activate_proposal) (IdeCompletionProvider    *self,
                                    IdeCompletionContext     *context,
                                    IdeCompletionProposal    *proposal,
                                    const GdkEventKey        *key);
  gboolean    (*refilter)          (IdeCompletionProvider    *self,
                                    IdeCompletionContext     *context,
                                    GListModel               *proposals);
  gboolean    (*is_trigger)        (IdeCompletionProvider    *self,
                                    const GtkTextIter        *iter,
                                    gunichar                  ch);
  gboolean    (*key_activates)     (IdeCompletionProvider    *self,
                                    IdeCompletionProposal    *proposal,
                                    const GdkEventKey        *key);
  gchar      *(*get_comment)       (IdeCompletionProvider    *self,
                                    IdeCompletionProposal    *proposal);
};

IdeCompletionProvider

typedef struct _IdeCompletionProvider IdeCompletionProvider;