gtksource.vim_imcontext

Module for [VimIMContext] class

Types 3

Vim emulation.

The [gtksource.vim_imcontext.VimIMContext] is a [gtk.imcontext.IMContext] implementation that can be used to provide Vim-like editing controls within a class@View.

The GtkSourceViMIMContext will process incoming [gdk.key_event.KeyEvent] as the user types. It should be used in conjunction with a [gtk.event_controller_key.EventControllerKey].

Various features supported by [gtksource.vim_imcontext.VimIMContext] include:

  • Normal, Insert, Replace, Visual, and Visual Line modes
  • Support for an integrated command bar and current command preview
  • Search and replace
  • Motions and Text Objects
  • History replay
  • Jumplists within the current file
  • Registers including the system and primary clipboards
  • Creation and motion to marks
  • Some commonly used Vim commands

It is recommended that applications display the contents of property@VimIMContext:command-bar-text and property@VimIMContext:command-text to the user as they represent the command-bar and current command preview found in Vim.

[gtksource.vim_imcontext.VimIMContext] attempts to work with additional [gtk.imcontext.IMContext] implementations such as IBus by querying the [gtk.text_view.TextView] before processing the command in states which support it (notably Insert and Replace modes).

GtkEventController *key;
GtkIMContext *im_context;
GtkWidget *view;

view = gtk_source_view_new ();
im_context = gtk_source_vim_im_context_new ();
key = gtk_event_controller_key_new ();

gtk_event_controller_key_set_im_context (GTK_EVENT_CONTROLLER_KEY (key), im_context);
gtk_event_controller_set_propagation_phase (key, GTK_PHASE_CAPTURE);
gtk_widget_add_controller (view, key);
gtk_im_context_set_client_widget (im_context, view);

g_object_bind_property (im_context, "command-bar-text", command_bar_label, "label", 0);
g_object_bind_property (im_context, "command-text", command_label, "label", 0);

Methods
GType _gType() @property
VimIMContext self()Returns `this`, for use in `with` statements.
VimIMContextGidBuilder builder()Get builder for [gtksource.vim_imcontext.VimIMContext] Returns: New builder object
string commandBarText() @property
string commandText() @property
void executeCommand(string command)Executes command as if it was typed into the command bar by the user except that this does not emit the `signalVimIMContext::execute-command` signal.
string getCommandBarText()Gets the current command-bar text as it is entered by the user. Returns: A string containing the command-bar text
string getCommandText()Gets the current command text as it is entered by the user. Returns: A string containing the command text
gulong connectEdit(T)(T callback, Flag!"After" after = No.After) if (isCallable!T && is(ReturnType!T == void) && (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] : gtksource.view.View))) && (Parameters!T.length < 2 || (ParameterStorageClassTuple!T[1] == ParameterStorageClass.none && is(Parameters!T[1] == string))) && (Parameters!T.length < 3 || (ParameterStorageClassTuple!T[2] == ParameterStorageClass.none && is(Parameters!T[2] : gtksource.vim_imcontext.VimIMContext))) && Parameters!T.length < 4)Connect to `Edit` signal.
gulong connectExecuteCommand(T)(T callback, Flag!"After" after = No.After) if (isCallable!T && is(ReturnType!T == bool) && (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] == string))) && (Parameters!T.length < 2 || (ParameterStorageClassTuple!T[1] == ParameterStorageClass.none && is(Parameters!T[1] : gtksource.vim_imcontext.VimIMContext))) && Parameters!T.length < 3)Connect to `ExecuteCommand` signal.
gulong connectFormatText(T)(T callback, Flag!"After" after = No.After) if (isCallable!T && is(ReturnType!T == void) && (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] == gtk.text_iter.TextIter))) && (Parameters!T.length < 2 || (ParameterStorageClassTuple!T[1] == ParameterStorageClass.none && is(Parameters!T[1] == gtk.text_iter.TextIter))) && (Parameters!T.length < 3 || (ParameterStorageClassTuple!T[2] == ParameterStorageClass.none && is(Parameters!T[2] : gtksource.vim_imcontext.VimIMContext))) && Parameters!T.length < 4)Connect to `FormatText` signal.
gulong connectWrite(T)(T callback, Flag!"After" after = No.After) if (isCallable!T && is(ReturnType!T == void) && (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] : gtksource.view.View))) && (Parameters!T.length < 2 || (ParameterStorageClassTuple!T[1] == ParameterStorageClass.none && is(Parameters!T[1] == string))) && (Parameters!T.length < 3 || (ParameterStorageClassTuple!T[2] == ParameterStorageClass.none && is(Parameters!T[2] : gtksource.vim_imcontext.VimIMContext))) && Parameters!T.length < 4)Connect to `Write` signal.
Constructors
this(void * ptr, Flag!"Take" take)

Fluent builder for [gtksource.vim_imcontext.VimIMContext]