VimIMContext

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

Constructors

this
this()

Members

Functions

connectEdit
ulong connectEdit(T callback, Flag!"After" after)

Connect to Edit signal.

connectExecuteCommand
ulong connectExecuteCommand(T callback, Flag!"After" after)

Connect to ExecuteCommand signal.

connectFormatText
ulong connectFormatText(T callback, Flag!"After" after)

Connect to FormatText signal.

connectWrite
ulong connectWrite(T callback, Flag!"After" after)

Connect to Write signal.

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

getCommandBarText
string getCommandBarText()

Gets the current command-bar text as it is entered by the user.

getCommandText
string getCommandText()

Gets the current command text as it is entered by the user.

Inherited Members

From IMContext

activateOsk
bool activateOsk(gdk.event.Event event)

Requests the platform to show an on-screen keyboard for user input.

deleteSurrounding
bool deleteSurrounding(int offset, int nChars)

Asks the widget that the input context is attached to delete characters around the cursor position by emitting the ::delete_surrounding signal.

filterKey
bool filterKey(bool press, gdk.surface.Surface surface, gdk.device.Device device, uint time, uint keycode, gdk.types.ModifierType state, int group)

Allow an input method to forward key press and release events to another input method without necessarily having a gdk.event.Event available.

filterKeypress
bool filterKeypress(gdk.event.Event event)

Allow an input method to internally handle key press and release events.

focusIn
void focusIn()

Notify the input method that the widget to which this input context corresponds has gained focus.

focusOut
void focusOut()

Notify the input method that the widget to which this input context corresponds has lost focus.

getPreeditString
void getPreeditString(string str, pango.attr_list.AttrList attrs, int cursorPos)

Retrieve the current preedit string for the input context, and a list of attributes to apply to the string.

getSurrounding
bool getSurrounding(string text, int cursorIndex)

Retrieves context around the insertion point.

getSurroundingWithSelection
bool getSurroundingWithSelection(string text, int cursorIndex, int anchorIndex)

Retrieves context around the insertion point.

reset
void reset()

Notify the input method that a change such as a change in cursor position has been made.

setClientWidget
void setClientWidget(gtk.widget.Widget widget)

Set the client widget for the input context.

setCursorLocation
void setCursorLocation(gdk.rectangle.Rectangle area)

Notify the input method that a change in cursor position has been made.

setSurrounding
void setSurrounding(string text, int cursorIndex)

Sets surrounding context around the insertion point and preedit string.

setSurroundingWithSelection
void setSurroundingWithSelection(string text, int cursorIndex, int anchorIndex)

Sets surrounding context around the insertion point and preedit string. This function is expected to be called in response to the signalGtk.IMContext::retrieve_surrounding signal, and will likely have no effect if called at other times.

setUsePreedit
void setUsePreedit(bool usePreedit)

Sets whether the IM context should use the preedit string to display feedback.

connectCommit
ulong connectCommit(T callback, Flag!"After" after)

Connect to Commit signal.

connectDeleteSurrounding
ulong connectDeleteSurrounding(T callback, Flag!"After" after)

Connect to DeleteSurrounding signal.

connectPreeditChanged
ulong connectPreeditChanged(T callback, Flag!"After" after)

Connect to PreeditChanged signal.

connectPreeditEnd
ulong connectPreeditEnd(T callback, Flag!"After" after)

Connect to PreeditEnd signal.

connectPreeditStart
ulong connectPreeditStart(T callback, Flag!"After" after)

Connect to PreeditStart signal.

connectRetrieveSurrounding
ulong connectRetrieveSurrounding(T callback, Flag!"After" after)

Connect to RetrieveSurrounding signal.